90页PPT讲懂开源分布式流处理平台Kafka

2021-10-26 15:10:11 浏览数 (1)

大家好,我是一哥,上周末邀请明哥一起给大家分享了Kafka的相关知识点,内容主要分为以下6部分:

  1. 微服务,事件驱动的架构与kafka
  2. kafka 常见的应用场景
  3. kafka 的架构原理和相关术语
  4. kafka 的常见管理命令和运维工
  5. kafka 的高级特性和发展趋势
  6. kafka 的生态系统

01

事件驱动的架构与kafka

传统微服务的痛点:

- 横向扩展难 Scaling is hard

- 状态难管理 Handling state is hard

- 微服务之间难以协同 Sharing, coordinating is hard

- 每个微服务对应一个数据库比较难落实 Run a database in each micro service - is hard

事件驱动架构的优点:

EDA 事件驱动架构的核心思想是pub-sub模式,微服务1 处理完逻辑后产生消息/事件,微服务2 订阅消息/事件并进行处理,微服务之间不需要知道彼此的存在,EDA 事件驱动架构具有分布式MQ所带来的所有优点:

  • 如微服务之间异步解耦,不存在直接调用,互不影响;
  • 微服务内部可以灵活扩展以做到削峰填谷;
  • 各个微服务易修改和滚动上线;
  • 新增和删除微服务不影响已有微服务;
  • 整个系统的部署成本低等;

02

Kafka常见的应用场景

  • 实时欺诈检测
  • 物联网IOT
  • 在线流媒体实时分析
  • 数据集成

03

Kafka的架构原理和相关术语

Topic:topic is a message stream (queue), to which messages are published;

Partitions :Topic is divided into partitions,which are ordered immutable sequence of messages that is continually appended to;

Messages: Topic partitions contain messages;

Offset: Each messages in the partitions are assigned a unique (per partition) and sequential id called the offset

04

Kafka的管理命令和运维工具

Kafka常用命令:

代码语言:javascript复制
Kafka-topics.sh –list –zookeeper node1:2181
Kafka-topics.sh –create –zookeeper node1:2181 –topic my-topic –replication-factor 2 –partitions 5
Kakfa-topics.sh –describe –zookeeper node1:2181 –topc my-topic
kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type topics
kafka-topics.sh --zookeeper uf30tdh1:2181  --alter --topic xxx --config xx=yy
kafka-topics.sh --zookeeper uf30tdh1:2181  --alter --topic xxx --delete-config xx
Kafka-console-producer.sh –broker-list node1:9092 –topic my-topic
Kafka-console-consumer.sh –bootstrap-server node1:9092 –topic my-topic –from-beginning
/kafka-consumer-groups.sh --bootstrap-server broker1:9092 --list

Kafka常用管理工具:

Kafka Manager:该监控工具更偏向于对kafka集群的管理,也有监控;https://github.com/yahoo/kafka-manager/releases

Kafka-eagle: https://github.com/smartloli/kafka-eagle

《Kafka实战宝典:监控利器kafka-eagle》

《干货,实战滴滴开源Logi-KafkaManager》

05

Kafka的高级特性和发展趋势

kafka的事务机制,概括起来就是说,开启生产者事务后,消息是正常写到目标topic的,但会通过transaction coordinator 使用两阶段提交协议写标记到目标topic(具体的标记有对应 commit的也有对应rollback的);

没有开启事务的消费者,正常读取目标topic; 开启了事务的消费者,如果配置为 read-committed, 会根据目标topic中的marker过滤掉rollback的和尚未提交transaction的message,从而确保只读到已提交的事务的message;

日志文件中除了普通的消息,还有一种消息专门用来标志一个事务的结束,它就是控制消息 controlBatch,它有两种类型:commit和abort,分别用来表征事务已经成功提交或已经被成功终止。

RecordBatch中 attributes 字段的第6位用来标识当前消息是否是控制消息,1代表是控制消息,0则反之。

RecordBatch中attributes字段的第5位用来标志当前消息是否处于事务中,1代表消息处于事务中,0则反之。

由于控制消息也处于事务中,所以attributes字段的第5位和第6位都被置为1.

06

Kafka的生态系统

0 人点赞