5.2 Spring Cloud中常用的注册中心
1. Eureka
Eureka是Netflix公司开发的一款基于HTTP的服务治理框架,它是目前Spring Cloud体系中资历最老且应用最为广泛的服务治理方案。Spring Cloud中的其他核心组件(比如Gateway、OpenFeign、Zuul等)都提供了对Eureka的支持,可以通过Eureka搭建的注册中心来获取服务信息。
Eureka和大部分注册中心一样,它的基础架构包含三个角色:注册中心、服务提供者和服务消费者。Eureka和服务提供者及服务消费者之间的关系如图5-3所示。
图5-3 Eureka和服务提供者与服务消费者之间的关系
下面具体介绍一下Eureka Server、Service Provider和Service Consumer这三个角色的功能。
(1)Eureka Server
支持高可用架构的注册中心,它提供了服务注册、服务发现、服务续约和服务剔除等服务治理领域的基本功能。
(2)Service Provider
服务提供者,在应用启动阶段向Eureka Server发起注册请求,并在运行阶段通过心跳包持续向Eureka Server发送服务续约请求,使当前服务提供者在注册中心中被标记为“可用”状态。在服务关停下线时主动向注册中心发起下线指令。
(3)Service Consumer
服务调用者(也被称为服务消费者),在应用运行阶段,从Eureka Server里定时拉取已注册的服务列表,通过负载均衡策略发起远程服务调用。
2. Consul
Consul是HashiCorp公司开发的一款开源工具,它的底层是使用Go语言开发的,得益于Go语言在跨平台方面的优势,Consul的安装部署过程非常简单。此外,Consul还支持开箱即用的多数据中心(由多个注册中心组成一个数据中心集群,多个数据中心之间可以互相同步数据),可以很方便地搭建一套高可用的架构方案。Consul依赖于Gossip一致性协议传播信息,这意味着注册中心节点的添加和删除并不会影响集群内各节点的消息传播。
Consul的特性总结如下:
• 支持以DNS和HTTP接口的方式来完成服务注册和服务发现。
• 支持Healthcheck健康检查功能,用以监视集群健康情况。
• 同时支持DNS和HTTP接口。
• 采用Key/Value存储结构。
• 支持开箱即用的多数据中心。
3. Nacos
Nacos是阿里研发的服务治理框架,它不仅可以和Spring Cloud中的组件搭配工作,还可以作为Dubbo生态系统的注册中心来使用。
Nacos的特性总结如下:
• 支持基于DNS和RPC的服务发现和服务治理。
• 支持动态配置服务,可以作为配置中心为应用提供配置管理功能。
• 支持权重路由,可以实现中间层负载均衡和灵活的路由策略。
• 支持限流、异地多活和流量调度等多种应用场景。
• 支持多种云原生技术和主流的RPC框架,如Kubernetes、Istio、gRPC、Dubbo RPC和Spring Cloud RESTful API。