当前位置:首页 > 技术文章 > 正文内容

Zookeeper、Nacos、Dubbo、Kafka四者关系

arlanguage3个月前 (01-31)技术文章26

首先分下了解下:

Zookeeper

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

Nacos

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

Dubbo

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

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支持两种方式的注册中心,持久化和非持久化存储服务信息。

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作为服务的注册中心。

Dubbo是一个框架,用于服务间的调度,服务程序编写使用dubbo做接口,利用dubbo实现服务与服务之间还有Zookeeper之间的通讯。

Zookeeper的作用:

Zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。当然也可以 通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉调用者无法知晓,如果不更改代码会继续请求挂掉的机器提供服务。

dubbo:

它是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。

注意:

这里的dubbo只是一个框架,这个框架中要完成调度必须要有一个分布式的注册中心,储存所有服务的元数据,你可以用zk,也可以用别的。

  • Zookeeper与nacos除了实现方式不一样,其他功能都差不多。
  • dubbo就是一个RPC调用框架,它需要分布式注册中心Zookeeper或nacos。
  • kafka就是依赖Zookeeper来运行的。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1745.html

标签: zookeeper nginx
分享给朋友:

“Zookeeper、Nacos、Dubbo、Kafka四者关系” 的相关文章

解决php因为输出内容太短无法流式(Stream)输出问题

实测得知,如果用PHP做流式输出每次echo的内容太短的话,就没有流式的效果了,而是会等输出的长度达到一定时前端才能拿到结果,如下:这是我这边的测试结果,可见,这里仅接收到了两次流式输出,但是我在PHP里是输出了10次,从而证明了每次流式的内容达到一定长度时才能有流式得到效果,这个长度到底是多少,我...

Nginx笔记

内容介绍 1、nginx基本概念。(1) nginx是什么,能做什么事情(2) 反向代理。(3) 负载均衡。(4) 动静分离2、nginx 安装、常用命令和配置文件(1)在liunx系统中安装nginx.(2) nginx常用命令。(3) nginx 配置文件。3、nginx 配置实例 1-反向代理...

推荐一款 Nginx 可视化配置神器

Nginx 是前后端开发工程师必须掌握的神器。该神器有很多使用场景,比如反向代理、负载均衡、动静分离、跨域等等。把 Nginx 下载下来,打开 conf 文件夹的 nginx.conf 文件,Nginx 服务器的基础配置和默认的配置都存放于此。配置是让程序员非常头疼的事,比如 Java 后端框架...

nginx配置集群 -websocket

nginx配置集群 -websocket前几天做一个nginx的反向代理,来代理websocket。因为上线时间的问题,所以是单节点运行。现在准备做集群优化,然后上容器环境。这样就需要配置nginx的负载均衡。不废话了,下面是配置文件。当然配置后需要验证,验证的时候会出现很多奇怪的问题。这里就不进行...

php高并发的瓶颈到底在哪

php高并发的瓶颈到底在哪?是同步阻塞?还是nginx+fpm不断创建-销毁进程资源过度消耗?高并发到底是什么问题,是语言问题嘛,为什么说php不适合高并发?求大佬指点从2009年后一直用lnmp,从5.2.17一直到现在的PHP7.4,做的项目无数个,大到日IP10W+、PV50W+的平台,小到日...

服务器排障nginx 499 错误地解决

问题描述:近期平台对外开放了数据查询接口,在数据量特别大时,返回结果时间可能会超过3秒,接口开放后,系统本身调用没有问题,其他第三方平台接入时,总会报链接超时问题;问题原因:查看tomcat日志无任何错误,一开始以为是tomcat接收参数最大限制问题,对tomcat做了一次整体优化,修改连接数、修改...