开发者学堂课程【微服务实战-服务注册中心 - Nacos :Nacos 基本实现原理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/619/detail/9432
Nacos 基本实现原理
内容介绍:
一、Nacos 注册中心数据模型
二、Nacos 注册中心逻辑模块
一、Nacos 注册中心数据模型
1、服务间数据隔离模型:
下图是服务间数据隔离模型,Nacos 支持总共四层的数据隔离模型,这样可以保证不同的用户或圈层的用户在不同的业务场景中数据不会发生冲突。
2、服务数据模型:
下图是服务数据模型。Nacos 的服务数据模型分为三层,服务、集群和实例。
IP 的一条端口存储在实例这个数据中,而在服务和集群中可以存储特定的配置来进行整个服务的管理,譬如在服务级别可以指定健康检查的开关来控制整个服务下实例的健康检查是否开启;在集群也可以设置自定义的配置;在实例级别,有以下的一些数据,IP、端口、权重、健康状态、上下线状态、源数据以及 TTL,整体这些数据的配置帮助 Nacos 实现一个强大的服务发现保温策略的功能。
二、Nacos 注册中心逻辑模块
1、Nacos 数据中心主要有以下模块组成:
用户接口模块,中间的普层模块(存储了所有的服务数据),左边是推送模块,右边是健康检查模块、访问策略模块、集群管理模块,最下面的是存储和一致性模块。
首先用户接口模块主要是定义了所有和用户交互的接口,这个模块中主要会进行初步的权限校验、参数校验还有数据的转换等。然后左边的推送模块,主要工作是管理所有的订阅端以及推送的出发、聚合以及去重等工作。
中间的储存模块负责存储所有在 Nacos 制作中心中的数据,所有的查询都会从这个储存中去获取数据。
右边的健康检查模块采用 Nacos 的健康检查的两种模式:服务端的探测和客服端的上报进行处理。访问策略模块主要是根据在服务配置的访问策略来对下发的实例进行过滤,目前支持的访问策略有基于标签的访问策略,用户可以通过设定特定标的表达式来进行服务的筛选。集群管理模块主要是对 Nacos、server 集群、列表进行管理包括执行状态的信息来维持一个可以连通的一个 Nacos、server 集群。
一致性和存储模块主要是将 Nacos 中的数据进行持续化存储以及进行思路间的同步来保证整个集群数据的一致性。
2、一致性协议:
在 Nacos 中主要有两个一致性协议存在,分别是 Raft 协议和 Distro 协议,这两个分别对应着 CP 的一致性和 AP 的一致性。
一致性的协议模块设计理制中,主要是采用了一个代理模式,通过对写入的数据进行抽象,然后通过代理来进行判断。
某些数据可能要执行 AP 的一致性协议,某些数据可能要执行 CP 的一致性协议。