配置中心相信大家都有听过,zookeeper、apollo等等都是配置中心的代表,但大部分都是JAVA系为主的,笔者主要开发语言使用的是Golang当然也有类似于ETCD这样的组件,但是并不方便管理也无法可视化,在无意之间发现了阿里爸爸开源了nacos这个服务发现+配置中心组件,也经过了一段时间的时候在这里分享给大家

附上:

喵了个咪的博客:w-blog.cn

Nacos官方Git地址:https://github.com/alibaba/nacos

Nacos官方文档地址:https://nacos.io/zh-cn/docs/

Go语言SDK地址:https://github.com/sunmi-OS/gocore/tree/master/nacos

PS:当前官方最新版本为 V1.1.3,阿里云有提供配置中心服务ACM使用方式和Nacos相同,使用阿里云的前提下免运维是个不错的选择

一、Nacos介绍

Nacos是阿里云中间件团队开源的一个项目,基于阿里云内部提供的ACM配置管理服务进行独立,截止到现在github已经有8K以上的star了,虽然成熟度还不能和携程开源的apollo相提并论,比较也是在阿里云上提供服务的组件稳定性还是值得相信的,当然要使用介绍Nacos必须要介绍介绍配置中心这样一个思想了。

配置中心是个老生常谈的话题,从有软件编程开始配置管理都是工程中重要的一步,当然对与一个单体应用只需要单个配置文件或环境变量的方式来管理配置就好了所以不再本文的讨论范围内,配置中心主要解决服务化或微服务化下的配置管理中的如下问题:

  • 有效的密码管理,开发不碰触密码配置,运维人员和架构团队统一管理避免泄露;
  • 多项目下的配置绝对统一性,不会出现配置写错导致的BUG
  • 对于配置的编辑、存储、分发、变更管理、历史版本管理、变更审计有完善的能力
  • 配置分组和灰度发布
  • 有好处当然也有坏处,相对于使用配置文件我们还需要解决如下问题:
  • 配置中心异常情况下服务怎么保障可用(SDK提供Cache功能当中心服务不可用会使用上一次加载的缓存配置)
  • 配置变更后的程序生效逻辑(SDK提供配置变动订阅逻辑可以订阅配置变动编写处理逻辑)
  • 开发过程中的配置文件调试(需要框架进行设计)
  • 对于部分语言来说(PHP)配置中心性能的问题(Nacos的吞吐量8C16G 15K并发)
  • 对比下来还是可以总结出配置中心利大于弊的结论

二、Nacos部署

Nacos不止支持二进制部署也支持支持Docker和K8S部署,因为Nacos是有状态服务存储的数据需要依赖于Mysql而且集群的方式需要指定slave的IP所以使用K8S并不是很好的选择(K8S使用StatefulSet来运行有状态服务),笔者这里用Docker-Composer的方式来运行Nacos

Nacos官方Docker部署方式Git地址:https://github.com/nacos-group/nacos-docker
git clone https://github.com/nacos-group/nacos-docker.git
单机部署(内存模式):
docker-compose -f example/standalone-derby.yaml up
单机部署(Mysql模式):
docker-compose -f example/standalone-mysql.yaml up
集群部署:
docker-compose -f example/cluster-hostname.yaml up

访问:http://localhost:8848/nacos/ 就可以看到登录界面了

PS:默认用户名和密码都是 nacos

阿里云ACM服务

当然自己部署Nacos还会面临很多挑战,比如:

  • 集群搭建
  • 稳定性
  • Mysql数据库维护
  • 配置安全保护(Nacos没有密码一说,但是ACM需要使用阿里云的密钥可以提高安全程度)

PS:秉着能用服务就不自己搭建的原则笔者最终使用的是阿里云的ACM服务(当前ACM服务免费)

PS:需要注意阿里云ACM和Nacos在SDK中的链接方式有不同

三、基础使用

Nacos有几个基础概念,我们只有先了解清楚之后才能更好的结合到业务场景:

  • namespace 命名空间
  • Group 配置分组
  • DataID 具体的配置名称

一般我们使用namespace来区分不同的项目或环境,Group区分配置的差异系比如A业务获取的配置和B团队的有一些细微的差别可以通过Group来区分,最后使用DataId来区分具体的配置项

增加一个namespace

新增一个配置

支持很多种配置格式,也可以使用自定义的格式甚至直接存放代码都行

也有对应的JAVA系的示例代码

四、SDK和OpenApi使用配置

Nacos支持一下语言的SDK(当然GIT上也有很多非官方的SDK库):

  • Java
  • go
  • cpp
  • python
  • nodejs

大家可以在官方文档中查看具体的使用方式

上面已经配置好的配置我们可以使用OpenApi来访问它

curl "http://172.16.0.13:8848/nacos/v1/cs/configs?dataId=test_config&group=DEFAULT_GROUP&tenant=b58ea912-e564-4958-b21f-3098ad15daf9"
{
"name":"sunmi"
}

