kafka服务端架构总览

Kafka系列文章

基于Kafka2.1解读Producer原理
基于Kafka2.1解读Consumer原理
Kafka服务端NIO操作原理解析(一)
Kafka服务端NIO操作原理解析(二)


文章目录


前言

kafka服务端,咱们前两篇文章都是围绕kafka的IO进行分析的,读者很难有全貌的理解,也就是整个服务端有哪些功能,以及这些功能之间是如何协作。


一、kafka服务端的架构

1.1 基本概念介绍

其实任何一个系统,总结起来无非都是『计算』+『IO』。只不过针对咱们的平时的业务系统,"计算"比较多,也就是主要是业务逻辑;IO一般涉及到的是RPC服务框架的调用,当然不管是调用其他业务服务、中间件、数据源其实都是RPC,只不过可能是不同的"网络模型+自定义协议"。

1.2 kafka的特性

kafka作为一个开源的MQ框架,当然也是『计算』+『IO』,但是最为人称道的其实就是他的"IO"模型:网络IO+文件IO。

不过kafka还有个厉害的地方,他使用了计算和IO分离的模式。想想咱们自己的业务系统,是不是会写一段IO,写一段业务逻辑,来回穿插?而再回顾下Kafka服务端NIO操作原理解析(一)
Kafka服务端NIO操作原理解析(二),想想kafka服务端是怎么做的?几乎这两段全是数据的IO逻辑,也就是读取request,写入response的过程。根本不依赖于所谓的逻辑计算,也就是咱们kafka对producer和consumer的请求逻辑实际处理逻辑。

其实想想producer是不是也是这么干的?accumulator不停把数据组装成batches,Sender线程不停遍历batches,然后进行消息发送。producer通过batches,将accumulator和Sender解耦了。

二、kafkaServer

跟kafkaProducer一样,server端也有个主要的类,kafkaServer,不管是IO还是计算的动作都是它的属性的功能

2.1 服务端IO

服务端IO,其实处理的就是两件事:

  1. producer、consumer、follower replica发过来的request,进行封装,放到RequestChannel里,
  2. Processor从自己的responseQueue中获取response,然后通过网络IO写出去
    具体见Kafka服务端NIO操作原理解析(一)
    Kafka服务端NIO操作原理解析(二)

2.服务端计算

通过阅读服务端IO就会发现,貌似缺失了一环。

  1. 放到RequestChannel里的request被谁处理了?
  2. Processor的responseQueue里的response哪来的?

其实我们可以发现KafkaServer上还有个重要的属性,dataPlaneRequestHandlerPool,顾名思义,requestHandlerPool,那就是个运行池,该运行池的作用其实就是 handle request的。

2.3 计算和IO分离

其实分离、或者说解耦是咱们软件行业特别重要的一个特性以及思想。

服务端通过RequestChannel和Processor的responseQueue,将计算和IO进行了接口;producer呢?通过accumulator的topicInfoMap(其实就是batches)进行解耦

总结

着重介绍了下计算和IO分离思想在kafka设计中的实践,准备下一篇文章带出计算的具体逻辑

相关推荐
许泽宇的技术分享1 天前
解密Anthropic的MCP Inspector:从协议调试到AI应用开发的全栈架构之旅
人工智能·架构·typescript·mcp·ai开发工具
Jason_zhao_MR1 天前
米尔RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
linux·嵌入式硬件·物联网·架构·嵌入式·嵌入式实时数据库
シ風箏1 天前
Flink【基础知识 01】简介+核心架构+分层API+集群架构+应用场景+特点优势(一篇即可大概了解Flink)
大数据·架构·flink·bigdata
Psycho_MrZhang1 天前
Airflow简介和架构
架构·wpf
IT知识分享1 天前
中科天玑全要素AI舆情系统功能、架构解析
人工智能·语言模型·架构
没有bug.的程序员1 天前
微服务基础设施清单:必须、应该、可以、无需的四级分类指南
java·jvm·微服务·云原生·容器·架构
郑州光合科技余经理1 天前
海外国际版同城服务系统开发:PHP技术栈
java·大数据·开发语言·前端·人工智能·架构·php
-大头.1 天前
数据库高可用架构终极指南
数据库·架构
import_random1 天前
[kafka]伪集群搭建,各个节点配置文件中listeners参数的配置
kafka
喜欢吃豆1 天前
下一代 AI 销售陪练系统的架构蓝图与核心技术挑战深度研究报告
人工智能·架构·大模型·多模态·ai销售陪练