Eureka与Zookeeper的区别

2023-11-17

        著名的CAP 理论指出,一个分布式系统不可能同时满足 C( 一致性 ) A( 可用性 ) P( 分区容错性 )
由于分区容错性在是分布式系统中必须要保证的,因此我们只能在 A C 之间进行权衡,在此 Zookeeper
保证的是 CP, Eureka 则是 AP

Zookeeper保证数据一致性和分区容错性

        在ZooKeeper 中,当 master 节点因为网络故障与其他节点失去联系时,剩余节点会重新进行
leader 选举,但是问题在于,选举 leader 需要一定时间 , 且选举期间整个 ZooKeeper 集群都是不可用
的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因网络问题使得 ZooKeeper 集群失去
master 节点是大概率事件,虽然服务最终能够恢复,但是在选举时间内导致服务注册长期不可用是难以容忍的。

Eureka保证可用性和分区容错性

        Eureka优先保证可用性, Eureka 各个节点是平等的,某几个节点挂掉不会影响正常节点的工作, 剩余的节点依然可以提供注册和查询服务。而Eureka 的客户端在向某个 Eureka 注册或时如果发现连接 失败,则会自动切换至其它节点,只要有一台Eureka 还在,就能保证注册服务可用 ( 保证可用性 ) ,只不 过查到的信息可能不是最新的( 不保证强一致性 )
        所以Eureka 在网络故障导致部分节点失去联系的情况下,只要有一个节点可用,那么注册和查询服务就 可以正常使用,而不会像zookeeper 那样使整个注册服务瘫痪, Eureka 优先保证了可用性。

        总结

Eureka会造成短暂的数据不一致性,这是可以容忍的,但是zookeeper在主服务器down的时候,要选取新的主服务器,造成的时间导致服务注册长期不可用时难以容忍的,所以推荐使用Eureka,再加上Eureka集成Spring Cloud是十分方便的,所以推荐大家使用Eureka作为服务注册中心。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eureka与Zookeeper的区别 的相关文章

