Kafka之集群搭建

1. 为什么要使用kafka集群

        单机服务下,Kafka已经具备了非常高的性能。TPS能够达到百万级别。但是,在实际工作中使用时,单机搭建的Kafka会有很大的局限性。

  1.         ​ 消息太多,需要分开保存。Kafka是面向海量消息设计的,一个Topic下的消息会非常多,单机服务很难存得下来。这些消息就需要分成不同的Partition,分布到多个不同的Broker上。这样每个Broker就只需要保存一部分数据。这些分区的个数就称为分区数。
  2. ​       服务不稳定,数据容易丢失。单机服务下,如果服务崩溃,数据就丢失了。为了保证数据安全,就需要给每个Partition配置一个或多个备份,保证数据不丢失。Kafka的集群模式下,每个Partition都有一个或多个备份。Kafka会通过一个统一的Zookeeper集群作为选举中心,给每个Partition选举出一个主节点Leader,其他节点就是从节点Follower。主节点负责响应客户端的具体业务请求,并保存消息。而从节点则负责同步主节点的数据。当主节点发生故障时,Kafka会选举出一个从节点成为新的主节点。
  3.         Kafka集群中的这些Broker信息,包括Partition的选举信息,都会保存在额外部署的Zookeeper集群当中,这样,kafka集群就不会因为某一些Broker服务崩溃而中断。

2. kafka的集群架构

        由章节1中对kafka集群特点的描述,我们可以大致画出kafka的集群架构图大致如下:

3. kafka集群搭建

    ​ 接下来我们就动手部署一个Kafka集群,来体验一下Kafka是如何面向海量数据进行横向扩展的。

搭建环境:

1. 准备3台虚拟机

2.  安装jdk

        jdk安装可参考Linux环境下安装JDK-CSDN博客

3. 关闭防火墙(实验版本关闭防火墙,生产环境开启对应端口即可)

firewall-cmd --state 查看防火墙状态 
systemctl stop firewalld.service 关闭防火墙

 第一步: zookeeper 集群搭建

        kafka依赖于zookeeper,虽然kafka内部自带了一个zookeeper,为了保证服务之间的独立性,不建议使用其内部的zookeeper,所以我们先搭建一个独立的zookeeper集群。Zookeeper是一种多数同意的选举机制,允许集群中少数节点出现故障。因此,在搭建集群时,通常都是采用3,5,7这样的奇数节点,这样可以最大化集群的高可用特性。

        zk集群搭建参考:zookeeper之集群搭建-CSDN博客

根据上述文章搭建完成之后,启动zookeeper集群

第二步: 部署kafka集群

        kafka服务并不需要进行选举,因此也没有奇数台服务的建议。
首先,三台机器都根据  初识Kafka-CSDN博客 中的单机服务体验,上传、解压kafka到 解压到 /app/kafka 目录下
接下来,进入config目录,修改server.properties。这个配置文件里面的配置项非常多,下面列出几个要重点关注的配置
#broker 的全局唯一编号,不能重复,只能是数字。
broker.id=0
#数据文件地址。同样默认是给的/tmp目录。
log.dirs=/app/kafka/logs
#默认的每个Topic的分区数
num.partitions=1
#zookeeper的服务地址
zookeeper.connect=192.168.31.5:2181,192.168.31.176:2181,192.168.31.232:2181

broker.id需要每个服务器上不一样,分发到其他服务器上时,要注意修改一下,比如第一台是0,第二台就是1,第三台的配置就是2。
当多个Kafka服务注册到同一个zookeeper集群上的节点,会自动组成集群。

server.properties文件中比较重要的核心配置 

 第三步: 启动kafka集群

bin/kafka-server-start.sh -daemon config/server.properties

-daemon表示后台启动kafka服务,这样就不会占用当前命令窗口。

jps看一下启动情况:

4. 理解Kafka集群当中核心的Topic、Partition、Broker

5.总结

内容完善中~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化转型助力保险业腾飞,国产化安全产品护航高质量发展

近几年,全球贸易和经济受到了巨大冲击,众多贸易企业经营环境面临困难,某保险公司为国内企业提供强有力的保险保障,大大减轻了企业在国际贸易中风险,为国家经济恢复起到关键的作用。2022年,该保险公司承保金…

麒麟Linux安装新版微信的方法

麒麟Linux系统目前有v10和v10sp1,注意,恶趣味的是v10和v10sp1竟然不通用,这导致了一些国产程序出现运行bug,通过系统自带的麒麟商店无法图形界面安装,甚至搜索不到微信等等一系列问题,易用度确实很差。 解决办法也很简…

【一周年创作总结】人生是远方的无尽旷野呀

那一眼瞥见的伟大的灵魂,却似模糊的你和我 文章目录 📒各个阶段的experience🔎大一寒假🔎大一下学期🔎大一暑假🔎大二上学期(现在) 🍔相遇CSDN🛸自媒体&#…

Go gin框架控制器接收文件

