1 NACOS 架构与原理
架构
- 推荐文献
- https://nacos.io/en-us/docs/architecture.html
基本架构
逻辑架构
- 服务管理:实现服务CRUD、域名CRUD、服务健康检查、服务权重管理等。
- 配置管理:实现配置的CRUD、版本管理、灰度管理、监控管理、推送轨迹、聚合数据等。
- 元数据管理:提供元数据CURD和标记功能
- 插件机制:实现三个模块共享实现扩展点SPI机制的能力
- 事件机制:实现异步事件通知、sdk数据改变异步通知等逻辑
- 日志模块:管理日志分类、日志级别、日志可移植性(特别是避免冲突)、日志格式、异常代码+帮助文档
- 回调机制:sdk通过统一的方式告知数据,回调用户处理。接口和数据结构需要具备可扩展性
- 寻址方式:解决ip、域名、nameserver、广播等各种寻址方式,需可扩展
- 推送通道:解决服务器与存储、服务器、服务器与sdk之间的推送性能问题
- 容量管理:管理各个租户,组下的容量,防止存储被爆满,影响服务可用性
- 流量管理:按照租户、群组等多个维度控制请求频率、长链接数量、消息大小、请求流控。
- 缓存机制:容灾目录、本地缓存、服务器缓存机制。容灾目录需要工具
- 启动模式:根据独立模式、配置模式、服务模式、dns模式、全部模式启动不同的程序+UI
- 一致性协议:解决不同的数据,不同的一致性要求,不同的一致性机制
- 存储模块:解决数据持久化、非持久化存储,解决数据碎片化问题
- Nameserver:解决namespace到clusterid的路由问题,解决用户环境与nacos物理环境的映射问题
- CMDB:解决元数据存储,与三方cmdb系统的对接问题,解决应用、人、资源关系
- 指标:公开标准指标数据,方便访问三向监控系统
- 迹线:曝光标准迹线,方便与SLA系统、日志白化、推送轨迹等打通,并可与计量计费系统对接
- 访问管理:相当于阿里云服务,分配身份、容量、权限流程
- 用户管理:解决用户管理、登录、sso等问题。
- 权限管理:解决身份、访问控制、角色管理等问题。
- 审计系统:扩展接口方便接入不同公司的审计系统
- 通知系统:核心数据变更,或操作,通过短信系统通知相应人员数据变更
- OpenAPI:暴露标准Rest风格HTTP接口,简单易用,易于多语言集成
- Console:简单易用的控制台,进行服务管理,配置管理等。
- SDK:多语言 SDK
- Agent:类似dns-f模式,或者与mesh等程序集成
- CLI:通过命令行轻量级管理产品,就像git一样简单
核心概念
服务
- 一个软件功能或一组软件功能(例如检索指定信息或执行一组操作),目的是使不同的客户端可以重复用于不同的目的(例如,通过跨进程网络调用)。
- Nacos 支持几乎所有类型的服务:
- Kubernetes 服务
- gRPC | Dubbo RPC 服务
- Spring Cloud RESTful 服务
服务注册中心
服务、实例和元数据的数据库。服务实例在启动时向服务注册表注册,并在关闭时注销。服务和/或路由器的客户端查询服务注册表以查找服务的可用实例。服务注册表可能会调用服务实例健康检查 API 来验证它是否能够处理请求。
服务元数据
描述服务的数据,例如服务端点、服务标签、服务版本、服务实例权重、路由规则、安全策略。
服务提供商
提供可重用和可调用服务的流程或应用程序。
服务消费者
发起服务调用的进程或应用程序。
配置
在系统开发过程中,开发人员通常会将一些需要更改的参数或变量从代码中抽取出来,放在单独的配置文件中进行管理,这样可以让静态的系统工件或交付物(如WAR、JAR包)更好地贴合物理运行环境。配置管理一般是系统部署的一部分,由管理员或运维人员执行,修改配置是调整运行系统行为的有效方法。
配置管理
在数据中心里,所有与配置相关的编辑、存储、分发、变更管理、历史版本管理、变更审计等活动统称为配置管理。
命名服务
将分布式系统中所有对象和实体的“名称”映射到关联的元数据,例如ServiceName-> Endpoints\Version etc...、Distributed Lock Name-> Lock Owner/Status Info、DNS Domain Name-> IP List。服务发现和 DNS 是命名服务的两大场景。
配置服务
为其他服务或应用提供动态配置、服务元数据和配置管理。
更多概念
- 更多概念
领域模型
数据模型
- Nacos 数据模型 Key 由三元组唯一确定。Namespace 默认为空字符串,公共命名空间(public),group 默认为 DEFAULT_GROUP。
服务实体关系模型
配置实体关系模型
围绕配置,主要有两个关联实体,一个是配置变更历史,一个是服务标签(用于标记分类,方便索引),通过ID进行关联。
类视图
Nacos-SDK 类视图
部件、部署和启动模式
2类 Artifacts
- 两种 Nacos 支持标准 Docker 镜像(v0.2.0)和 nacos-.zip(tar.gz)两种构建方式,您可以根据自己的需求选择合适的构建方式来部署 Nacos 服务。
2类启动模式
- Nacos 支持两种启动模式,你可以将服务注册中心与配置中心合并在一个进程中,也可以将两者分别部署在不同的集群中。
商业化支持:阿里云云服务
- 除了用户自己部署上线Nacos服务外,Nacos还支持公有云,Nacos公有云服务将在阿里云的商业服务(如ACM、EDAS)中免费开放,也欢迎其他公有云厂商提供Nacos公有云服务。
X 参考文献
- Nacos
- https://nacos.io/en-us/docs/architecture.html