Nacos 1.1.4 发布,业界率先支持 Istio MCP 协议
图1 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数据的传输,代码可以参这里。图2 Nacos MCP Server架构使用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:188484、重启Pilot;自定义实例ID在之前的版本中,Instance类的instanceId字段,是用来作为唯一标识这个instance的属性,它的值默认是不能由客户端来指定的。在1.1.4版本中,我们支持了允许客户端自定义ID以及一个新增加的instanceId生成算法:一个服务内唯一的整数,这个整数可以用来作为实例在服务内的唯一索引。这个功能由vettal-wu贡献,非常感谢。这个整形instanceId的使用方式为在注册时配置instance的metadata,指定使用该id生成算法,样例代码如下:
Instanceinstance=newInstance();instance.setIp("1.1.1.1");instance.setPort(80);//必须设置ephemeral=false,来保证服务端使用的是严格的一致性协议,否则可能会导致生成的instanceid冲突:instance.setEhpemeral(false);instance.setMetadata(newHashMap<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等。
原文链接本文为云栖社区原创内容,未经允许不得转载
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。