searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

微服务的注册中心与常见几种组件对比

2023-05-29 03:02:29
29
0

1、注册中心概念和定义

     对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现。服务注册中心本质上是为了解耦服务提供者和服务消费者,能够提供额外服务来管理微服务提供者的注册与发现的组件。

2、注册中心主要有三种角色

  • 服务提供者 (RPC Server) : 在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。
  • 服务消费者 (RPC client) : 在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。RPC Client 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 RPC Sever 发起调用。
  • 服务注册中心(Registry) : 用于保存 RPC Server 的注册信息,当 RPC Server 节点发生变更时,Registry 会同步变更,RPC Client 感知后会刷新本地内存中缓存的服务节点列表。

3、分布式架构中重要理论CAP定理

  • C代表 一致性(Consistency):所有节点在同一时间具有相同的数据。
  • A代表可用性(Availability) :保证每个请求不管成功或者失败都有响应(某个系统的某个节点挂了,但是并不影响系统的接受或者发出请求)  。
  • P代表分区容错性(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作(在整个系统中某个部分,挂掉了,或者宕机了,并不影响整个系统的运作或者说使用)。

  CAP不可能都满足,原因如下:

  • 如果C是第一需求的话,那么会影响A的性能。因为要数据同步,不然请求结果会有差异,但是数据同步会消耗时间,可用性就会降低。
  • 如果A是第一需求,那么只要有一个服务在,就能正常接受请求。但是对于返回结果便不能保证,原因是,在分布式部署的时候,数据一致的过程不可能像切线路那么快。
  • 如果同时满足一致性和可用性,那么分区容错就很难保证了。 但是CAP理论提出就是针对分布式数据库环境的,所以P这个属性是必须具备的。P就是在分布式环境中,由于网络的问题可能导致某个节点和其它节点失去联系,这时候就形成了P(partition)。

4、常见的注册中心对比(组件特性并非一成不变,如果发现功能特性有变更,欢迎评论指正)

 

Nacos

Eureka

Consul

Zookeeper

CAP定理

AP/CP

AP

CP

CP

访问协议

HTTP/DNS

HTTP

HTTP/DNS

TCP

健康检查

TCP/HTTP/MYSQL/Client Beat

Client Beat

TCP/HTTP/gRPC/Cmd

Keep Alive

负载均衡

权重/metadata/Selector

Ribbon

Fabio

雪崩保护

安全

acl

acl /https

acl

自身监控

metrics

metrics

多数据中心

支持

支持

kv存储服务

支持

支持

支持

一致性

Raft

Raft

Paxos

自动注销实例

支持

支持

支持

支持

监听支持

支持

支持

支持

支持

跨注册中心同步

支持

不支持

支持

不支持

SpringCloud集成

支持

支持

支持

支持

Dubbo集成

支持

不支持

支持

支持

K8S集成

支持

不支持

支持

不支持

5、常见注册中心的优劣(组件特性并非一成不变,如果发现功能特性有变更,欢迎评论指正)

注册中心

优点

缺点

选型建议

Zookeeper

1、数据存在内存中,采用nio和多线程模型

2、性能较其他CP服务器较高

 

1、不能保证服务可用性,作为注册中心,可用性的要求要高于一致性。

2、从 CP 模型上来讲,zookeeper 并不适合注册中心高可用的需要。

3、从性能上来讲,zookeeper 也无法满足注册中心大规模且频繁注册写的场景。

1、分布式数据存储

2、RPC服务框架

3、

Eureka

1、注册中心、提供者、调用者边界清晰

2、通过去中心化的集群支持保证了注册中心的整体可用性

属于应用内的注册方式,对应用的侵入性太强,且只支持Java应用。

 

1、用Spring Cloud原生全家桶

2、用本地文件和Git作为配置管理的,将配置与服务分开管理

3、考虑短期的稳定性

 

Consul

1、最小化对已有应用的侵入性

2、降低运维的复杂度(Consul Agent既可以运行在服务器模式,又可以运行在客户端模式)

 

在leader挂掉了之后,重新选举出leader之前会导致Consul 服务不可用。

 

1、运行状态发现2、动态负载均衡

3、与Kubernetes集成和扩展

4、安全的多云服务网络

 

 

Nacos

1、可以根据服务注册选择临时和永久来决定走AP模式还是CP模式

2、同时支持注册中心和配置中心

 

1、学习成本较高,需要掌握一定的分布式系统和网络知识。

2、部署和维护成本较高,需要投入一定的人力和物力。

3、对于小型项目来说,使用 Nacos 可能会过于复杂,不太适合初学者使用。

 

1、在线对服务进行上下线和流量管理

2、不采用MQ实现配置中心动态刷新

3、不新增配置中心生产集群

4、考虑引入Spring Cloud Alibaba生态

0条评论
0 / 1000
根根
3文章数
0粉丝数
根根
3 文章 | 0 粉丝
原创

微服务的注册中心与常见几种组件对比

2023-05-29 03:02:29
29
0

1、注册中心概念和定义

     对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现。服务注册中心本质上是为了解耦服务提供者和服务消费者,能够提供额外服务来管理微服务提供者的注册与发现的组件。

2、注册中心主要有三种角色

  • 服务提供者 (RPC Server) : 在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。
  • 服务消费者 (RPC client) : 在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。RPC Client 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 RPC Sever 发起调用。
  • 服务注册中心(Registry) : 用于保存 RPC Server 的注册信息,当 RPC Server 节点发生变更时,Registry 会同步变更,RPC Client 感知后会刷新本地内存中缓存的服务节点列表。

3、分布式架构中重要理论CAP定理

  • C代表 一致性(Consistency):所有节点在同一时间具有相同的数据。
  • A代表可用性(Availability) :保证每个请求不管成功或者失败都有响应(某个系统的某个节点挂了,但是并不影响系统的接受或者发出请求)  。
  • P代表分区容错性(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作(在整个系统中某个部分,挂掉了,或者宕机了,并不影响整个系统的运作或者说使用)。

  CAP不可能都满足,原因如下:

  • 如果C是第一需求的话,那么会影响A的性能。因为要数据同步,不然请求结果会有差异,但是数据同步会消耗时间,可用性就会降低。
  • 如果A是第一需求,那么只要有一个服务在,就能正常接受请求。但是对于返回结果便不能保证,原因是,在分布式部署的时候,数据一致的过程不可能像切线路那么快。
  • 如果同时满足一致性和可用性,那么分区容错就很难保证了。 但是CAP理论提出就是针对分布式数据库环境的,所以P这个属性是必须具备的。P就是在分布式环境中,由于网络的问题可能导致某个节点和其它节点失去联系,这时候就形成了P(partition)。

4、常见的注册中心对比(组件特性并非一成不变,如果发现功能特性有变更,欢迎评论指正)

 

Nacos

Eureka

Consul

Zookeeper

CAP定理

AP/CP

AP

CP

CP

访问协议

HTTP/DNS

HTTP

HTTP/DNS

TCP

健康检查

TCP/HTTP/MYSQL/Client Beat

Client Beat

TCP/HTTP/gRPC/Cmd

Keep Alive

负载均衡

权重/metadata/Selector

Ribbon

Fabio

雪崩保护

安全

acl

acl /https

acl

自身监控

metrics

metrics

多数据中心

支持

支持

kv存储服务

支持

支持

支持

一致性

Raft

Raft

Paxos

自动注销实例

支持

支持

支持

支持

监听支持

支持

支持

支持

支持

跨注册中心同步

支持

不支持

支持

不支持

SpringCloud集成

支持

支持

支持

支持

Dubbo集成

支持

不支持

支持

支持

K8S集成

支持

不支持

支持

不支持

5、常见注册中心的优劣(组件特性并非一成不变,如果发现功能特性有变更,欢迎评论指正)

注册中心

优点

缺点

选型建议

Zookeeper

1、数据存在内存中,采用nio和多线程模型

2、性能较其他CP服务器较高

 

1、不能保证服务可用性,作为注册中心,可用性的要求要高于一致性。

2、从 CP 模型上来讲,zookeeper 并不适合注册中心高可用的需要。

3、从性能上来讲,zookeeper 也无法满足注册中心大规模且频繁注册写的场景。

1、分布式数据存储

2、RPC服务框架

3、

Eureka

1、注册中心、提供者、调用者边界清晰

2、通过去中心化的集群支持保证了注册中心的整体可用性

属于应用内的注册方式,对应用的侵入性太强,且只支持Java应用。

 

1、用Spring Cloud原生全家桶

2、用本地文件和Git作为配置管理的,将配置与服务分开管理

3、考虑短期的稳定性

 

Consul

1、最小化对已有应用的侵入性

2、降低运维的复杂度(Consul Agent既可以运行在服务器模式,又可以运行在客户端模式)

 

在leader挂掉了之后,重新选举出leader之前会导致Consul 服务不可用。

 

1、运行状态发现2、动态负载均衡

3、与Kubernetes集成和扩展

4、安全的多云服务网络

 

 

Nacos

1、可以根据服务注册选择临时和永久来决定走AP模式还是CP模式

2、同时支持注册中心和配置中心

 

1、学习成本较高,需要掌握一定的分布式系统和网络知识。

2、部署和维护成本较高,需要投入一定的人力和物力。

3、对于小型项目来说,使用 Nacos 可能会过于复杂,不太适合初学者使用。

 

1、在线对服务进行上下线和流量管理

2、不采用MQ实现配置中心动态刷新

3、不新增配置中心生产集群

4、考虑引入Spring Cloud Alibaba生态

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
1