惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 小笨笨

C# 面试题整理 《ASP.NET Core 6 框架揭秘》第五章读书笔记 - 配置选项(上) 《ASP.NET Core 6 框架揭秘》第四章读书笔记 - 文件系统 Entity Framework Core 笔记 - 入门 《ASP.NET Core 6 框架揭秘》第三章读书笔记 - 依赖注入(下) React 学习笔记之三 - 基于 Redux 状态管理 React 学习笔记之二 - React 详解 《Kafka 权威指南》之二 - 安装 Kafka React 学习笔记之一 - ES6 基础 微服务实战读书笔记-第一章 - 小笨笨 缠论 jQuery 实战读书笔记之第六章:事件本质 jQuery 实战读书笔记之第五章:使用 jQuery 操作页面 jQuery 实战读书笔记之第四章:使用特性、属性和数据 jQuery 实战读书笔记之第三章:操作 jQuery 集合 jQuery 实战读书笔记之第二章:选择元素 TCP/IP详解读书笔记:ARP-地址解析协议 TCP/IP详解读书笔记:链路层 TCP/IP详解读书笔记:概述 - 小笨笨
《Kafka 权威指南》读书笔记之一 - 初识Kafka
小笨笨 · 2022-11-22 · via 博客园 - 小笨笨

1.1 发布与订阅消息系统

消息的发送者(发布者)不会直接把消息发送给接受者,这是发布与订阅消息系统的一个特点。

发布者以某种方式对消息进行分类,接受者订阅它们,以便接收特定类型的消息。

发布与订阅系统一般有一个 broker,也就是发布消息的中心点。

1.2 Kafka 登场

 它一般被称为“分布式提交日志”或者“分布式流平台”。

Kafka 的数据是按照一定顺序持久化保存的,可以按需读取。此外,Kafka 的数据分布在整个系统里,具备数据故障保护和性能伸缩能力。

1.2.1 消息和批次

Kafka 的数据单元被称为消息。消息由字节数组组成。消息可以有一个可选的元数据,也就是键,当消息以一种可控的方式写入不同分区的时候会用到。

为了提高效率,消息被分批写入 Kafka。批次就是一组消息,这些消息属于同一个主题和分区。这样可以减少网络开销。

1.2.2 模式

数据格式的一致性对 Kafka 非常重要,它消除了消息读写操作之间的耦合性。

Kafka 许多开发者喜欢使用 Apache Avro。

1.2.3 主题和分区

消息通过主题进行分类,主题可以分为若干个分区。消息以追加的方式写入分区,然后以先入先出的顺序读取。

因为一般主题有多个分区,所以无法在主题范围内保证消息的顺序,但可以保证单个分区内的顺序。

通过分区实现了数据冗余和伸缩性,分区是可以分布在不同的服务器上的。

流是一组从生产者移动到消费者的数据。Kafka Streams 就是做的流式处理。

1.2.4 生产者和消费者

Kafka Connect API 和用于流式处理的 Kafka Streams 是高级客户端 API。

生产者创建消息。

消费者读取消息。消费者通过检查消息的偏移量来区分已经读过的数据。

偏移量是一种元数据,它是一个不断递增的整数值。在给定的分区里,每个消息的偏移量都是唯一的。消费者把每个分区最后读取的消息偏移量保存在 ZooKeeper 或 Kafka 上。

消费者是消费者群组(Consumer Group)的一部分,群组保证每个分区只能被一个消费者使用。消费者与分区之间的映射通常被称为消费者对分区的所有权关系。

1.2.5 broker 和集群

一个独立的 Kafka 服务器被称为 broker。它接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker 为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。

broker 是集群的组成部分。每个集群中都有一个 broker 充当集群控制器的角色。

在集群中,一个分区从属于一个 broker,该 broker 被称为分区的首领。一个分区可以分配给多个 broker,这个时候会发生分区复制。

保留消息是一个重要特性。默认的消息保留策略是:要么保存一段时间,要么达到一定的字节数。达到上限后,这些数据就会被删除。主题可以配置自己的保留策略。

1.2.6 多集群

使用多集群的原因:

1)数据类型分离

2)安全需求隔离

3)多数据中心(灾难恢复)

但是,Kafka 的消息复制机制只能在单个集群中进行,不能在多个集群之间进行。

Kafka 提供了一个 MirrorMaker 的工具,可以实现集群间的复制。核心组件包含了一个生产者和一个消费者,两者之间通过一个队列相连。

1.3 为什么选择 Kafka

1.3.1 多个生产者

很适合从多个前端系统收集数据,并以统一的格式对外提供数据。

1.3.2 多个消费者

支持多个消费者从一个单独的消息流上读取数据。

1.3.3 基于磁盘的数据存储

允许消费者非实时地获取数据。

1.3.4 伸缩性

具有灵活的伸缩性。

1.3.5 高性能

通过横向扩展生产者、消费者和 broker,可以处理巨大的消息流,并保证亚秒级的延迟。

1.4 数据生态系统