特别注意tenant就是需要输入namespace的名称,但是不是原名是如下的名称

Nacos - 阿里开源配置中心的更多相关文章

  1. Spring Cloud Alibaba 整合 Nacos 实现服务配置中心

    在之前的文章 <Nacos 本地单机版部署步骤和使用> 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一.Nacos 动态配置服务是什么? 官方是这么说 ...

  2. 开源配置中心xxl-conf的核心原理分析

    XXL-CONF是一款轻量级的开源配置中心项目,由国内大牛许雪里开发.下面是官方对其优点作出的描述: 一个轻量级分布式配置管理平台,拥有"轻量级.秒级动态推送.多环境.跨语言.跨机房.配置监 ...

  3. 【Alpaca】.Net版开源配置中心 - 技术选型 Vue 3.0

    是否可以用 Vue 3.0 现有的Vue 2.* 不推荐,坐等Vue 3.0出迁移工具吧,手动改的话工作量还是不小的 新项目 考虑下团队内对Vue + TS + VS Code的熟练程度.过程中你会遇 ...

  4. nacos初探--作为配置中心

    什么是nacos Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心).动态配置服务(可以做配置中心).动态 DNS 服务. 官方介绍是这样的: Nac ...

  5. Spring Cloud Alibaba系列(二)nacos作为服务配置中心

    Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持.使用 Spring Cloud Alibaba Nacos Config,您可 ...

  6. SpringCloud+Nacos实现服务配置中心(Hoxton版本)

    关于 Nacos Spring Cloud 的详细文档请参看:Nacos Config和Nacos Discovery. 通过 Nacos Server 和 spring-cloud-starter- ...

  7. Spring Cloud 整合 nacos 实现动态配置中心

    上一篇文章讲解了Spring Cloud 整合 nacos 实现服务注册与发现,nacos除了有服务注册与发现的功能,还有提供动态配置服务的功能.本文主要讲解Spring Cloud 整合nacos实 ...

  8. nacos作为配置中心

    分布式配置中心 在微服务架构中,为什么需要一个统一的配置中心呢?如果用一句话来说那就是方便管理,降低出错的可能.比如:你开发环境是一套配置,测试环境是一套,生产环境又是一套.你如果手动去修改,难免会出 ...

  9. 配置中心之Nacos简介,使用及Go简单集成

    简介 为什么需要配置中心 ​ 我们现在有一个项目, 使用Gin进行开发的, 配置文件我们知道是一个config.yaml的文件, 也知道这个配置文件在项目启动时会被加载到内存中使用; 考虑三种情况: ...

随机推荐

  1. 使用Keras进行深度学习:(六)LSTM和双向LSTM讲解及实践

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 介绍 长短期记忆(Long Short Term Memory, ...

  2. Github标星过万,Python新手100天学习计划,这次再学不会算我输!

      作为目前最火也是最实用的编程语言,Python不仅是新手入门程序界的首选,也逐渐成为了从大厂到小厂,招牌需求list的必要一条. 当然,学Python这件事情,你可能也和文摘菌一样,已经下了一百次 ...

  3. 字典树模板 HDU - 1251

    题意: 给一些单词,换行键后,查找以后输入的单词作为前缀的话们在之前出现过几次. 思路: 字典树模板----像查字典的顺序一样 #include<string> #include<s ...

  4. iOS NSDateFormatter性能

    一.探究 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat: ...

  5. Python第十二章-多进程和多线程02-多线程

    接上一章,进程和线程之间可以存在哪些形式呢? 1 单进程单线程:一个人在一个桌子上吃菜. 2 单进程多线程:多个人在同一个桌子上一起吃菜. 3 多进程单线程:多个人每个人在自己的桌子上吃菜. 多线程的 ...

  6. jQuery学习笔记01

    1.jQuery介绍 1.1什么是jQuery ? jQuery,顾名思义,也就是JavaScript和查询(Query),它就是辅助JavaScript开发的js类库. 1.2 jQuery核心思想 ...

  7. 9.Metasploit制作木马后门

    01木马与后门   木马?后门? 木马和后门都有害,尤其是木马,它由攻击者主动发起,稍不留心就会被利用:后门原来是留给自己方便用的,但也有可能被非法利用,这两种程序都会给用户带来损失. 木马是指潜伏在 ...

  8. 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】

    一.Git分布式版本控制简介 ​ Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...

  9. SHTC3温湿度传感器的使用

    1.SHTC3简单说明 SHTC3是一个检测温度.湿度的传感器,可以检测-40℃~125℃的温度范围和0%~100%的湿度范围. SHTC3的工作电压范围为:1.62V~3.6V. SHTC3使用的通 ...

  10. jenkins 脱机下 安装插件失败

    1.首次进入,提示离线 2.网上给出了绝大部分答案是进入Manage Plugins 中在高级下将升级站点的https换成http,但是都没解决我的问题  还是报错,用了大部分时间查阅 最终才发现问题 ...