1. Nacos微服务注册中心和配置中心

318 阅读2分钟
互联网软件行业普遍热捧开源产品,因为开源产品代码透明、可以参与共建、有社区进行交流和学习,当然更重要的是它们是免费的。个人开发者或者中小型公司往往会将开源产品作为选型首选。
Zookeeper 是一款经典的服务注册中心产品(虽然它最初的定位并不在于此),在很长一段时间里,它是国人在提起 RPC 服务注册中心时心里想到的唯一选择,这很大程度上与 Dubbo 在中国的普及程度有关。
Consul 和 Eureka 都出现于 2014 年,Consul 在设计上把很多分布式服务治理上要用到的功能都包含在内,可以支持服务注册、健康检查、配置管理、Service Mesh 等。而 Eureka 则借着微服务概念的流行,与 SpringCloud 生态的深度结合,也获取了大量的用户。
2018年阿里开源的 Nacos,基于阿里大规模服务生产经验,试图在服务注册和配置管理这个市场上,提供给用户一个新的选择。
Nacos是一个更易于构建云原生应用的微服务注册中心、配置管理和服务管理平台。

一、Nacos数据模型

Nacos 数据模型 Key 由三元组唯一确定,Namespace默认是空串,公共命名空间(public);分组默认是 DEFAULT_GROUP;然后就是Service/DataId。我们可以根据此三项准确定位到一个配置或者一个服务,利用此特性可以实现多环境的配置。官方推荐使用Namespace做环境隔离。
Namespace主要是进行业务隔离的,多个业务或者部门可以用一个Nacos,但是数据都相互屏蔽。

二、Nacos 架构图

Nacos官方提供的架构图,下面简单介绍一下其中的模块组成。
  • Provider APP:服务提供者。
  • Consumer APP:服务消费者。
  • Name Server:通过VIP(Virutal IP)或者DNS的方式,实现Nacos高可用集群的服务路由。
  • Nacos Server:Nacos服务,里面包括OpenAPI是功能访问入口,Config Service是配置服务模块,Naming Service是名称服务模块。Consistency Protocol是一致性协议,用来实现Nacos集群节点的数据同步,这里使用的是简化的Raft和阿里自创的Distro算法,使用类似Raft算法的中间件还有ETCD、Redis哨兵选举。
  • Nacos Console:Nacos控制台,检查微服务实例和配置信息。
整体来说,服务提供者通过VIP访问Nacos Server高可用集群,基于Open API完成服务的注册和服务的查询。Nacos Server 本身可以支持主备模式,所以底层采用数据一致性算法来完成从节点的数据同步。消费者也是类似的,基于Open API从Nacos Server中查询服务实例列表。