1. 限定文件参数名(一般做法) func FileController(c *gin.Context) {//取表单中namefile的文件fileHeader, err : c.FormFile("file")//_, fileHeader, err : c.Request.FormFile("file")//这种也行if err ! nil {log.Println(err…

《Spring》--使用application.yml特性提供多环境开发解决方案/开发/测试/线上--方案2

阿丹-有话说: 第二种多环境的配置选择解决方案,这个更加的灵活没在配置方面都选择了一种yml的书写方式。 原理: 在Spring Boot中,spring.profiles.active 属性用于指定当前应用程序应激活哪个环境配置。当Spring Boot应用启动时…

我没有源码有可执行程序exe 带有一个dll库,我怎么调试dll来查看exe转入的参数

如果你只有一个可执行的程序(EXE)和一个动态链接库(DLL),而没有源代码,调试起来会比较复杂。不过,你仍然可以使用一些工具和方法来调试DLL并查看EXE传入的参数。以下是一些步骤和建议&#xff1…

112.Qt中的窗口类

我们在通过Qt向导窗口基于窗口的应用程序的项目过程中倒数第二步让我们选择跟随项目创建的第一个窗口的基类, 下拉菜单中有三个选项, 分别为: QMainWindow、QDialog、QWidget如下图: 常用的窗口类有3个 在创建Qt窗口的时候, 需要让自己的窗口类继承上述三个窗口类的…

设计模式——解释器模式

更多内容,前往IT-BLOG 在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的表达式(例如:正则表达式等),那么这些问题实例将是该表达式的一些句子…

科技创新领航 ,安川运动控制器为工业自动化赋能助力

迈入工业4.0时代,工业自动化的不断发展,让高精度运动控制成为制造业高质量发展的重要技术手段。北京北成新控伺服技术有限公司作为一家集工业自动化产品销售、系统设计、开发、服务于一体的高新技术企业,其引进推出的运动控制产品一直以卓越的…

基于Selenium+Python的web自动化测试框架

一、什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE:Firefo…

海量数据处理数据结构之Hash与布隆过滤器

前言 随着网络和大数据时代的到来,我们如何从海量的数据中找到我们需要的数据就成为计算机技术中不可获取的一门技术,特别是近年来抖音,快手等热门短视频的兴起,我们如何设计算法来从大量的视频中获取当前最热门的视频信息呢&…

Windows下上帝模式的实现

在windows系统上有个特殊模式,那就是上帝模式,几乎包含了windows中所有的快捷方式,有很多小伙伴还不知道,让我们一起来实现这一操作吧! 一、首先新建一个文件夹 二、接着将文件夹重命名,命名为以下代码&am…

考试面试轻松应对:技术人的备考宝库 | 开源专题 No.58

yangshun/tech-interview-handbook Stars: 97.9k License: MIT 这个项目是一个技术面试手册,提供了免费和精选的技术面试准备材料。它包括最佳实践问题、编码面试的常见问题、如何准备编程面试以及算法小抄等内容。该项目的核心优势和主要功能有: 提供…

楼宇管理新智慧:Panorama SCADA楼宇管理系统应用实例

一、背景介绍 楼宇管理系统旨在集中控制和监测楼宇运营,涵盖暖通空调(HVAC)、照明、电力系统、消防和安全系统等。通过直观的用户界面,用户得以实时监测和精准掌控这些系统,从而提升能源效率、确保设备正常运行&#…

PyCharm社区版如何创建Django项目并运行

一、配置Django环境 1、使用PyCharm打开一个普通的Python项目 2、为该项目配置Django环境 (1)点击"File"-"Settings" (2)点击"Project:项目名"-"Python Interpreter"-"号" &…

联手英特尔,释放星飞分布式全闪存储潜能

近日,英特尔官网发布了与 XSKY 星辰天合联手打造的解决方案,即 XSKY 的新一代全闪分布式存储系统 XINFINI,该存储系统采用英特尔 QAT 加速数据压缩/解压缩,从而大幅度提升存储系统性能。 全闪存储系统面临的解压缩挑战 在存储系统…

创建EasyCodeMybatisCodeHelperPro模板文件用于将数据库表生成前端json文件

在intellij idea中,通过插件EasyCodeMybatisCodeHelperPro,从现有的模板文件中选择一个复制粘贴,然后稍为修改,即可得到一个合适的模板文件。 现在的前端,越来越像后端。TypeScript替代了JavaScript,引入了…

LeetCode 232.用栈实现队列(详解) (๑•̌.•๑)

题目描述: 解题思路: 创建两个栈,一个用于入数据,一个用于出数据。分别是pushST和popST; 1.如果是入数据就直接入进pushST 2.如果是出数据,先检查popST中有无数据,如果有数据,就直接出。如果没…

Java--Spring项目生成雪花算法数字(Twitter SnowFlake)

文章目录 前言步骤查看结果 前言 分布式系统常需要全局唯一的数字作为id,且该id要求有序,twitter的SnowFlake解决了这种需求,生成了符合条件的这种数字,本文将提供一个接口获取雪花算法数字。以下为代码。 步骤 SnowFlakeUtils …

Linux Ubuntu 20.04.6 Intel WiFi6 Ax411 1690i Ax1690i Killer 解决无线网卡识别不出来问题

项目场景: 网卡型号:英特尔 Killer™ Wi-Fi 6E AX1690 i/s ubuntu 版本 uname -a Linux kuanli 5.15.0-91-generic #101~20.04.1-Ubuntu SMP Thu Nov 16 14:22:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux cat /proc/version Linux version 5.15.0-9…