云原生系列 | 微服务配置中心之 Nacos
前言
服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。
因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。
CAP理论
CAP理论是分布式架构中重要理论,其特性:
-
一致性(Consistency) (所有节点在同一时间具有相同的数据) -
可用性(Availability) (保证每个请求不管成功或者失败都有响应) -
分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作
主流微服务注册中心浅析和对比
Nacos 关键特性
服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
动态配置服务
-
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
-
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
-
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
动态 DNS 服务
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
Nacos 提供了一些简单的DNS APIs TODO帮助您管理服务的关联域名和可用的 IP:PORT 列表.
服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
Nacos 地图
-
特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求 -
架构大图:通过清晰架构,让您快速进入 Nacos 世界 -
业务大图:利用当前特性可以支持的业务场景,及其最佳实践 -
生态大图:系统梳理 Nacos 和主流技术生态的关系 -
优势大图:展示 Nacos 核心竞争力 -
战略大图:要从战略到战术层面讲 Nacos 的宏观优势
Nacos 生态图
如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如
-
Spring Cloud -
Apache Dubbo and Dubbo Mesh -
Kubernetes and CNCF。
使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。
Nacos是阿里开源的,Nacos 支持基于 DNS 和基于 RPC 的服务发现。在Spring Cloud中使用Nacos,只需要先下载 Nacos 并启动 Nacos server,Nacos只需要简单的配置就可以完成服务的注册发现。
Nacos 其他
Nacos 除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
一句话概括就是 Nacos = Spring Cloud注册中心 + Spring Cloud配置中心。
Nacos引擎
使用Nacos应用服务发现、配置管理等功能,您需要购买相应的资源进行搭建和维护,耗时耗力。使用MSE构建的Nacos引擎,您仅需关注Nacos的构建位置、版本、网络和规格,不必关注Nacos的构建和维护,更加聚焦业务本身的实现。本文介绍如何在MSE上为应用创建Nacos引擎。