Spring Cloud全解析:服务注册中心的多维度产品对比与优选指南

ops/2024/10/18 8:19:32/

注册中心不同产品的对比

产品使用语言CAP数据一致性多数据中心Watch支持KV存储服务健康检查对外暴露接口Spring Cloud集成
EurekajavaAPLong Polling可配置支持HTTP已集成
zookeeperjavaCPZAB(Paxos)支持支持心跳客户端已集成
consulgoCPRaft支持(Gossip)Long Polling支持服务状态、内存、磁盘等HTTP/DNS已集成
  • Eureka集群模式,集群内的每个机器地位是相等的,不存在主从,每个服务可以向任意一个Eureka实例进行服务注册与发现,集群中的每一个Eureka实例接收到写请求之后都会自动同步给其他所有的Eureka实例
    • Eureka是对等模式,可能数据还没同步完,然后就宕机了,此时还是可以从其他机器拉取注册信息,只是不保证是最新的注册信息,该过程服务可以向其他没有宕机的节点进行注册,为了保证A而舍弃了C
  • Zookeeper 是有Leader+Follower两种角色,只有Leader负责写,也就是服务注册,然后把数据同步给所有的Follower,进行读操作时,也就是服务发现
    • 由于Zookeeper是只有Leader是进行写操作的,如果leader挂了,需要重新选举新的leader,此时集群是不可用的,为了保证C而舍弃了A

CAP原则

  • 一致性C(Consistency) 在分布式系统中的所有数据备份,所有节点的数据一致,都是最新的数据
  • 可用性A(Availability) 在集群中任何一个节点挂了,其他节点可以继续对外提供服务
  • 分区容错性P(Partition tolerance) 在分布式系统中每台主机称为一个分区,系统如果不能在时限内达成数据一致性或者无法及时响应客户端请求,都意味着出现了分区的情况,此时就需要在C和A之间做出选择,即为容错性

CP:如果需要一致性,就会影响到可用性,一旦系统出现故障,就需要等待一段时间进行修复,在修复期间无法对外提供服务,数据同步会消耗时间,导致可用性降低

AP:如果需要可用性,只要有一个服务在,就能正常接受请求,只能放弃强一致性,采用最终一致性

CA:如果想要满足一致性和可用性,那么分区容错性就难保证了,只能是单点

https://zhhll.icu/2021/框架/微服务/springcloud/注册中心/2.注册中心不同产品的对比/


http://www.ppmy.cn/ops/87086.html

相关文章

异步爬虫基础

我们知道爬虫是 IO 密集型任务, 例如使用 requests 库来爬取某个站点,当发出一个请求后, 程序必须等待网站返回响应, 才能接着运行, 而在等待过程中,整个爬虫程序是一直在等待的。 协程的基本原理 案例的…

【计算机毕设论文】基于SpringBoot的语音识别系统的设计与实现

💗博主介绍:✌全平台粉丝5W,高级大厂开发程序员😃,博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 感兴趣的可以先收藏起来,同学门有不懂的毕设选题,项目以及论文编写等相…

Qt Designer,仿作一个ui界面的练习(三):设定显示特性

一、新建资源文件 1、资源管理器--编辑资源--新建资源文件,命名为media.qrc 2、编辑资源--添加前缀,选择添加提前编辑好的图片资源 二、设置图像: 右键MainWindow,改变样式表 输入: /*/// 各大部件的背景色 ///*/ …

Apollo使用(3):分布式docker部署

Apollo 1.7.0版本开始会默认上传Docker镜像到Docker Hub,可以按照如下步骤获取 一、获取镜像 1、Apollo Config Service 获取镜像 docker pull apolloconfig/apollo-configservice:${version} 我事先下载过该镜像,所以跳过该步骤。 2、Apollo Admin S…

Vue3-18 组件基础

组件的定义 我们在项目的src/components种定义组件&#xff0c;vue提供了几种简单的组件的定义方式 在单文件种定义组件 <script setup> import { ref } from vue const count ref(0) </script> <template><div>第一种<button click"count…

深度学习的矩阵计算

切片slice 在NumPy中&#xff0c;切片&#xff08;slicing&#xff09;是一种选择数组元素子集的方法。切片操作基于索引&#xff0c;但允许你指定一个范围的索引&#xff0c;而不是单个索引。这对于处理多维数组&#xff08;NumPy中的ndarray对象&#xff09;特别有用。 一维数…

.NET 中的高性能队列 Channel

在 .NET 中&#xff0c;Channel<T> 类是 .NET Core 3.0 引入的一个用于实现生产者-消费者场景的高性能队列。它属于 System.Threading.Channels 命名空间&#xff0c;并提供了基于通道的通信机制&#xff0c;使得在不同线程或任务之间传递数据变得更加简单和高效。 主要…

HarmonyOS 质量、测试、上架速浏

1.应用质量要求&#xff1a; 1. 应用体验质量建议: 功能数据完备 功能完备 数据完备 基础体验要求 基础约束 兼容性 稳定性 性能 功耗 安全…