首页 > 其他分享 >初识Kafka

初识Kafka

时间:2022-10-18 09:01:51浏览次数:58  
标签:broker 分区 主题 Broker Kafka 初识 消息

Kafka 是一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统

Kafka 之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的:

  • 消息系统: Kafka 和传统的消息中间件都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。
  • 存储系统: Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于 Kafka 的消息持久化功能和多副本机制,我们可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。
  • 流式处理平台: Kafka 不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。

基本概念

一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer,以及一个 ZooKeeper 集群。ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制器的选举等操作的。Producer 将消息发送到 Broker,Broker 负责将收到的消息存储到磁盘中,而 Consumer 负责从 Broker 订阅并消费消息。
image

1、Producer: 生产者,也就是发送消息的一方。生产者负责创建消息,然后将其投递到 Kafka 中。

2、Consumer: 消费者,也就是接收消息的一方。消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理。

3、Broker: 服务代理节点。Broker 可以简单地看作一个独立的 Kafka 服务节点或 Kafka 服务实例。服务器上只部署了一个 Kafka 实例,也可以将 Broker 看作一台 Kafka 服务器,一个或多个 Broker 组成了一个 Kafka 集群。

主题(Topic)与分区(Partition)
Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题,而消费者负责订阅主题并进行消费。

主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。

offset 是消息在分区中的唯一标识,Kafka 通过它来保证消息在分区内的顺序性,不过 offset 并不跨越分区,也就是说,Kafka 保证的是分区有序而不是主题有序。
image

上图所示,主题中有4个分区,消息被顺序追加到每个分区日志文件的尾部。Kafka 中的分区可以分布在不同的服务器(broker)上,也就是说,一个主题可以横跨多个 broker,以此来提供比单个 broker 更强大的性能。

每一条消息被发送到 broker 之前,会根据分区规则选择存储到哪个具体的分区。如果分区规则设定得合理,所有的消息都可以均匀地分配到不同的分区中。如果一个主题只对应一个文件,那么这个文件所在的机器I/O将会成为这个主题的性能瓶颈,而分区解决了这个问题。在创建主题的时候可以通过指定的参数来设置分区的个数,当然也可以在主题创建完成之后去修改分区的数量,通过增加分区的数量可以实现水平扩展

标签:broker,分区,主题,Broker,Kafka,初识,消息
From: https://www.cnblogs.com/cherychina/p/16801424.html

相关文章

  • linux初识
    目录运维的本质计算机的种类服务器品牌服务器内部组成磁盘列阵操作系统运维的本质运维:运行维护应用程序岗位需求:自动化运维,DBA,docker+k8s……运维职责:尽可能......
  • kafka(三)调优
    kafka局部调优kafka常用命令        cd /opt/kafka/kafka/bin/        ##启动ZK        ./zookeeper-server-start.sh -daemon /opt/kafka/......
  • kafka理论
    kafka理论消息队列作用、模式    作用:1.消峰  2.解耦  3.异步通信      模式:1.点对点模式(删除对应的消息,只有一个消费者)      2.发布订阅模式(不......
  • KafkaConsumer实现多线程消费的一种实现思路——不考虑消息的顺序性问题基础
    背景介绍一种Kafka多线程消费的实现思路以及方案,此方案不考虑消息消费的顺序性问题,假定消息之间没有依赖关系。这个项目是公司里面开发有个SDK的所谓”飞行窗口“特性产......
  • Linux 下搭建 Kafka 环境
    Linux下搭建Kafka环境作者:Grey原文地址:博客园:Linux下搭建Kafka环境CSDN:Linux下搭建Kafka环境环境要求操作系统:CentOS7下载地址安装说明Kafka版本:2.11-......
  • kafka 知识点 笔记
    kafka知识点笔记使用kafka消息队列的好处:1)、解耦合不用保证两台客户端同时在线,发送端先发送消息暂时存储,接收端上线后可以自己再获取消息......
  • 一、初识Vue
    1.想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象(el,data)(newVue({这里是配置对象}))2、root容器的代码依然符合html规范,只不过混入了一些特殊的Vue语法3、root容......
  • 初识设计模式 - 观察者模式
    简介观察者设计模式(ObserverDesignPattern)的别名有很多,如发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听(Source/Listener)模式或从属者(Depend......
  • 初识C语言
    2022-10-1701:32:17/*%d--打印整型%c--打印字符%f--打印浮点数字-小数%p--以地址的方式打印%x--打印16进制数字%lf--打印双......
  • Kafka重启出错:Corrupt index found
    1、日志记录FATALFatalerrorduringKafkaServerStablestartup.Preparetoshutdown(kafka.server.KafkaServerStartable)java.lang.IllegalArgumentException:requir......