随机推荐

  • C++23新特性个人总结

    文章目录 1 关键字 1 1 consteval 1 2 auto 1 2 1 新增支持数组指针的引用类型 1 2 2 代替decay copy语义 1 3 volatile 1 4 constexpr 1 5 char8 t 1 6 wc
  • 【自动化风控建模系列1】最简洁的代码实现特征初步筛选

    金融信贷开发评分卡时 通常会准备好特征中间层供评分卡开发筛选使用 评分卡的特征选择余地越大 后期越是有可能开发出性能更高的评分卡 但特征变量的选择在此时就成为第一个问题 如何初步筛选出合适的变量 基于经验 我认为第一步的筛选只需要剔除那些极
  • Educoder---Java面向对象 - 集合框架(1)

    第一题 请仔细阅读右侧代码 根据方法内的提示 在Begin End区域内进行代码补充 创建ArrayList集合并且向集合中添加数据 具体要求如下 添加字符串类型数据 https www educoder net 添加double类型数据
  • 偏移注入payload构造技巧实战+Access注入

    url http 218 245 4 113 8888 web03 ca55022fa7ae5c29d179041883fe1556 index asp id 886 拿到url 虽然知道肯定是id是注入点 但还是写一下完整思路 1 拿到界
  • node环境实现console输出不同颜色

    一 输出规则分析 1 输出及打印如下 console log x1B 31m s x1B 0m 这是红色 console log x1B 36m s x1B 0m 这是青色 2 规则说明 x1B 31m 是一个转义序列 它将被您的终端拦截并
  • 【翻译】Dart和Flutter是什么?

    Dart是在Go之后从谷歌出现的 最近作为Flutter跨平台前端框架背后的语言 其受欢迎程度激增 这对那些对云原生基础设施感兴趣的人来说很重要 因为有一种对 全栈Dart 的推动 Flutter开发者可以使用相同的语言来构建他们应用程序背
  • python文件打开的合法模式组合wr_使用Python来操作你的路由器(TP_LINK WR885N)

    开始之前咱们先了解一下TPLINK WR885N这款设备 官方地址为 http www tp link com cn product 368 html 针对官方介绍 这里博主做个简短的讲解 首先看到的是官方的路由器图片 外观还是不错的 博主
  • ArrayList源码解析(一)

    以下分析均以jdk1 8为准 首先来看一下ArrayList的继承体系 ArrayList继承自AbstractList 实现了 List Cloneable Serializable RandomAccess接口 这一点从源码上也可以看到
  • 达梦数据库教程:DM8数据迁移工具使用教程(oracle迁移至DM8)

    DM 数据迁移工具 DM 数据迁移工具 DM DTS 提供了主流大型数据库迁移到 DM DM 到 DM 文件迁移到 DM 以及 DM 迁移到文件等功能 得益于 DM 数据库对目前主流大型关系型数据库系统有着业界领先的兼容性 在存储层面 语法
  • 机器学习——seaborn可视化

    主要记录seaborn可视化学习笔记 明白有哪些绘制图像的函数可用 文章目录 一 seaborn原理 二 变量分布 1 sns boxplot 查看数值变量的取值范围 2 sns displot 查看变量的分布 3 sns jointplo
  • Windows Server存储空间配置及文件服务器的搭建

    Windows Server存储空间配置及文件服务器的搭建 技术参考 存储空间配置及文件服务器的搭建 pdf 一 网络拓扑图 环境准备 基础环境级上次实验结束后环境 上次实验 这里的共享存储就使用DC服务器 基础环境的准备 文件服务器 DC
  • BinaryWatch[LeetCode]

    class Solution public vector
  • Python 直接赋值、浅拷贝和深度拷贝解析

    Python 直接赋值 浅拷贝和深度拷贝解析 一 直接赋值 直接赋值其实就是对象的引用 别名 比如 b a 把a的值赋给b b就相当于一个别名 其实a和b都是指向的同一对象 下图很清晰地说明了直接赋值的含义 二 浅拷贝 copy 与 深度拷
  • 2023年1月计划(fbo+qedl)

    根据规划 1月计划如下 剩下还有20天 主要把fbo搞定就行了 也把qedl抄几遍 当然 能移植到osg中更好 看看glsl和osg相关的视频教程和书籍 ue4和socket可以在周末学学
  • 机器人 串口配置文件serial.INI

    SERIAL INI Configuration of the serial ports and their protocols Lindemann 27 02 2002 KUKA Controls update comments and
  • MFC-编写JAVA环境变量配置发现的问题

    配置JAVA环境变量实际上是要修改系统的环境变量 MSDN中有许多修改环境变量的函数 调用比如SetEnvironmentVariable 这样的环境变量设置函数 都是无法修改系统的环境变量的 只能改变本进程的环境变量 要修改系统环境变量只
  • Blender小图标栏不见

    将鼠标放置于属性面板左上角的 gt 箭头上 按住鼠标左键 向右拉 可能会操作到两个窗口边界 需要多操作几次
  • 并 发 请 求

    如果一次性 就加载100个请求 肯定会造成服务器压力 所以有时候 需要 较少请求 来减轻服务器压力 代码如下 const urls for let i 0 i lt 100 i urls push http www bai com i fu
  • css flex布局 —— 容器属性 flex-wrap

    flex wrap属性 默认情况下 项目都排在一条线 又称 轴线 上 flex wrap属性定义 如果一条轴线排不下 如何换行 语法 box flex wrap nowrap wrap wrap reverse flex wrap 取值有三
  • Eureka与Zookeeper的区别

    著名的CAP 理论指出 一个分布式系统不可能同时满足 C 一致性 A 可用性 和 P 分区容错性 由于分区容错性在是分布式系统中必须要保证的 因此我们只能在 A 和 C 之间进行权衡 在此 Zookeeper 保证的是 CP 而 Eurek