Nacos是阿里巴巴开源的服务发现与配置管理项目,本次发布的1.1.4版本,主要带来的是与Istio的对接功能,使用的是Istio最新的MCP协议。本文将介绍包括这个功能在内的新版本发布的功能。git
0.8.0及以上版本:github
0.8.0如下版本,先升级到1.0.0版本。算法
替换pom依赖便可。spring
这是本次版本最大的更新,主要是实现了Nacos服务数据往Istio下发的功能,也是目前业界全部注册中内心面第一个由官方提供的MCP协议对接版本。Pilot最新的设计中,是使用MCP协议来与全部后端的数据源进行交互的。这样作的好处是能够解耦全部扩展组件的代码,Pilot保持轻量的逻辑,在代码质量、组件稳定性及扩展性方面都大幅提高。咱们能够看一下Pilot官方提供的Pilot设计图,地址详情参考这里。docker
虽然在设计图中,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数据的传输,代码能够参这里。api
使用Nacos MCP Server的方式以下:
一、下载最新的Nacos 1.1.4安装包,解压;
二、配置application.properties,而后重启Nacos;微信
nacos.istio.mcp.server.enabled=true
注意:若是Nacos是集群部署,则只须要配置一台Server启动MCP Server便可,由于每台Nacos Server的数 据都是全量的。同时Nacos MCP Server使用的端口是18848,请注意端口是否冲突;app
三、配置Pilot使用Nacos MCP Server:spring-boot
configSources -- address: x.x.x.x:18848
四、重启Pilot;
在以前的版本中,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:很是须要解决的问题和很是重要的模块,但目前缺乏贡献者,欢迎贡献者来贡献。
DISS is cheap, show me your hand
比吐槽更重要的是搭把手,参与社区一块儿发展 Nacos
做为用户关注和加入 Nacos 社区
Nacos 社区正在蓬勃发展,截止到发文为止,Nacos 短短几个月已经有 9 个微信群,其中 7 个已满员,1个QQ群,1个钉钉群,关注 Nacos 的社区人数已经近5000人,在 Nacos 群里跟 “道(基)友” 切磋技术,交流经验,招聘交友,抢抢红包...不亦乐乎。
从Nacos用户发展而成贡献者瓜熟蒂落,而Nacos开发团队也确实在日趋壮大,从开始的只有4个代码contributor发展到目前的40多个,1.1.4版本中,参与Nacos仓库贡献的开发者有:stackisok,loadchange, ly641921791, EZLippi, rushsky518, universefeeler, nkorange, vettal-wu, beldon等。
还不知道什么是Nacos? 不要紧,在github上star一下跟程序猿兄弟打个招呼吧!!
Nacos 是阿里巴巴于2018年7月份新开源的项目,Nacos的主要愿景是指望经过提供易用的 动态服务发现、服务配置管理、服务共享与管理 的基础设施,帮助用户在云原生时代更好的构建、交付、管理本身的微服务平台。
github项目地址在这里。
更多与 Nacos 相关的开源项目信息
下期预告:Nacos的下个版本是1.2.0版本,将会支持社区普遍关注的权限控制功能,敬请期待。
阿里云双11亿元补贴提早领,进入抽取iPhone 11 Pro:https://www.aliyun.com/1111/2...
本文做者:中间件小哥
本文为云栖社区原创内容,未经容许不得转载。