Kafka源码分析-网络层-1

  • 在享用了这么久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等.
  • 下一篇咱们开始进入到具体的实现...

Kafka源码分析-网络层-2

Kafka源码分析-汇总
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 许久不写字,发现写作水平严重退步啊~~~ 以前也是个文艺青年,现在也要写出诗意的代码啊~ 没找到以前写的诗,咱们还...
    扫帚的影子阅读 3,263评论 2 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...
    时待吾阅读 5,373评论 1 15
  • ** 今天看了一下kafka官网,尝试着在自己电脑上安装和配置,然后学一下官方document。** Introd...
    RainChang阅读 5,053评论 1 30
  • 与闺蜜小聚,快哉!快乐虽简单,只要我们在一起
    恭华阅读 179评论 0 0