Zookeeper、Nacos、Dubbo、Kafka之间的关系

2023-11-03

1.Zookeeper

请添加图片描述
  Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高。

Zookeeper的功能主要是它的树形节点来实现的。当有数据变化的时候或者节点过期的时候,会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zookeeper获取最新数据,采用push-pull来做数据更新。服务注册和消费信息直接存储在zk树形节点上,集群下采用过半机制保证服务节点间一致性。

2.Nacos

请添加图片描述

Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos 是 Dubbo 生态系统中重要的注册中心实现。

Nacos的配置中心和注册中心实现的是两套代码。Nacos依赖Mysql数据库做数据存储,当有数据更新的时候,直接更新数据库的数据,然后将数据更新的信息异步广播给Nacos集群中所有服务节点数据变更,在由Nacos服务节点更新本地缓存,然后将通知客户端节点数据变化。

3.Dubbo

请添加图片描述

Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
dubbo能做什么?

  1. 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。

  2. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。

服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

4.Kafka

请添加图片描述

Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于Zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。

Zookeeper与Nacos

1.配置中心

Nacos和Zookeeper都可以作为配置中心,做一些可以实时变化的配置数据存储,然后实时更新线上数据。

区别:存储和数据更新

  • Nacos:依赖Mysql数据库做数据存储,当有数据更新的时候,直接更新数据库的数据,然后将数据更新的信息异步广播给Nacos集群中所有服务节点数据变更,在由Nacos服务节点更新本地缓存,然后将通知客户端节点数据变化。

  • Zookeeper:利用zk的树型结构做数据存储,当有数据更新的时候使用过半机制保证各个节点的数据一致性;然后通过zk的事件机制通知客户端。

这里可以明显发现差异:

服务器存储位置不同,分别采用mysql和zk本身存储
消息发送,一个有采用过半机制保持一致性,另外一个异步广播,通过后台线程重试保证。

2.注册中心

Nacos:nacos支持两种方式的注册中心,持久化和非持久化存储服务信息。

非持久直接存储在nacos服务节点的内存中,并且服务节点间采用去中心化的思想,服务节点采用hash分片存储注册信息
持久化使用Raft协议选举master节点,同样采用过半机制将数据存储在leader节点上
Zookeeper:利用zk的树型结构做数据存储,服务注册和消费信息直接存储在zk树形节点上,集群下同样采用过半机制保证服务节点间一致性

Zookeeper与kafka

1)Kafka把它的meta数据都存储在ZK上,所以说ZK是必要存在的,没有ZK没法运行Kafka;在老版本(0.8.1以前)里面消费段(consumer)也是依赖ZK的,在新版本中移除了客户端对ZK的依赖,但是broker依然依赖于ZK。

2)kafka是消息队列,Zookeeper是服务的控制中心;消费者要访问服务,需要知道现在哪些生产者(对于消费者而言,kafka就是生产者)是可用的,就需要zk的调度。

Zookeeper与dubbo的关系

Dubbo建议使用Zookeeper作为服务的注册中心。
Dbbo是一个框架,用于服务间的调度,服务程序编写使用dubbo做接口,利用dubbo是实现服务服务之间还有Zookeeper之间的通讯。

1) Zookeeper的作用:

Zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。当然也可以 通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉调用者无法知晓,如果不更改代码会继续请求挂掉的机器提供服务。 Zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除。至于支持高并发,简单来说就是横向扩展,在不更改代码 的情况通过添加机器来提高运算能力。通过添加新的机器向Zookeeper注册服务,服务的提供者多了能服务的客户就多了。

2) dubbo:

是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。
注意这里的dubbo只是一个框架,至于你架子上放什么是完全取决于你的,就像一个汽车骨架,你需要配你的轮子引擎。这个框架中要完成调度必须要有一个分布式的注册中心,储存所有服务的元数据,你可以用zk,也可以用别的,只是大家都用zk。

总而言之,Zookeeper与nacos功能差不多(都是注册中心和配置中心)就是实现方式不一样。而dubbo就是一个RPC调用框架,就想一个汽车骨架,需要配置轮子引擎(分布式注册中心Zookeeper或nacos)。而kafka就是依赖一Zookeeper来运行的。

Spring Cloud 和Dubbo区别

在这里插入图片描述

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

Zookeeper、Nacos、Dubbo、Kafka之间的关系 的相关文章

  • Alluxio介绍

    Alluxio介绍 Alluxio是什么 Alluxio是世界上第一个用于云分析和人工智能的开源数据编排技术 它弥合了数据驱动应用程序和存储系统之间的鸿沟 使存储层的数据更接近数据驱动应用程序 并使其易于访问 使应用程序能够通过一个通用接口

