我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

这篇文章给大家介绍消息中间件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集群的概念、部署和实践是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

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

开源消息中间件Kafka在华泰证券的探索与实践是怎样的

开源消息中间件Kafka在华泰证券的探索与实践是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Kafka 作为开源消息中间件的重要分支,在券商领域会有怎样
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录