Rumah > Artikel > pembangunan bahagian belakang > Artikel yang menerangkan secara terperinci cara memasang dan menggunakan pusat konfigurasi nacos
Artikel ini diperkenalkan kepada anda melalui lajur tutorial golang tentang pusat konfigurasi "nacos". Di bawah, kita akan mempelajari tentang pusat konfigurasi dari perspektif golang, pemasangan naco dan cara melakukannya gunakan nacos untuk konfigurasi dan baca konfigurasi dalam nacos Documents, dll. Saya harap ia akan membantu rakan-rakan yang memerlukannya.
Apakah pusat konfigurasi
Sistem yang digunakan untuk mengurus semua konfigurasi dalam projek secara seragam. Walaupun ia kelihatan mudah, jangan memandang rendah modul ini. Jika projek Internet bersaiz sederhana tidak menggunakan model pusat konfigurasi, sejumlah besar pelbagai item konfigurasi, dan pelbagai keperluan pengubahsuaian yang tidak teratur pasti akan menyebabkan pemaju banyak sakit kepala dan menjadikan pengurusan sangat mengelirukan.
Proses perkhidmatan pusat konfigurasi adalah seperti berikut: Pengguna mengemas kini maklumat konfigurasi dalam pusat konfigurasi. Perkhidmatan A dan Perkhidmatan B menerima pemberitahuan kemas kini konfigurasi tepat pada masanya dan dapatkan konfigurasi daripada pusat konfigurasi. Secara umum, pusat konfigurasi ialah komponen perkhidmatan asas yang menguruskan pelbagai konfigurasi aplikasi secara seragam.
Dalam seni bina sistem, pusat konfigurasi ialah komponen keseluruhan sistem infrastruktur perkhidmatan mikro Fungsinya kelihatan tidak ketara, ia tidak lebih daripada pengurusan konfigurasi dan akses, tetapi ia adalah keseluruhan seni bina perkhidmatan mikro .
Apakah itu nacos
Nacos
Nacos ialah singkatan Perkhidmatan Penamaan dan Konfigurasi Daripada namanya, anda boleh melihat dua kawasan yang difokuskan on. Ia adalah Penamaan, iaitu pusat pendaftaran dan pusat konfigurasi Konfigurasi.
Konfigurasi perniagaan, suis fungsi, menurunkan taraf kebergantungan yang lemah dalam pengurusan perkhidmatan, dan juga kata laluan pangkalan data, dll., semuanya boleh menggunakan pusat konfigurasi dinamik. Apabila tiada komponen pusat konfigurasi khusus, kami menggunakan pengekodan keras, fail konfigurasi, pangkalan data, cache, dll. untuk menyelesaikan masalah. Apabila mengubah suai konfigurasi melalui pengekodan keras, anda perlu menyusun semula dan membungkus fail konfigurasi, dan aplikasi perlu dimulakan semula Prestasi pangkalan data adalah terhad, dan cache kehilangan ketepatan masa.
Model konfigurasi Nacos
data kumpulan ruang namaId secara unik menentukan konfigurasi
ruang nama: terikat kepada klien, satu clinet sepadan dengan satu ruang nama, tersedia Untuk asingkan persekitaran atau bezakan penyewa
kumpulan: kumpulan, bezakan perniagaan
dataId: id terkonfigurasi
Mari kita lihat bagaimana ia digunakan dalam senario sebenar
Contohnya: tapak web e-dagang mempunyai modul ini: modul pengguna, modul produk, modul pesanan, modul inventori
Beberapa modul ini memerlukan untuk dikonfigurasikan dan konfigurasinya berbeza Beginilah cara kami membuat ruang nama untuk setiap modul Setiap modul perlu mempunyai konfigurasi
semasa peringkat pembangunan dan konfigurasi selepas kami menggunakan Terdapat dua kumpulan dev , dan pro untuk membezakan Untuk dataId, sama ada dev atau
pro, ia mesti diisi.
Pemasangan Nacos
Di sini kami terus menggunakan docker untuk memasang
Pemasangan Nacos (docker)
docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -p 8848:8848 -d nacos/nacos-server:latest
Akses: 192.168.1.103:8848/nacos/index.html Nama Pengguna/Kata Laluan: nacos/nacos
Konfigurasikan permulaan:
docker container update --restart=always xxx
Gunakan konfigurasi Do nacos
Selepas nacos berjaya dimulakan, lawati: 192.168.1.103:8848/nacos/index.html
Anda boleh mencipta ruang nama pengguna baharu lihatnya selepas penciptaan berjaya ke id yang sepadan, contohnya: 7ae18f62-e2b9-48bd-bff2-a49e7443f5bc
Kemudian kami mencipta fail konfigurasi baharu di bawah ruang nama pengguna dan isikan nama yang sepadan (dataId ) dan kumpulan. Di sini kami mencipta fail konfigurasi josn yang baharu:
{ "name": "user-web", "host": "10.2.106.169", "port": 9091, "tags":["iceymoss", "goods", "golang", "web"], "user_srv":{ "name": "user-srv", "host": "10.2.106.169", "port": 8081 }, "jwt":{ "key": "dfijdfjidhfjijdfbdfdFwohPd6XmVCdnQi" }, "sms":{ "key": "mykey", "secret": "mysecret" }, "params":{ "sign_name": "生鲜小店", "code": "SMS_244610581" }, "redis":{ "host": "127.0.0.1", "port": 6379, "expir": 300 }, "verify":{ "width": 5 }, "consul":{ "host": "10.2.106.169", "port": 8500 }, "tracing":{ "host": "127.0.0.1", "port": 6831, "name": "shopping" } }
Dengan cara ini, keseluruhan fail konfigurasi dikonfigurasikan
Baca fail konfigurasi dalam nacos
Pull Get dependencies
Kami menggunakan go untuk membaca fail konfigurasi dan gunakan sdk yang perlu menarik nacos:
go get github.com/nacos-group/nacos-sdk-go/clients go get github.com/nacos-group/nacos-sdk-go/common/constant go get github.com/nacos-group/nacos-sdk-go/vo
Baca konfigurasi
Sebelum membaca konfigurasi, kami terlebih dahulu menulis struktur untuk pemetaan konfigurasi
Struktur direktori:
nacos_test ├── config │ └── config.go └── main.go
Apabila menulis konfigurasi, kita perlu memberi perhatian kepada fakta bahawa kita perlu mengekalkan nama tag dan konfigurasi Nama dalam fail adalah konsisten
package config //UserSerConfig 映射用户配置 type UserSerConfig struct { Name string `mapstructure:"name" json:"name"` Host string `mapstructure:"host" json:"host"` Port int `mapstructure:"port" json:"port"` } //JWTConfig 映射token配置 type JWTConfig struct { SigningKey string `mapstructure:"key" json:"key"` } //AliSmsConfig 阿里秘钥 type AliSmsConfig struct { Apikey string `mapstructure:"key" json:"key"` ApiSecret string `mapstructure:"secret" json:"secret"` } //ParamsConfig 短信模板配置 type ParamsConfig struct { SignName string `mapstructure:"sign_name" json:"sign_name"` TemplateCode string `mapstructure:"code" json:"code"` } //RedisConfig redis数据库配置 type RedisConfig struct { Host string `mapstructure:"host" json:"host"` Port int `mapstructure:"port" json:"port"` Expir int `mapstructure:"expir" json:"expir"` } //Verifier 手机验证长度 type Verifier struct { Width int `mapstructure:"width" json:"width"` } type ConsulConfig struct { Host string `mapstructure:"host" json:"host"` Port int `mapstructure:"port" json:"port"` } //ServerConfig 映射服务配置 type ServerConfig struct { Name string `mapstructure:"name" json:"name"` Port int `mapstructure:"port" json:"port"` UserSerInfo UserSerConfig `mapstructure:"user_srv" json:"user_srv"` JWTInfo JWTConfig `mapstructure:"jwt" json:"jwt"` AliSms AliSmsConfig `mapstructure:"sms" json:"sms"` Params ParamsConfig `mapstructure:"params" json:"params"` Redis RedisConfig `mapstructure:"redis" json:"redis"` Verify Verifier `mapstructure:"verify" json:"verify"` ConsulInfo ConsulConfig `mapstructure:"consul" json:"consul"` }
Baca fail konfigurasi di bawah:
package main import ( "StudyGin/nacos/config" "encoding/json" "fmt" "github.com/nacos-group/nacos-sdk-go/clients" "github.com/nacos-group/nacos-sdk-go/common/constant" "github.com/nacos-group/nacos-sdk-go/vo" ) func main() { //服务端配置, nacos运行的socket sc := []constant.ServerConfig{ { IpAddr: "10.2.81.102", Port: 8848, }, } //客服端配置 cc := constant.ClientConfig{ NamespaceId: "7ae18f62-e2b9-48bd-bff2-a49e7443f5bc", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "tmp/nacos/log", CacheDir: "tmp/nacos/cache", //RotateTime: "1h", //MaxAge: 3, LogLevel: "debug", } configClient, err := clients.CreateConfigClient(map[string]interface{}{ "serverConfigs": sc, "clientConfig": cc, }) if err != nil { panic(err) } //获取配置 content, err := configClient.GetConfig(vo.ConfigParam{ DataId: "user-web.json", Group: "dev"}) if err != nil { panic(err) } Config := &config.ServerConfig{} //将配置信息读取到config.ServerConfig{}对象中 err = json.Unmarshal([]byte(content), &Config) if err != nil { panic(err) } fmt.Println(Config) }
Output :
&{user-web 9091 {user-srv 10.2.106.169 8081} {dfijdfjidhfjijdfbdfdFwohPd6XmVCdnQi} {mykey mysecret} {生鲜小店 SMS_244610581} {127.0.0.1 6379 300} {5} {10.2.106.1600}}
Sudah tentu, kedua-dua pusat konfigurasi dan viper menyediakan pemantauan masa nyata Konfigurasi
boleh ditulis seperti ini:
//监听配置变化 err = configClient.ListenConfig(vo.ConfigParam{ DataId: "user-web", Group: "DEV", OnChange: func(namespace, group, dataId, data string) { fmt.Println("配置文件变化") fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data) }, }) time.Sleep(3000 * time.Second)
Atas ialah kandungan terperinci Artikel yang menerangkan secara terperinci cara memasang dan menggunakan pusat konfigurasi nacos. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!