配置中心之Nacos简介,使用及Go简单集成
简介
为什么需要配置中心
我们现在有一个项目, 使用Gin进行开发的, 配置文件我们知道是一个config.yaml的文件, 也知道这个配置文件在项目启动时会被加载到内存中使用;
考虑三种情况:
a . 添加配置项
1 . 你现在的用户服务有10个部署实例, 那么添加配置项你得去十个地方修改配置文件还得重新启动等;
2 . 即使Go的viper能完成修改配置文件自动生效, 那么你得考虑其他语言是否能做到这点, 其他微服务是否一定会使用viper?
b . 修改配置项
大量的服务可能会使用同一个配置,比如我要更新jwt的secret,这么多实例怎么办?
c . 开发,测试,生产环境如何隔离
前面虽然已经介绍了viper,但是依然一样的问题,那么多服务如何统一这种考虑因素;
配置中心选型
目前最主流的分布式配置中心主要有spring cloud config,apollo和nacos,spring cloud属于spring体系, 我们就考虑apollo(携程)和nacos(阿里),都是目前比较流行且维护活跃的2个配置中心;
a . apollo大而全, 功能完善, nacos小而全, 可以对比django和flask区别;
b . 部署nacos更加简单;
c .nacos不止支持配置中心还支持服务注册和发现;
d . 都支持各种语言, 不过apollo是第三方支持的,nacos是官方支持各种语言;
nacos很活跃, 不过看的出来nacos想要构建的生态野心更大, 不过收费意图明显;

Nacos安装
https://nacos.io/zh-cn/docs/what-is-nacos.html
docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_MAX=512m -e JVM_XMN=256m -p 8848:8848 -d nacos/nacos-server:latest


Nacos使用
配置

命名空间
可以隔离
新建


组 - 隔离
抛出一个问题: 你现在确实能够隔离微服务, 但是把不同微服务的开发,测试,生产如何区别;
此时就可以用组隔离了

