跳到主要内容

双十一献礼 | Nacos Star破两万的回顾与展望

· 阅读需 12 分钟
双十一开启,Nacos Star 也突破 20000,从此迈上了一个新的里程碑。感谢大家的一路支持、信任和帮助!!!

image1.png

Nacos是Nacos团队三位一体战略的重要一环,它是一个更易于构建云原生生态的动态服务发现、配置管理和服务管理平台,它起源于阿里巴巴内部经过十年双十一洪峰考验的VIPServer/Configserver/Diamond三款产品,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力,为广大开源用户提供了经过经过充分生产验证过的服务注册与配置中心产品。 截止目前,Nacos已发布40个迭代版本,无缝支持Dubbo/Spring-Cloud/服务网格生态。吸引了200多位优秀贡献者,积累了虎牙、好未来、小米等多家企业案例,官网累计获取44w+用户浏览;借此机会,我们代表 Nacos 社区一起回顾开源三年以来的发展历程和未来的发展方向。

image2.png

1. 项目演进

自从Nacos1.X版本突破10000 Star后,随着用户深入和大规模使用开始逐渐暴露Nacos1.X的性能问题,借此Nacos开启了2.0的发展阶段,全面升级了通信协议、服务一致性模型、支持服务网格生态和多语言生态,下面我们分别进行介绍。

1.1 长连接

Nacos1.x版本主要基于HTTP短连接构建服务注册与发现、配置管理系统。随着用户的服务量级的增大,HTTP短连接架构暴露了一些问题。为了克服短连接的固有的技术瓶颈,Nacos社区针对HTTP短连接架构进行了一次基于长连接的重构升级。

image3.png

在Nacos 1.X架构中,配置中心的推送功能通过长轮询构建,周期性地由客户端主动发送HTTP请求并在发生更新时返回变更内容;而服务注册中心的推送则通过UDP推送+HTTP定期对账来实现。然而,配置中心的长轮训、服务注册中心的定期对账,都需要周期性地对于服务端进行一次主动建连和配置传送,增大服务端的内存开销;随着Nacos用户的服务数和配置数规模的增大,服务端的内存泄漏风险也大大增加。 为了更好的支撑用户的性能要求,克服HTTP短连接架构固有的性能瓶颈,Nacos社区在阿里巴巴集团内部充分验证的基础上,进行了一次基于长连接的重构升级。长连接时代的Nacos2.x在原本1.x的架构基础上新增了对gRPC长连接模型的支持,同时保留对旧客户端和OpenAPI的兼容。

image4.png

通信层目前通过gRPC实现了长连接RPC调用和推送能力。升级完成之后,服务变化、配置变更等信息会通过gRPC的双向流主动推送给客户端,而客户端只需要针对各个长连接主动发送轻量级的心跳即可。升级后的技术架构极大地减少了服务端处理数据的开销;同时,由于长连接基于可复用TCP的机制,也大大降低了网络堵塞的风险。

压测验证:升级长连接之后,我们对Nacos2.0进行了大量压测。压测结果显示,Nacos2.0能够在10W级规模下,稳定运行;相比Nacos1.X版本的1.2W规模,提升约10倍。

image5.png

1.2 MCP及XDS协议支持

通过对于MCP协议及XDS协议的支持,目前服务网格生态领域已完全兼容Nacos,为Istio接入Nacos注册中心提供零侵入、高性能的微服务以及网关解决方案,帮助用户在使用非K8S服务发现的情况下,仍然可以无缝享用服务网格的无侵入式的服务治理策略。

image6.png

1.3 插件化支持

在插件化支持方面,Nacos社区通过为鉴权、配置加解密、多数据源等模块进行了插件化改造,支持用户进行灵活的插件实现和改造。用户可以根据自己的业务需要,通过实现相应的SPI接口和jar包的引入,方便地进行自定义的鉴权、加解密、多数据源等附加功能的实现。 插件化升级之后,Nacos充分实现了多种附加功能与核心功能的解耦合,可扩展性大大加强。

