提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


KAFKA三层队列设计DDD思想

  • 前言
  • 一、KAFKA服务端
  • 二、Kafka 网络请求 DDD面向对象设计图
  • 三、 DDD图 手写版
  • 3.1 kafka启动、线程状态更新
  • 3.2processor run线程 整体 以及读数据设计
  • leader选举成功后,创建fetcher线程,以及HW、LEO更新
  • 日志具体写数据流程、以及数据清理
  • 发送响应DDD设计
  • 总结



前言

Kafka异步3层队列异步架构设计



一、KAFKA服务端

先来一个图

kafka三台机器分几个区 kafka三层架构_kafka三台机器分几个区

二、Kafka 网络请求 DDD面向对象设计图

程序设计,是现实世界的抽象,

看图1,整体设计清晰,缺少具体到面向对象设计细节。

DDD: 把源码的生产消息流程的,简单画一个DDD图,让大家印象更深刻。

kafka三台机器分几个区 kafka三层架构_面向对象设计_02


其实,三层队列设计(Processor, RequestChannel,KafkaRequestHandler)三种不同的线程,并发处理任务请求和响应。

这个图简化了很多细节,让大家更专注在队列异步设计,多线程间信息交互设计有更深的体会。

三、 DDD图 手写版

画电子版,耗时比较久,学习过程中,更多手画DDD图,字比较潦草
主要给大家启发,和我把笔记做个电子版保存,正在学写字哈,明年回来,再比对一下进步多少。

3.1 kafka启动、线程状态更新

kafka三台机器分几个区 kafka三层架构_kafka_03

3.2processor run线程 整体 以及读数据设计

kafka三台机器分几个区 kafka三层架构_面向对象设计_04

leader选举成功后,创建fetcher线程,以及HW、LEO更新

kafka三台机器分几个区 kafka三层架构_面向对象设计_05

日志具体写数据流程、以及数据清理

kafka三台机器分几个区 kafka三层架构_kafka_06

发送响应DDD设计

kafka三台机器分几个区 kafka三层架构_面向对象设计_07

总结

Kafka多层队列,DDD设计很简洁,非常适合大家学习,我也参考kafka三层队列通信,写了个文件上传下载功能,后期放到github上,提供大家学习。

学习源码一个很好的方式:画DDD图。