服务注册与发现——Nacos

(1)前言

服务消费者要去调用多个服务提供者组成的集群。首先,服务消费者需要在本地配置文件中维护服务提供者集群的每个节点的请求地址。其次,服务提供者集群中如果某个节点下线或者宕机,服务消费者的本地配置中需要同步删除这个节点的请求地址,防止请求发送到已宕机的节点上造成请求失败。为了解决这类的问题,就需要引入服务注册中心.主要有以下功能:
1、服务地址的管理。
2、服务注册。
3、服务动态感知。

(2) Alibaba Nacos基本介绍

Nacos致力于解决微服务中的统一配置、服务注册与发现等问题。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。在这里插入图片描述

(3)基本使用

Nacos支持三种部署模式,分别是单机、集群和多集群。需要注意的是,Nacos依赖Java环境,并且要求使用JDK 1.8以上版本。

Nacos服务注册发现相关API说明
Nacos提供了SDK及Open API的方式来完成服务注册与发现等操作,由于服务端只提供了REST接口,所以SDK本质上是对于HTTP请求的封装。
详细文档参考:
https://nacos.io/zh-cn/docs/sdk.html

(4)Nacos的高可用部署

在分布式架构中,任何中间件或者应用都不允许单点存在,所以开源组件一般都会自己支持高可用集群解决方案。如图所示,Nacos提供了类似于ZooKeeper的集群架构,包含一个Leader节点和多个Follower节点。和ZooKeeper不同的是,它的数据一致性算法采用的是Raft,同样采用了该算法的中间件有Redis Sentinel的Leader选举、Etcd等。
在这里插入图片描述

(5)Nacos实现原理分析

在这里插入图片描述

Provider APP:服务提供者。
Consumer APP:服务消费者。
Name Server:通过VIP ( Vritual IP)或者DNS的方式实现Nacos高可用集群的服务路由。
Nacos Server : Nacos服务提供者,里面包含的Open API是功能访问入口,Config Service Naming Service是Nacos提供的配置服务、名字服务模块。Consistency Protocol是一致性协议,用来实现Nacos集群节点的数据同步,这里使用的是Raft算法(使用类似算法的中间件还有Etcd、Redis哨兵选举)。
Nacos Console : Nacos控制台。

整体来说,服务提供者通过VIP (Virtual IP )访问Nacos Server高可用集群,基于Open API完成服务的注册和服务的查询。Nacos Server本身可以支持主备模式,所以底层会采用数据一致性算法来完成从节点的数据同步。服务消费者也是如此,基于Open API从 Nacos Server中查询服务列表。

(6) 注册中心的原理

核心步骤:
1、服务实例在启动时注册到服务注册表,并在关闭时注销。
2、服务消费者查询服务注册表,获得可用实例。
3、服务注册中心需要调用服务实例的健康检查API来验证它是否能够处理请求。

Nacos服务注册与发现的实现原理如图所示。

在这里插入图片描述

1、服务提供者使用Open API发起服务注册
2、服务提供者与Nacos Server建立心跳机制,检测服务状态
3、服务消费者到Nacos Server中查询服务提供方注册实例列表
4、服务消费者构建定时任务,每10s拉取一次数据
5、Nacos Server通过订阅发布的形式如果检测到服务提供者异常,会基于UDP协议推送更新给消费者

猜你喜欢

转载自blog.csdn.net/Octopus21/article/details/114548271