iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的
  • 416
分享到

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的

2023-06-02 23:06:44 416人浏览 安东尼
摘要

这篇文章给大家介绍消息中间件kafka+ZooKeeper集群的概念、部署和实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中所有动

这篇文章给大家介绍消息中间件kafka+ZooKeeper集群的概念、部署和实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中所有动作流数据。Kafka的目的是通过hadoop并行加载机制统一线上和离线消息处理,并通过集群提供实时消息。内容较基础,主要围绕kafka的体系架构和功能展开。

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的 

正文开始之前,我们先了解一下Kafka中涉及的相关术语:

Broker——Kafka集群包含一个或多个服务器,这种服务器被称为broker;

Topic——每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)

Partition——Partition是物理上的概念,每个Topic包含一个或多个Partition.

Producer——负责发布消息到Kafka broker

Consumer——消息消费者,向Kafka broker读取消息的客户端。

Consumer Group——每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

Kafka的topic可以看做是一个记录流 ("/orders", "/user-signups"),每个topic都有一个日志,它存储在磁盘上。每个topic又被分成多个partition(区),每个partition在存储层面是append log文件,任何发布到partition的消息都会被直接追加到日志文件的尾部,Kafka Producer api用于生成数据记录流,Kafka Consumer API用于使用Kafka的记录流。

Kafka架构:Topic、Partition、Producer、Consumer

通常,一个普通的工作流程是Kafka的producer向topic写入消息,consumer从topic中读取消息。topic与日志相关联,日志是存储在磁盘上的数据结构,Kafka将producer的记录附加到topic日志的末尾。topic日志由分布在多个文件上的许多分区组成,这些文件可以分布在多个Kafka集群节点上。Kafka在集群的不同节点上分发topic日志分区,以实现具有水平可伸缩性的高性能。Spreading 分区有助于快速写入数据,Kafka将分区复制到许多节点以提供故障转移。

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的 

如果多个producer和consumer同时读取和写入相同的Kafka主题日志,Kafka如何扩展?首先,Kafka本身的写入速度很快,顺序写入文件系统本身就不需要太多时间;其次,在现代的快速驱动器上,Kafka可以轻松地每秒写入700 MB或更多字节的数据。

集群部署和测试

Kafka使用ZooKeeper管理集群,ZooKeeper用于协调服务器或集群拓扑,ZooKeeper是配置信息的一致性文件系统。你可以选择Kafka自带的Zookeeper,也可以选择单独部署,一台linux主机开放三个端口即可构建一个简单的伪ZooKeeper集群。

ZooKeeper可以将拓扑更改发送到Kafka,如果集群中的某台服务器宕机或者某个topic被添加、删除,集群中的每个节点都可以知道新服务器何时加入,ZooKeeper提供Kafka Cluster配置的同步视图。Kafka和ZooKeeper的搭建都需要java环境,对于jdk的下载安装本文不过多赘述,可以自行网上查询,二者的安装包也可以在Apache官网自行下载。自建Zookeeper集群的配置过程如下:

创建目录 ZooKeeper:mkdir zookeeper

拷贝最少三个实例,进入ZooKeeper目录,其他实例进行同样的操作:

创建目录zkdata、zkdatalog

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的

进入conf目录,

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的

拷贝zoo_sample.cfg 为zoo.cfg,详细配置如下:

Java代码  

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的

使用Kafka自带的ZooKeeper集群:

查看配置文件 

进入Kafka的config的目录:

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的 

 先建立zk集群,直接使用Kafka自带的ZooKeeper建立zk集群,修改zookeeper.properties文件:

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的

Kafka服务器

Kafka集群由多个Kafka Brokers组成。每个Kafka Broker都有一个唯一的ID(编号)。Kafka Brokers包含主题日志分区,如果希望获得故障处理能力,需要保证至少有三到五个服务器,Kafka集群最大可同时存在10,100或1,000个服务器。Kafka将每个partition数据复制到多个server上,任何一个partition有一个leader和多个follower(可以没有);备份的个数可以通过broker配置文件来设定.当leader失效时,需在followers中选取出新的leader,可能此时follower落后于leader,因此需要选择一个"up-to-date"的follower。

例如,如果在AWS中运行kafka集群,其中一个Kafka Broker发生故障,作为ISR(同步副本)的Kafka Broker可以迅速提供数据。

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的 

请注意,对于如何设置Kafka集群本身并没有硬性规定。例如,可以在单个AZ中设置整个集群,以便使用AWS增强型网络和放置组获得更高的吞吐量,然后使用Mirror Maker将集群镜像到同一区域中的热灾备AZ。

关于消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的

本文链接: https://www.lsjlt.com/news/231606.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-15
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-15
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-15
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-15
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-15
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-15
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-15
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-15
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-15
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-15
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作