程序员

Kafka权威指南,初识 Kafka

2019-03-28  本文已影响0人  勤奋的码农

初识 Kafka

Kafka 是一款基于发布与订阅的消息系统。它一般被称为“分布式提交日志”或者“分布式流平台”。

Kafka 的数据单元被称为消息。为了提高效率,消息被分批次写入 Kafka。批次就是一组消息,这些消息属于同一个主题和分区。批次越大,单位时间内处理的消息就越多,单个消息的传输时间就越长。

Kafka 的消息通过主题进行分类。主题就好比数据库的表,或者文件系统的文件夹。主题可以被分成若干个分区,一个分区就是一个提交日志。消息以追加的方式写入分区,然后以先入先出的顺序读取。要注意,由于一个主题一般包含几个分区,因此无法在整个主题范围内保证消息的顺序,但可以保证消息在单个分区的顺序。

Kafka 通过分区来实现数据冗余和伸缩性。分区可以分布在不同的服务器上,也就是说,一个主题可以横跨多个服务器。

我们通常使用流这个词来描述 Kafka 这类系统的数据。很多时候,人们把一个主题的数据看成一个流,不管他有多少个分区。流是一组从生产者移动到消费者的数据。

消息生产者在默认情况下把消息均衡的分布到主题的所有分区上,而并不关心特定消息会被写到哪个分区。

消息消费者订阅一个或多个主题,并按照消息生成的顺序读取它们。消费者通过检查消息的偏移量来区分已经读取过的消息。在给定的分区里,每个消息的偏移量都是唯一的。

消费者群组保证每个分区只能被一个消费者使用。

一个独立的 Kafka 服务器被称为 broker。每个集群都有一个 broker 同时充当了集群控制器的角色。控制器负责管理工作,包括将分区分配给 broker 和监控 broker。一个分区可以分配给多个 broker,这个时候会发生分区复制。这种复制机制为分区提供了消息荣誉。

Kafka 默认的消息保留策略是:要么保留一段时间,要么保留到到消息达到一定大小的字节数。

Kafka 的消息复制机制只能在单个集群里进行,不能再多个集群里进行。Kafka 提供了一个叫做 MirroMaker 的工作,可以用它来实现集群间的消费复制。

2010年底,Kafka 作为开源项目在 GitHub 上发布。

安装 Kafka

Kafka 使用 Zookeeper 保存集群的元数据信息和消息者信息。

一个简单地 Kafka 集群:

获取以上Java高级架构最新视频,欢迎

加入Java进阶架构交流群:142019080。直接点击链接加群。https://jq.qq.com/?_wv=1027&k=5lXBNZ7

上一篇下一篇

猜你喜欢

热点阅读