dataid - 配置集
一个配置集就是一个配置文件,实际可以更灵活, 将db,server内容等配置分开管理;
Go集成Nacos
安装
go get -u github.com/nacos-group/nacos-sdk-go
Go操作Nacos
https://github.com/nacos-group/nacos-sdk-go/blob/master/README_CN.md
Example1
package main
import (
"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"
"time"
)
func main() {
sc := []constant.ServerConfig{{
IpAddr: "192.168.0.4",
Port: 8848,
}}
cc := constant.ClientConfig{
NamespaceId: "e6295280-8bc8-424e-b9c6-2eb61da8a189", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
TimeoutMs: 5000,
NotLoadCacheAtStart: true,
LogDir: "log",
CacheDir: "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.yaml",
Group: "dev",
})
if err != nil {
panic(err)
}
fmt.Println(content) //字符串 - yaml
err = configClient.ListenConfig(vo.ConfigParam{
DataId: "user-web.yaml",
Group: "dev",
OnChange: func(namespace, group, dataId, data string) {
fmt.Println("配置文件发生了变化...")
fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data)
},
})
time.Sleep(300 * time.Second)
}
配置映射为struct
go内置json,可以不用引入第三方Yaml,可以用以下网站转换下:
http://json2yaml.com/convert-yaml-to-json
{
"name": "user-web",
"port": 9001,
"user_srv": {
"host": "192.168.0.84",
"port": 50051,
"name": "user_srv"
},
"redis": {
"host": "47.94.149.143",
"password": "wunai.18",
"port": 6379,
"db": 0,
"expire": 3000
},
"jwt": {
"key": "!42&%MFFezZmB8a^RhUiGa$l5g2z65HZ"
},
"ali_sms": {
"key": "LTAI4GAdvAHSnQGAuiu2vicL",
"secrect": "ZfneNg1Sa6bEpbVHlP16nCTmT9dInh"
},
"consul": {
"host": "192.168.0.4",
"port": 8500
}
}
配置中心之Nacos简介,使用及Go简单集成的更多相关文章
- 【springcloud alibaba】配置中心之nacos
接着上一篇的[springcloud alibaba]注册中心之nacos,这一篇主要讲nacos的配置中心能力.nacos的集群部署及持久化请看上一篇. ---------------------- ...
- 配置中心:Nacos, Apollo, Consul, Etcd
Nacos, Apollo, Consul, Etcd 服务.应用不同粒度的配置更丰富的路由规则集中式管理的动态参数规则
- Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)
文章目录 摘要 Nacos简介 使用Nacos作为注册中心 安装并运行Nacos 创建应用注册到Nacos 负载均衡功能 使用Nacos作为配置中心 创建nacos-config-client模块 在 ...
- Nacos系列:基于Nacos的配置中心
前言 在看正文之前,我想请你回顾一下自己待过的公司都是怎么管理配置的,我想应该会有以下几种方式: 1.硬编码 没有什么配置不配置的,直接写在代码里面,比如使用常量类 优势:对开发友好,开发清楚地知道代 ...
- Spring Cloud 系列之 Alibaba Nacos 配置中心
Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...
- Nacos配置中心和服务的注册发现
在上一篇中,我们已经把Nacos的集群搭建好了,那么既然已经搭建好了,就要在咱们的项目中去使用.Nacos既可以做配置中心,也可以做注册中心.我们先来看看在项目中如何使用Nacos做配置中心. Nac ...
- Spring Cloud Config、Apollo、Nacos配置中心选型及对比
Spring Cloud Config.Apollo.Nacos配置中心选型及对比 1.Nacos 1.1 Nacos主要提供以下四大功能 2.Spring Cloud Config 3.Apollo ...
- Nacos配置中心交互模型是 push 还是 pull ?你应该这么回答
本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富- 对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服 ...
- 「Java分享客栈」Nacos配置中心称王称霸,我Apollo一生也不弱于人!
前言 Apollo又称阿波罗配置中心,在前两年还是挺火的,但阿里SpringCloud套件席卷国内之后,nacos就成为了最被亲睐的分布式配置中心,nacos是配置中心和注册中心二合一的产品,单纯功能 ...
随机推荐
- [java] 转型
A为父类,子类B.C 第20行发生向上转型,a对象调用C覆写过的print()方法 若为A a = new B(); 则调用B覆写过的print()方法 创建对象时使用向上转型,能够统一参数类型(23 ...
- Linux压力测试软件Stress安装及使用指南2
stress工具使用指南和结果分析 Linux压力测试软件Stress安装及使用指南 一.Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高 ...
- 云计算OpenStack核心组件---glance镜像服务(6)
一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...
- 嵌入式Boa服务器上CGI开发-(转自Bryce.Xiao)
嵌入式WEB服务器常见的有lighttpd shttpd thttpdboa mathopd minihttpdappwebgoahead=============================== ...
- 使用nuget包下载Entity Framework6.0无法使用模型类与数据库上下文自动生成controller与view
解决方法:卸载掉原有的6.0版本EF,从控制台安装5.0版本的. >工具>库程序包管理器>程序包管理器控制台.在PM>后面输入安装命令. 命令如下 Install-Packag ...
- 10.13 nc:多功能网络工具
nc命令 是一个简单.可靠.强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描,处理IPv4和IPv6数据包. 如果系统没有nc命令,那么可以手 ...
- 编写程序,计算当n=10000,20000,30000...100000时,π的值.求π的近似公式 π=4*(1-1/3+1/5-1/7+1/9-1/11+1/13-...+1/(2n-1)-1/(2n+1))
该程序是求的 π 近似值,所以随着 i 的增大,值会无线接近于 3.1415926... 代码示例 : package judgment;/** * 编写程序,计算当n=10000,20000,300 ...
- 使用Typora编写Markdown你真的会了吗
目录 Typora 介绍 使用 常用快捷键 概述 标题 一级标题 二级标题 方式(推荐) 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 段落 粗体斜体删除线 下划线 注释 分割线 脚注 ...
- 危险!水很深,让叔来 —— 谈谈命令查询权责分离模式(CQRS)
多年以前,那时我正年轻,做技术如鱼得水,甚至一度希望自己能当一辈子的一线程序员. 但是我又有两个小愿望想要达成:一个是想多挣点钱:另一个就是对项目的技术栈和架构选型能多有点主动权. 多挣点钱是因为当时 ...
- 一文读懂一条 SQL 查询语句是如何执行的
2001 年 MySQL 发布 3.23 版本,自此便开始获得广泛应用,随着不断地升级迭代,至今 MySQL 已经走过了 20 个年头. 为了充分发挥 MySQL 的性能并顺利地使用,就必须正确理解其 ...