- Instance:实例,代表一个Nacos Client主机实例。
- ServiceInfo:微服务信息实例。其包含着一个Instance列表。
- NamingService: 该接口只有一个实现类,NacosNamingService。通过这个类的实例,可以完成Client与Server间的通信,例如注册/取消注册,订阅/取消订阅,获取Server状态,获取Server中指定的Instance。
文章目录
- 1.Nacos系统架构
- 2.Nacos数据模型
- 3.Nacos临时与持久实例
- 4.Nacos重要Api
1.Nacos系统架构
Config Service
Naming Service
Nacos Core
OpenAI
Provider App
Consumer App
Name Server
2.Nacos数据模型
Name Server用于记录各个命名空间namespace中的实例信息。namespace、group与服务service或资
源dataId间的关系如下图。
DEFAULT_GROUP%40%40abcmsc-provider-depart@@DEFAULT
即 groupId@@微服务名称@@clusterName
namespace、group、cluster、instance之间的关系如下图。
3.Nacos临时与持久实例
在服务注册时有一个属性ephemeral用于描述当前实例在注册时是否以临时实例出现。为true则为临时
实例,默认值;为false则为持久实例。
临时实例与持久实例的实例的存储位置与健康检测机制是不同的。
- 临时实例:默认情况。服务实例仅会注册在Nacos内存,不会持久化到Nacos磁盘。其健康检测机制为Client模式,即Client主动向Server上报其健康状态(类似于推模式)。默认心跳间隔为5秒。在15秒内Server未收到Client心跳,则会将其标记为“不健康”状态;在30秒内若收到了Client心跳,则重新恢复“健康”状态,否则该实例将从Server端内存清除。即对于不健康的实例,Server会自动清除。
- 持久实例:服务实例不仅会注册到Nacos内存,同时也会被持久化到Nacos磁盘。其健康检测机制为Server模式,即Server会主动去检测Client的健康状态(类似于拉模式),默认每20秒检测一次。健康检测失败后服务实例会被标记为“不健康”状态,但不会被清除,因为其是持久化在磁盘的。其对不健康持久实例的清除,需要专门进行。
临时实例适合于存在突发流量暴增可能的互联网项目。因为临时实例可以实现弹性扩容。
4.Nacos重要Api
Instance类: 实例,代表一个Nacos Client主机实例。
ServiceInfo类: 微服务信息实例。其包含着一个Instance列表。
NamingService: 该接口只有一个实现类,NacosNamingService。通过这个类的实例,可以完成Client与Server间的通信,例如注册/取消注册,订阅/取消订阅,获取Server状态,获取Server中指定的Instance。