博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
发布于订阅消息系统-Kafka
阅读量:6847 次
发布时间:2019-06-26

本文共 1058 字,大约阅读时间需要 3 分钟。

Kafka基本概念

一.消息

这里的消息可以看做数据库里的一个“数据行”或“一条记录”。消息由字节数组组成,对Kafka来说消息里的数据没有特别的格式或含义。消息可以有一个可选的元数据--键,键也是一个字节数组,当消息以可控方式写入不同分区时,会用到键。如为键生成一个一致性散列值,对分区数进行取模,从而为消息选择写入的分区。

二.主题(topic)与分区(partition)

Kafka的消息通过topic进行分类。topic可以被分为若干个partition,一个partition就是一个提交日志。消息以追加的方式写入partition,然后以先入先出的顺序读取消息。

1.一个topic包含多个partition,因此无法再整个topic范围内保证消息的顺序,但可以保证消息在单个partition内的顺序。如下图所示的topic共有4个partition,消息被追加写入每个partition的尾部。partition可以分布在不同的服务器上,使得topic可以横跨多个服务器,以此来提供比单个服务器更为强大的性能。

三.生产者和消费者

1.生产者

生产者(producer)创建消息。生产者在默认情况下把消息均衡地分分布到topic的所有partition上,而不关心特定消息会被写到哪个partition。特定情况下会把消息直接写到指定的分区。这通常是通过消息键和分区器来实现。

2.消费者

消费者(consumer)读取消息。消费者订阅一个或多个主题,按照消息生成的顺序读取它们。消费者通过检查消息的偏移量来区分已经读取过的消息。

2.1偏移量是另一种元数据,是一个不断递增的整数值,在创建消息时,生产者会把它添加到消息里。在给定的partition中,每个消息的偏移量都是唯一的。消费者将每个partition最后读取的消息的偏移量保存在Zookeeper或Kafka上,如果消费者关闭或者重启,它的读取状态不会丢失。

2.2 消费者群组。消费者是消费者群组的一部分,一个群组内的消费者会共同读取一个topic。但群组保证每个topic只能被一个消费者消费。如下图中

群组中共有三个消费者同时读取一个topic的消息,其中两个消费者各消费一个partition,另一个消费者消费其他两个partition。消费者与partition之间的映射关系被称为消费者对partition的所有权关系。

转载于:https://juejin.im/post/5c8e3107f265da681660d785

你可能感兴趣的文章
Failure is not fatal, but failure to change might be.
查看>>
L2-015. 互评成绩
查看>>
iOS9新特性
查看>>
poj3186 poj3267
查看>>
烂泥:学习centos之快速搭建LNMP环境
查看>>
Poj2723:Get Luffy Out
查看>>
L365
查看>>
SUST OJ 1642: 绝地求生—死亡顺序
查看>>
Android中XML解析-Dom解析
查看>>
highcharts 多数据+切换
查看>>
关于输入输出及编译优化 模板代码
查看>>
世界上各种壮观震撼奇景。也许你这辈子都看不到了!
查看>>
安装包制作工具 SetupFactory使用2 API清单
查看>>
js中with、this的用法
查看>>
ADO.NET调用存储过程
查看>>
安装UBUNTU Server 11.10
查看>>
MVVM架构~使用boxy和knockoutjs实现编辑功能
查看>>
Web analytics unique visitors go sky high 网站分析报表,唯一IP地址用户
查看>>
MVC之参数验证(三)
查看>>
android截图 - 截取ContentView - 截取指定的View并且保存
查看>>