今天小編給大家分享一下配置中心nacos如何安裝使用的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出永城免費做網(wǎng)站回饋大家。
什么是配置中心
用來統(tǒng)一管理項目中所有配置的系統(tǒng)。 雖然聽起來很簡單,但也不要小瞧了這個模塊。 如果一個中型互聯(lián)網(wǎng)項目,不采用配置中心的模式,一大堆的各類配置項,各種不定時的修改需求,一定會讓開發(fā)同學(xué)非常頭疼且管理十分混亂。
配置中心的服務(wù)流程如下: 用戶在配置中心更新配置信息。 服務(wù) A 和服務(wù) B 及時得到配置更新通知,從配置中心獲取配置。 總得來說,配置中心就是一種統(tǒng)一管理各種應(yīng)用配置的基礎(chǔ)服務(wù)組件。
在系統(tǒng)架構(gòu)中,配置中心是整個微服務(wù)基礎(chǔ)架構(gòu)體系中的一個組件,它的功能看上去并不起眼,無非就是配置的管理和存取,但它是整個微服務(wù)架構(gòu)中不可或缺的一環(huán)。
nacos 是什么
Nacos
Nacos 是 Naming and Configuration Service 的縮寫,從名字上能看出它重點關(guān)注的兩個領(lǐng)域是 Naming 即注冊中心和Configuration 配置中心。
業(yè)務(wù)上的配置,功能開關(guān),服務(wù)治理上對弱依賴的降級,甚至數(shù)據(jù)庫的密碼等,都可能用到動態(tài)配置中心。 在沒有專門的配置中心組件時,我們使用硬編碼、或配置文件、或數(shù)據(jù)庫、緩存等方式來解決問題。 硬編碼修改配置時需要重新編譯打包,配置文件需要重啟應(yīng)用,數(shù)據(jù)庫受限于性能,緩存喪失了及時性。
Nacos 的配置模型
namespace + group + dataId 唯一確定一個配置
namespace:與 client 綁定,一個 clinet 對應(yīng)到一個 namespace,可用來隔離環(huán)境或區(qū)分租戶
group:分組,區(qū)分業(yè)務(wù)
dataId:配置的 id
來看一下是如何在實際場景使用的
例如:一個電商網(wǎng)站其中有這幾個模塊:用戶模塊、商品模塊、訂單模塊、庫存模塊
這幾個模塊都需要進(jìn)行配置且它們的配置不同,這是我們?yōu)槊恳粋€模塊做一個 namespace, 每一個模塊都需要有
開發(fā)階段的配置,和上線后的配置,使用我們使用 dev, 和 pro 兩個分組來進(jìn)行區(qū)分,對于 dataId,不管是 dev 還是
pro 都必須填寫。
Nacos 的安裝
這里我們直接使用 docker 進(jìn)行安裝
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
訪問:192.168.1.103:8848/nacos/index.html 用戶名 / 密碼:nacos/nacos
配置開機啟動:
docker container update --restart=always xxx
用 nacos 做配置
nacos 成功啟動后訪問:192.168.1.103:8848/nacos/index.html
可以創(chuàng)建 namespace, 我們新建一個用戶模塊 user , 創(chuàng)建成功后可以看到有對應(yīng)的 id, 例如:7ae18f62-e2b9-48bd-bff2-a49e7443f5bc
然后我們在 user 命名空間下新建一個配置文件,并填寫對應(yīng)的名稱 (dataId) 和分組,這里我們新建一個 josn 的配置文件:
{
"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"
}
}
這樣整個配置文件就配置完成了
讀取 nacos 中配置文件
拉取依賴
我們使用 go 來讀取配置文件,使用需要拉取 nacos 的 sdk:
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
讀取配置
在讀取配置之前我們先編寫一個用來做配置映射的結(jié)構(gòu)體
目錄結(jié)構(gòu):
nacos_test
├── config
│ └── config.go
└── main.go
編寫 config 時需要注意的是我們需要保持 tag 名和配置文件中的名稱一致
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數(shù)據(jù)庫配置
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 映射服務(wù)配置
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"`
}
下面進(jìn)行配置文件讀?。?/p>
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() {
//服務(wù)端配置, 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)
}
輸出:
&{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}}
當(dāng)然配置中心和 viper 都提供實時監(jiān)控配置
可以這樣寫:
//監(jiān)聽配置變化
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)
以上就是“配置中心nacos如何安裝使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享題目:配置中心nacos如何安裝使用
文章起源:http://jinyejixie.com/article24/ijcgje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、標(biāo)簽優(yōu)化、用戶體驗、虛擬主機、全網(wǎng)營銷推廣、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)