今天小编给大家分享一下配置中心nacos如何安装使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是配置中心用来统一管理项目中所有配置的系统。 虽然听起来很简单,但也不要小瞧了这个模块。 如果一个中型互联网项目,不采用配置中心的模式,一大堆的各类配置项,各种不定时的修改需求,一定会让开发同学非常头疼且管理十分混乱。配置中心的服务流程如下: 用户在配置中心更新配置信息。 服务 A 和服务 B 及时得到配置更新通知,从配置中心获取配置。 总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件。在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,它的功能看上去并不起眼,无非就是配置的管理和存取,但它是整个微服务架构中不可或缺的一环。nacos 是什么NacosNacos 是 Naming and Configuration Service 的缩写,从名字上能看出它重点关注的两个领域是 Naming 即注册中心和Configuration 配置中心。业务上的配置,功能开关,服务治理上对弱依赖的降级,甚至数据库的密码等,都可能用到动态配置中心。 在没有专门的配置中心组件时,我们使用硬编码、或配置文件、或数据库、缓存等方式来解决问题。 硬编码修改配置时需要重新编译打包,配置文件需要重启应用,数据库受限于性能,缓存丧失了及时性。Nacos 的配置模型namespace + group + dataId 唯一确定一个配置namespace:与 client 绑定,一个 clinet 对应到一个 namespace,可用来隔离环境或区分租户group:分组,区分业务dataId:配置的 id来看一下是如何在实际场景使用的例如:一个电商网站其中有这几个模块:用户模块免费云主机域名、商品模块、订单模块、库存模块这几个模块都需要进行配置且它们的配置不同,这是我们为每一个模块做一个 namespace, 每一个模块都需要有开发阶段的配置,和上线后的配置,使用我们使用 dev, 和 pro 两个分组来进行区分,对于 dataId,不管是 dev 还是pro 都必须填写。Nacos 的安装这里我们直接使用 docker 进行安装Nacos 的安装 (docker)
dockerrun--namenacos-standalone-eMODE=standalone-eJVM_XMS=512m-eJVM_XMX=512m-eJVM_XMN=256m-p8848:8848-dnacos/nacos-server:latest
访问:192.168.1.103:8848/nacos/index.html 用户名 / 密码:nacos/nacos配置开机启动:
dockercontainerupdate--restart=alwaysxxx
用 nacos 做配置nacos 成功启动后访问:192.168.1.103:8848/nacos/index.html可以创建 namespace, 我们新建一个用户模块 user , 创建成功后可以看到有对应的 id, 例如:7ae18f62-e2b9-48bd-bff2-a49e7443f5bc然后我们在 user 命名空间下新建一个配置文件,并填写对应的名称 (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:
gogetgithub.com/nacos-group/nacos-sdk-go/clients gogetgithub.com/nacos-group/nacos-sdk-go/common/constant gogetgithub.com/nacos-group/nacos-sdk-go/vo
读取配置在读取配置之前我们先编写一个用来做配置映射的结构体目录结构:
nacos_test ├──config │└──config.go └──main.go
编写 config 时需要注意的是我们需要保持 tag 名和配置文件中的名称一致
packageconfig //UserSerConfig映射用户配置 typeUserSerConfigstruct{ Namestring`mapstructure:"name"json:"name"` Hoststring`mapstructure:"host"json:"host"` Portint`mapstructure:"port"json:"port"` } //JWTConfig映射token配置 typeJWTConfigstruct{ SigningKeystring`mapstructure:"key"json:"key"` } //AliSmsConfig阿里秘钥 typeAliSmsConfigstruct{ Apikeystring`mapstructure:"key"json:"key"` ApiSecretstring`mapstructure:"secret"json:"secret"` } //ParamsConfig短信模板配置 typeParamsConfigstruct{ SignNamestring`mapstructure:"sign_name"json:"sign_name"` TemplateCodestring`mapstructure:"code"json:"code"` } //RedisConfigredis数据库配置 typeRedisConfigstruct{ Hoststring`mapstructure:"host"json:"host"` Portint`mapstructure:"port"json:"port"` Expirint`mapstructure:"expir"json:"expir"` } //Verifier手机验证长度 typeVerifierstruct{ Widthint`mapstructure:"width"json:"width"` } typeConsulConfigstruct{ Hoststring`mapstructure:"host"json:"host"` Portint`mapstructure:"port"json:"port"` } //ServerConfig映射服务配置 typeServerConfigstruct{ Namestring`mapstructure:"name"json:"name"` Portint`mapstructure:"port"json:"port"` UserSerInfoUserSerConfig`mapstructure:"user_srv"json:"user_srv"` JWTInfoJWTConfig`mapstructure:"jwt"json:"jwt"` AliSmsAliSmsConfig`mapstructure:"sms"json:"sms"` ParamsParamsConfig`mapstructure:"params"json:"params"` RedisRedisConfig`mapstructure:"redis"json:"redis"` VerifyVerifier`mapstructure:"verify"json:"verify"` ConsulInfoConsulConfig`mapstructure:"consul"json:"consul"` }
下面进行配置文件读取:
packagemain 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" ) funcmain(){ //服务端配置,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, }) iferr!=nil{ panic(err) } //获取配置 content,err:=configClient.GetConfig(vo.ConfigParam{ DataId:"user-web.json", Group:"dev"}) iferr!=nil{ panic(err) } Config:=&config.ServerConfig{} //将配置信息读取到config.ServerConfig{}对象中 err=json.Unmarshal([]byte(content),&Config) iferr!=nil{ panic(err) } fmt.Println(Config) }
输出:
&{user-web9091{user-srv10.2.106.1698081}{dfijdfjidhfjijdfbdfdFwohPd6XmVCdnQi}{mykeymysecret}{生鲜小店SMS_244610581}{127.0.0.16379300}{5}{10.2.106.1600}}
当然配置中心和 viper 都提供实时监控配置可以这样写:
//监听配置变化 err=configClient.ListenConfig(vo.ConfigParam{ DataId:"user-web", Group:"DEV", OnChange:func(namespace,group,dataId,datastring){ fmt.Println("配置文件变化") fmt.Println("group:"+group+",dataId:"+dataId+",data:"+data) }, }) time.Sleep(3000*time.Second)
以上就是“配置中心nacos如何安装使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。
本文小编为大家详细介绍“nginx如何部署配置文件”,内容详细,步骤清晰,细节处理免费云主机域名妥当,希望这篇“nginx如何部署配置文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。读到这里,这篇“nginx如何部署配置文件”文章…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。