Nacos 1.1.4 发布,业界率先支持Istio MCP协议
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设计图,详情点击这里。
图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数据的传输,代码可以参考:https://github.com/alibaba/nacos/tree/develop/istio。
图2 Nacos MCP Server架构
使用Nacos MCP Server的方式如下:
1、下载最新的Nacos 1.1.4安装包,解压;
2、配置application.properties,然后重启Nacos;
1nacos.istio.mcp.server.enabled=true
注意:如果Nacos是集群部署,则只需要配置一台Server启动MCP Server即可,因为每台Nacos Server的数 据都是全量的。同时Nacos MCP Server使用的端口是18848,请注意端口是否冲突;
3、配置Pilot使用Nacos MCP Server:
1configSources 2-- address: x.x.x.x:18848
4、重启Pilot;
自定义实例ID
在之前的版本中,Instance类的instanceId字段,是用来作为唯一标识这个instance的属性,它的值默认是不能由客户端来指定的。在1.1.4版本中,我们支持了允许客户端自定义ID以及一个新增加的instanceId生成算法:一个服务内唯一的整数,这个整数可以用来作为实例在服务内的唯一索引。这个功能由vettal-wu贡献,非常感谢。
这个整形instanceId的使用方式为在注册时配置instance的metadata,指定使用该id生成算法,样例代码如下:
1Instance instance = new Instance(); 2instance.setIp("1.1.1.1"); 3instance.setPort(80); 4// 必须设置ephemeral=false,来保证服务端使用的是严格的一致性协议,否则可能会导致生成的instance id冲突: 5instance.setEhpemeral(false); 6instance.setMetadata(new HashMap<String, String>()); 7instance.getMetadata().put(PreservedMetadataKeys.INSTANCE_ID_GENERATOR, Constants.SNOWFLAKE_INSTANCE_ID_GENERATOR);
Nacos在这个版本也有一些关于代码质量上的优化更新,具体可以参考1.1.4版本issue列表:https://github.com/alibaba/nacos/issues?q=is%3Aissue+milestone%3A1.1.4。
如何共建
为了实现这一目标,你需要积极参与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的主要愿景是期望通过提供易用的 动态服务发现
、服务配置管理
、服务共享与管理
的基础设施,帮助用户在云原生时代更好的构建、交付、管理自己的微服务平台。
更多与 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版本,将会支持社区广泛关注的权限控制功能,敬请期待。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
重新认识 D 编程语言 —— 基础篇
编程语言的兴盛往往随着全球信息技术产业方向而变化,同样也会因为跟不上节奏而没落。 D 语言曾经兴盛过,也随着信息技术发展而颓废过,但最终我们很高兴的看到它又带着强烈的自信开始复苏,希望通过本文让现代计算机科学工作者进一步了解这门具有独特魅力的编程语言。 作者:邹佳庆、张雪平 引言 D 语言是一门语法相当优雅的编译型语言,自 1999 年发布至今已发展了 20 年,它既拥有 Java 那样强大的表现力,又具有 C++ 相当的性能,本来是一门未来相当明朗的语言,但是当年因为 2.x 版本破坏性升级导致社区大量核心开发者将其放弃。 2010 年,伴随着 Andrei Alexandrescu 新书《The D Programming Language》的出版,D 语言又变得活跃起来,D 语言 2.0 的特性变得稳定,运行库与标准库的分离,解决了 D 语言 1.0 时期标准库之争的问题。 2011 年,D 语言的开发迁移到了 Github,在有了更好的代码管理和 bug 跟踪方式之后,参与到 D 语言编译器、运行库和标准库开发的人员也有了明显的增加。次年,D 语言 1.0 版本停止更新,开发者...
- 下一篇
Mars-java 3.0.0 发布,面向声明式 API 编程(DAP)的框架
本次更新带来了两个变动 面向声明式API编程(DAP) 单元测试改动 单元测试 取消了抽象方法before,而采用了注解的方式,在单测类上加上MarsTest注解即可 面向声明式API编程(DAP) 按照传统的开发方式,如果要开发一个后端接口,需要分为以下三步 创建controller 创建service 创建dao(甚至会创建存放sql的xml) 但是,我们编写一个接口,重点应该是放在业务逻辑上的,也就是说 我们的关注点应该在第二步,但是通常第一步和第三步的重复工作量让我们感到窒息,所以我梳理了一下,制定了一个新玩法,这套新玩法就叫声明式API 写业务逻辑 声明一个API给前端 将API与业务逻辑关联 所以我们是这样玩的 编写业务逻辑 @MarsBean("testService") public class TestService { 要返回的数据类型 selectListForName(TestDTO testDTO){ // 第一步 根据testDTO里的参数从xx表查询需要的数据 // 第二步 根据查出来的数据,去操作xx2表 // 第三步 对前两步的结果汇...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS6,CentOS7官方镜像安装Oracle11G
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作