kafka Server启动分析

1,启动入口

1)bin/kafka-server-start.sh config/server-1.properties &
2)启动类Kafka.scala的main方法。
解析配置文件
构造KafkaServerStartable对象

image.png

3)初始化组件
创建zk客户端cluster_id和brokerId处理,启动定时任务线程池
image.png

4)创建并启动socket服务器,处理客户端socket连接。Create and start the socket server acceptor threads
image.png

2,配置文件简介

1)
image.png

2)brokerStates


image.png

3,SocketServer重点类

1)RequestChannel由ArrayBlockingQueue的requestQueue和一个ConcurrentHashMap的processors构成。

image.png

2)socketServer.startUp时,会创建Acceptor和processors
createAcceptorAndProcessors
通过listeners=PLAINTEXT://:9091创建Acceptor
通过num.network.threads=3 创建3个Processor
把processor加入SocketServer.RequestChannelrequestChannel.addProcessor(processor)
SocketServer的processors放入Processor。
image.png

3)将processors加入到Acceptor中,启动多个kafka-network-thread线程。
image.png

image.png

4,kafka通信机制

1)SocketServer处理过程

image.png

1个Acceptor负责接受客户端请求,N个Processor线程负责读写数据,M个Handler来处理业务逻辑。在Acceptor和Processor,Processor和Handler之间都有队列来缓冲请求。

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

推荐阅读更多精彩内容

  • kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...
    时待吾阅读 5,375评论 1 15
  • 文章摘要:很多人喜欢把RocketMQ与Kafka做对比,其实这两款消息队列的网络通信层还是比较相似的,本文就为大...
    癫狂侠阅读 8,168评论 0 13
  • 许久不写字,发现写作水平严重退步啊~~~ 以前也是个文艺青年,现在也要写出诗意的代码啊~ 没找到以前写的诗,咱们还...
    扫帚的影子阅读 3,265评论 2 8
  • kafka server启动后,会监听一些端口,然后开始接收请求进行日常的工作。与请求处理相关的组件有 Socke...
    疯狂的哈丘阅读 1,309评论 0 0
  • 浮动 所谓浮动指的是使元素脱离原来的文本流,在父元素中浮动起来。浮动使用float属性。可选值:none:不浮动l...
    HDhandi阅读 268评论 0 0