随机推荐

  • 2021美赛C题解题思考+参考文献+部分git开源代码

    解题思路 关于蜜蜂扩散的模型建立 标签方面 报告类型 数据集2021MCM ProblemC DataSet xlsx可以看出 在每次报告中Positive ID 有14 份 而 Negative ID 有 2069 份 Unverifie
  • 光纤收发器tx和rx是什么意思?二者有什么区别?

    现如今 在视频监控工程的高清视频图像传输中 一般都会使用光纤收发器 光纤收发器也被称之为光电转换器 Fiber Converter 可以将短距离的双绞线 网线 电信号和长距离的光信号 光纤 进行互换的以太网传输媒体转换设备 这样就能延长信号
  • 百度编辑器UEditor,怎样禁止用户粘贴??

    editor a addListener beforepaste myEditor paste function myEditor paste o html html html alert 只能录入不能粘贴
  • INFO BRAINPAN: 1

    INFO BRAINPAN 1 About Release Back to the Top Name Brainpan 1 Date release 20 Mar 2013 Author superkojiman Series Brainp
  • iOS应用添加第三方支付

    最简单明了的教程还是官方文档 以下是我给应用添加支付功能 记录下 1 微信支付 官方文档 https pay weixin qq com wiki doc api app php chapter 8 5 假设你的应用在微信开放平台已经创建
  • activeMQ的学习

    原来一直在使用activeMQ 没有对它进行整理 现在看到一个不错的activeMQ详细介绍 http www itpub net tree index 312 1
  • 遇到问题之-LNMP编译安装Redis构建高速Redis缓存

    LNMP编译安装Redis构建高速Redis缓存 前面已经讲过LNMP编译Memc和Srcache构建高速Memcached缓存 这次换另一种被广泛应用的缓存 Redis Redis实际上是一个高性能的key value数据库 他可以代替M
  • 如何使用java的String.split()方法分割话单,方便查看

    工作中 想要快速查到话单中某一列的值 可以使用String split 方法 但是如果直接使用就会变成如下图 那么怎么办呢 原因是 是转义字符 必须得加 如下图 是不是很明显就看出某一列的数值啦 代码片段 public static voi
  • mysql查询最近三个月数据方法

    select from t user where time gt DATE SUB CURDATE INTERVAL 1 WEEK 一周 select from t user where time gt DATE SUB CURDATE I
  • jQuery-两次基础了解总结-引入-选择器-选择集转移

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 17天
  • C++ 实现RSA加密

    背景 因项目需要 要做一个调用短信接口发送短信的功能 需要实现一个功能是 给定一个字符串 给定一个密钥对 实现RSA公钥加密 Base64加密 然后将加密后的字符串发给服务器 服务器返回通过私钥和Base64加密后的字符串 然后我这边要实现
  • 版本号大小比较算法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 版本号大小比较算法 版本号之间比较大小 本质上是比较字符串之间的关系 这里给定两个版本号 你一定能迅速地区分出大小 0 0 2 0 0 3 想要让计算机程序分辨她们的关系
  • 云开发推送订阅消息报错 47003 rid ***

    小程序云开发推送订阅消息一直出现类似的问题 推送失败 errcode 47003 errmsg argument invalid data thing9 value is invalid rid 5f3a7906 0c594b15 6792
  • cisco VoIP软电话配置实验

    cisco VoIP软电话配置实验 2010 12 21 14 53 40 标签 语音通信 cisco 软电话 休闲 VoIP 职场 原创作品 允许转载 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 ht
  • hdu 1022 简单的栈应用

    本题链接 点击打开链接 Train Problem I Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission
  • 基于Paddle Serving&百度智能边缘BIE的边缘AI解决方案

    Paddle Serving作为飞桨 PaddlePaddle 开源的服务化部署服务化方案 提供了C Serving和Python Pipeline两套框架 旨在帮助深度学习开发者和企业提供高性能 灵活易用的工业级在线推理服务 助力人工智能
  • unable to read project file....不能读取项目文件的解决方法

    我直接把整个解决方案和项目的源文件拷贝到另外的磁盘或者另外的文件夹和另外的电脑上 则有可能出现这个问题 解决方案 针对不同的问题可能有不同的解决方法 下面仅列举几种 删除解决方案中的 suo文件 这个与 sln一个目录下 一般为隐藏的 需要
  • 内存中有两个4字节以压缩的bcd_微机原理课后习题答案

    第1章 进制及码元 1 进制转换 129 81H 10000001B 201Q 298 12AH 100101010B 452Q 1000 3E8H 1111101000B 1750Q 5DH 1011101 B 135 Q 93 D 3E
  • stm32f407启动代码分析

    stm32f407启动代码分析 官方资料 Cortex M3内核怎么开始执行一个程序 启动文件做什么 1 初始化堆栈大小 2 初始化中断向量表 3 初始化堆栈指针 SP initial sp PC 指针 Reset Handler 4 配置
  • Zookeeper、Nacos、Dubbo、Kafka之间的关系

    文章目录 1 Zookeeper 2 Nacos 3 Dubbo 4 Kafka Zookeeper与Nacos 1 配置中心 2 注册中心 Zookeeper与kafka Zookeeper与dubbo的关系 Spring Cloud 和