微服务架构 | *2.5 Nacos 长轮询定时机制的源码分析

微服务架构 | *2.5 Nacos 长轮询定时机制的源码分析,第1张

参考资料

《Spring Microservices in Action》

《Spring Cloud Alibaba 微服务原理与实战》

《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

为方便理解与表达,这里把 Nacos 控制台和 Nacos 注册中心称为 Nacos 服务器(就是 web 界面那个),我们编写的业务服务称为 Nacso 客户端;

由于篇幅有限,这里将源码分析分为上下两篇,其中上篇讲获取配置与事件订阅机制,下篇讲长轮询定时机制;在 《微服务架构 | 22 Alibaba Nacos 的统一配置管理》 中提到一张 Nacos 动态监听的长轮询机制原理图,本篇将围绕这张图剖析长轮询定时机制的原理;

上篇 《微服务架构 | 24 Nacos 配置中心的源码分析(获取配置与事件订阅机制)》 中的 11 提到,ConfigService 是 Nacos 客户端提供的用于访问实现配置中心基本 *** 作的类,我们将从 ConfigService 的实例化开始长轮询定时机制的源码之旅;

sh startupsh -m standalone

username:nacos

password:nacos

执行命令发布配置

curl -X POST ">

专题回顾

Nacos专题Nacos 快速入门

Nacos专题Nacos 集群搭建

Nacos 既可以作为注册中线,提供服务注册与发现;又是配置中心,提供配置的动态管理。Nacos 既能支持 properties 类型的配置,也能支持 ymal 类型的配置。

为了满足 多租户、多环境、多服务 配置隔离的需求,Nacos 提供了 Data Id 、 Group 以及 Namespace 不同管理级别的概念,利用 Nacos 定义的层级关系,用户可以非常方便的管理多环境的配置。

Data Id 的完成格式如下:

完整的 Data Id 由 3 部分构成,具体格式说明如下:

示例:

如果 Data Id 的值为 nacos-config-devproperties ,则在 bootstrapproperties 配置如下:

如下图所示,用 Data Id 来区分开发、测试、生产环境配置:

在分布式系统中,我们经常会根据业务来对系统进行水平拆分,业务独立的模块单独构成一个系统,从而实现业务解耦。Nacos 的 Group 能够很好的应对分布式系统的配置管理。 Group 是 Data Id 的集合,按照业务系统来定义 Group ,然后再在每个 Group 下按照 dev 、 test 、 prod 来区分环境,这样整个系统配置就非常的清晰明了。

在 Nacos 服务端定义完分组后,还需要在项目中通过 springcloudnacosconfiggroup 配置来指定分组, 这样在项目启动的时候,就能拉取指定分组下的配置。

如下图所示,为订单系统创建分组:

Namespace 是用于在多租户之间进行配置隔离,不同的 命名空间 下,可以存在相同的 Group 和 Data Id ,再配合 Nacos 的权限管理功能,针对用户角色(多组合),进行 Namespace 级别的读写权限控制。

Nacos 默认命名空间为 public ,当在新建一个 Namespace 时,Nacos会生成一个唯一标识UUID,在项目中通过 springcloudnacosconfignamespace 来指定命名空间。

6月份阿里开源的Nacos发布了101版本,从去年7月份第一个release版本到现在一直在默默关注

官方的版本规划为:Nacos从080开始支持生产可用,10版本可大规模生产可用,20版本接入k8s、SpringCloud、ServiceMesh、ServerLess

公司目前的项目都是Springcloud,由于eureka2X的断更、以及Nacos面世,所以自然而然最近就进行了一次试水爬坑,虽然过程艰苦,但是最终效果似乎还不错。

本文主要从以下几点来带大家熟悉下Nacos

Nacos是什么?好像没听过,不要紧。那Eureka听说过吧,在SpringCloud中做服务注册中心组件,类似的还有Zookeeper、Consul。

所以Nacos也是一个注册中心组件咯,当然是,不过 它不仅仅是注册中心

Nacos也是一个配置中心 ,比如SpringCloud中的Config,将配置文件版本化管理。

那么Nacos到底是什么呢, 总结为官网一句话就是:

首先要说Nacos的发展历程就要从阿里巴巴的内部产品ConfigServer说起了,因为 Nacos是ConfigServer 的开源实现

早在2008年阿里就开始服务化的进程(那个时候我好像还在上初中啊),在那个时候阿里内部自研的服务发现解决方案就叫做ConfigServer

ConfigServer经历了十年的发展从V10的单机版演变为目前对外公布的V40集群版。

2018年7月阿里巴巴高级技术专家许真恩(慕义)发布了Nacos首个开源版本V010,Nacos作为ConfigServer的开源实现截止目前已经更新到了V101的大版本,并且支持大规模生产版本。

虽然 官方文档 也有介绍,但是语言比较官方,我就用大白话谈一点自己的使用感受。

首先先上一张官方的生态图

除了对于阿里开源生态体系如 Dubbo 等自身的支持,也非常强调融入其它的开源生态,这里就包括 Java 的微服务生态体系 Spring Cloud,Kubernetes/CNCF 云原生生态体系。

Nacos 无缝支持 Spring Cloud,为 Spring Cloud 用户其提供更简便的配置中心和注册中心的解决方案。

Nacos支持目前几乎所有主流的微服务生态体系。

Nacos从官方的介绍上看,就像是SpringCloud中Eureka+Config+Bus+Git+MQ的一个结合体,当然也不能完全这么理解。Nacos是脱胎于阿里内部的ConfigServer,而ConfigServer早在30版本就解决了Eureka在10版本留下的隐患,所以从技术的更新和迭代角度来看,稳定版本的Nacos将更适合做为微服务体系中的服务注册发现组件,当然了他也不单单只是注册和发现。更多的特性和功能,不如一起搭建试试吧。

Nacos官方手册

以上就是关于微服务架构 | *2.5 Nacos 长轮询定时机制的源码分析全部的内容,包括:微服务架构 | *2.5 Nacos 长轮询定时机制的源码分析、nacos-简介和初体验(一)、【Nacos专题】Nacos Config等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9566103.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存