前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka源码分析-网络层-1

Kafka源码分析-网络层-1

作者头像
扫帚的影子
发布2018-09-05 17:16:26
3160
发布2018-09-05 17:16:26
举报
  • 在享用了这么久kafka提供的各种福利后, 咱们也来精进一下,看看kafka的各部分实现,知其然也知一点所以然;
  • 题目起得有点大,其实完全是临时起意,希望能坚持下去;
  • 本身其实不是java程序员,scala也是半吊子, 但是特别喜欢scala啊~~~
  • Kafka最近的版本更新有点快, 但是这一系列文章是基于kafka 0.9.1版本;
  • 这里的文章不会事无巨细,但求将主脉络理清.

Kafka的网络层模型概述

  • 这个模型其实一点也不神秘,很质朴,很清晰,也很好用,引用源码中的一句话:

The threading model is 1 Acceptor thread that handles new connections Acceptor has N Processor threads that each have their own selector and read requests from socketsM Handler threads that handle requests and produce responses back to the processor threads for writing

  • 再来张图:

网络模型.png

  • Acceptor 作两件事: 创建一堆worker线程;接受新连接, 将新的socket指派给某个 worker线程;
  • Worker线程处理若干个socket,接受请求转给各种handler处理,response再经由worker线程发送回去.
  • 总结起来就是个半同步半异步模型.

Kafka的网络层模型实现

  • 虽然kafka用scala实现,但里面也用了大量的java类, 这部分主要是用了NIO
  • 主要实现文件:core/src/main/scal/kafka/network/SocketServer.scala,里面包括了SocketServer, Acceptor, Processor等;
  • 数据传输层实现:clients/src/main/java/org/apache/kafka/common/network,里面包括了Channel,TransportLayer,Authenticator等.
  • 下一篇咱们开始进入到具体的实现...
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.12.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kafka的网络层模型概述
  • Kafka的网络层模型实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档