数据模型
NameSpace
,Group
,Service/DataId
目的是为了将数据模型分类,从而形成一定的效果,比如服务隔离,不同的NameSpace
中的服务不能够相互访问
数据模型的最佳实践
NameSpace
:代表不同的运行环境,Dev
/Test
/Prod
Group
:代表某一类配置,如中间件配置,数据库配置等Service/DataId
:代表某服务的具体配
领域模型
Nacos的三层分级模型(服务、集群、实例)主要是为了解决大型互联网公司多集群,跨DC
的解决方案
NameSpace
:实现环境隔离,默认值PublicGroup
:不同的Service可以组成一个Group,默认值为Default-GroupService
:服务名称Cluster
:对指定的微服务虚拟划分,默认值为DefaultInstance
:某个服务的具体实例
Nacos服务注册中心架构
由官网给出的Nacos
服务注册中心架构图来看,在Nacos Server
中对外开放了一套OpenAPI
,在服务注册与发现的所有流程中都必须通过Nacos Server
提供的OpenAPI
调用,Nacos Server
中还有Config Service
与Naming Service
分别提供配置中心与服务注册发现的功能,Consistency Protocol
则是分布式一致性协议,Nacos Console
则是提供的可视化操作界面
Nacos服务注册中心基本原理
当服务启动完成后,服务提供方使用OpenAPI
发起服务注册,服务提供方与Nacos Server
建立心跳,服务消费者去查询服务提供方注册的实例列表,并且每10S
轮询拉取,这里不断去轮询新列表主要是为了避免通过心跳检查服务状态发生异常,保证消费者永远都是消费的活服务
如果通过心跳机制发现服务提供者发生异常,无法提供服务,Nacos Server
会基于UDP协议对服务消费者进行推送更新,对发生异常的服务进行剔除,由于Nacos
内部是使用ConcurrentHashMap
存储服务的注册信息,所以会直接从map
中remove