image7.png

1.4 多语言支持

随着Nacos2.0对于长连接的支持,多语言客户端也迈出了一大步。 当前Golang、Java、Python、C#等主流语言已完全拥抱Nacos2.0,支持通过gRPC协议进行高性能服务注册与发现、配置管理;另外,C++、Node.js、PHP的2.0客户端仍在快速迭代开发、生产验证过程中,同时希望更多社区朋友参与进来,共同构建更加完善的Nacos多语言生态。

2. 生态构建

开源3年以来,Nacos社区沿着三位一体战略规划进行生态演进和构建,通过开源、自研、商业化相互融合提供Nacos产品的优异可扩展性。

自研:利用阿里巴巴集团内部超高并发的场景,对Nacos开源产品进行性能和高可用的充分验证;具有更高的性能和超强的稳定性。

image8.png

公有云:Nacos充分在2.X系列版本中充分拥抱了云原生时代核心生态。Nacos团队内部利用公有云技术支持阿里巴巴集团和成千上万家公司大规模上云,为Nacos开源以及公有云Nacos产品提供了宝贵的生产实践经验,Nacos用户可以充分享受公有云弹性红利、安全、高可用能力。

开源:开源Nacos进行了大量的云原生生态演进。当前Nacos社区开源生态已相对完善:(1)无缝整合Dubbo、Nacos、Spring-cloud-alibaba/Seata/Sentinel阿里微服务DNS框架,并成为国内首选;(2)无缝整合服务网格生态,让用户平滑进入服务网格时代。(3)支持Dapr为用户多语言多一种选择,也为微服务多语言生态多一种探索方向,欢迎感兴趣小伙伴一起推动。

image9.png

3. 未来展望

3.1 进一步云原生化

随着云原生时代的到来,Nacos正在开展进行全面云原生化的探索。Nacos已支持了MCP协议及XDS协议,进行了初步的生产环境实践,为用户未来平滑迁移云原生服务框架做好了准备。 未来,我们将通过开展以下工作来提供云原生支持: 1、提供轻量级的Nacos Sidecar,为用户提供零侵入、轻量级的服务注册与发现能力; 2、支持通过Dapr进行sidecar构建,支持用户通过业务Pod+Dapr的方式构建微服务系统; 3、提供ServiceMesh化支持,将Nacos发展成云原生时代高性能注册中心,接入K8S核心生态。

3.2 更加完善的插件化体系

后期Nacos社区将会提供更加灵活的插件化体系,主要思路包括: 1、支持用户根据自己的业务场景,进行自定义的限流、熔断、容灾、多数据源等插件的开发和接入; 2、支持将配置中心和服务注册中心解耦,用户可以根据自己的需要将两者自由接入或删除。

3.3 更活跃的生态

Nacos社区将和Spring Cloud、Dubbo、Envoy、Dapr等社区一起推动微服务架构演进和标准化。

image10.png

4. 感谢贡献者

随着Nacos2.0的快速发展,Nacos社区产生了一些新晋的Committer:brotherlu-xcq、li-xiao-shuang、haoyann、horizonzy等,这些同学在长连接实现、配置加解密模块实现、多数据源支持、插件化等核心方面作出了大量的贡献。

image11.png

另外,Nacos社区参与了由中国科学院软件研究所和openEuler社区托管的开源之夏2021,由Wuyunfan-BUPT、li-xiao-shuang、Holdonbei、newJimmyChu及chenhongjing 5位同学分别完成了鉴权插件、配置加解密插件等5个课题,并取得了不错的进展,相信很快就可以和大家见面。

image11.png

除了这些已经成为Committer和参加了官方活动的贡献者,Nacos 还收获了其他大量作出优秀帮助的贡献者,目前已有200+ Contributors,非常感谢你们的付出!我们一起让Nacos更强大!!!

image12.png

最后欢迎加入社区贡献者队伍,共同进行Nacos云原生化实践!

image13.png