Nacos 是阿里巴巴开源的服务发现与配置管理项目,本次发布的 1.1.4 版本,主要带来的是与 Istio 的对接功能,使用的是 Istio 最新的 MCP 协议。本文将介绍包括这个功能在内的新版本发布的功能。
升级指南
服务端
0.8.0 及以上版本:
- 解压安装包后替换 {nacos.home}/target/nacos-server.jar
- 逐台重启 Nacos Server 即可
0.8.0 以下版本,先升级到 1.0.0 版本。
客户端
替换 pom 依赖即可。
支持 Istio MCP 协议
这是本次版本最大的更新,主要是实现了 Nacos 服务数据往 Istio 下发的功能,也是目前业界所有注册中心里面第一个由官方提供的 MCP 协议对接版本。Pilot 最新的设计中,是使用 MCP 协议来与所有后端的数据源进行交互的。这样做的好处是可以解耦所有扩展组件的代码,Pilot 保持轻量的逻辑,在代码质量、组件稳定性及扩展性方面都大幅提升。我们可以看一下 Pilot 官方提供的 Pilot 设计图,地址详情参考这里。
虽然在设计图中,Pilot 后端的 MCP Server 已经有了 Consul、Eureka 等,但是这些项目目前都没有官方支持的 MCP Server。Nacos 是目前首个官方支持 Istio MCP 协议的项目。
关于 MCP 协议的设计,可以参考 Istio 的文档。Nacos 实现的 MCP Server,目前使用的是单个服务编号,全量服务推送的模式,因为目前 Pilot 还不支持增量的服务数据推送(Nacos 1.1.4 发布之后,Pilot 已经支持了 endpoint 级别的增量推送,Nacos 也会在下个版本支持)。实现的逻辑就是启动一个 gRPC Server 来进行 MCP 数据的传输,代码可以参这里。
使用 Nacos MCP Server 的方式如下:
1、下载最新的 Nacos 1.1.4 安装包,解压;
2、配置 application.properties,然后重启 Nacos;
nacos.istio.mcp.server.enabled=true
注意:如果 Nacos 是集群部署,则只需要配置一台 Server 启动 MCP Server 即可,因为每台 Nacos Server 的数 据都是全量的。同时 Nacos MCP Server 使用的端口是 18848,请注意端口是否冲突;
3、配置 Pilot 使用 Nacos MCP Server:
configSources
-- address: x.x.x.x:18848
4、重启 Pilot;
自定义实例 ID
在之前的版本中,Instance 类的 instanceId 字段,是用来作为唯一标识这个 instance 的属性,它的值默认是不能由客户端来指定的。在 1.1.4 版本中,我们支持了允许客户端自定义 ID 以及一个新增加的 instanceId 生成算法:一个服务内唯一的整数,这个整数可以用来作为实例在服务内的唯一索引。这个功能由 vettal-wu 贡献,非常感谢。
这个整形 instanceId 的使用方式为在注册时配置 instance 的 metadata,指定使用该 id 生成算法,样例代码如下:
Instance instance = new Instance();
instance.setIp("1.1.1.1");
instance.setPort(80);
// 必须设置 ephemeral=false,来保证服务端使用的是严格的一致性协议,否则可能会导致生成的 instance id 冲突:instance.setEhpemeral(false);
instance.setMetadata(new HashMap<String, String>());
instance.getMetadata().put(PreservedMetadataKeys.INSTANCE_ID_GENERATOR, Constants.SNOWFLAKE_INSTANCE_ID_GENERATOR);
Nacos 在这个版本也有一些关于代码质量上的优化更新,具体可以参考 1.1.4 版本 issue 列表。
如何共建
为了实现这一目标,你需要积极参与 Nacos 社区。如果您在文档中发现拼写错误,在代码中发现错误,或想要新功能或想要提供建议,您可以在 GitHub 上创建一个 issues。
如果您想开始着手,可以选择 github 仓库中有以下标签的 issues。
good first issue:对于新手来说是非常好的入门 issues。
contribution welcome:非常需要解决的问题和非常重要的模块,但目前缺少贡献者,欢迎贡献者来贡献。
蓬勃发展的 Nacos 社区
DISS is cheap, show me your hand
比吐槽更重要的是搭把手,参与社区一起发展 Nacos
作为用户关注和加入 Nacos 社区
Nacos 社区正在蓬勃发展,截止到发文为止,Nacos 短短几个月已经有 9 个微信群,其中 7 个已满员,1 个 QQ 群,1 个钉钉群,关注 Nacos 的社区人数已经近 5000 人,在 Nacos 群里跟“道(基)友”切磋技术,交流经验,招聘交友,抢抢红包 … 不亦乐乎。
- 作为代码贡献者加入 Nacos 社区
从 Nacos 用户发展而成贡献者顺理成章,而 Nacos 开发团队也确实在日趋壮大,从开始的只有 4 个代码 contributor 发展到目前的 40 多个,1.1.4 版本中,参与 Nacos 仓库贡献的开发者有:stackisok,loadchange, ly641921791, EZLippi, rushsky518, universefeeler, nkorange, vettal-wu, beldon 等。
新人时刻 – “ 什么是 Nacos?”
还不知道什么是 Nacos? 没关系,在 github 上 star 一下跟程序猿兄弟打个招呼吧!!
Nacos 是阿里巴巴于 2018 年 7 月份新开源的项目,Nacos 的主要愿景是期望通过提供易用的 动态服务发现、服务配置管理、服务共享与管理 的基础设施,帮助用户在云原生时代更好的构建、交付、管理自己的微服务平台。
github 项目地址在这里。
更多与 Nacos 相关的开源项目信息
- Nacos
- Dubbo Registry Nacos
- Nacos DNS-F
- Nacos Docker
- Nacos Spring Project
- Nacos Spring Boot
- Spring Cloud Alibaba
- Dubbo
- Sentinel
- Spring Cloud
- Nepxion Discovery
- Spring Cloud Gateway Nacos
下期预告 :Nacos 的下个版本是 1.2.0 版本,将会支持社区广泛关注的权限控制功能,敬请期待。
阿里云双 11 亿元补贴提前领,进入抽取 iPhone 11 Pro:https://www.aliyun.com/1111/2…
本文作者:中间件小哥
阅读原文
本文为云栖社区原创内容,未经允许不得转载。