apache kafka系列之源码分析走读-server端网络架构分析
2014-08-08 18:07
295 查看
笔者今天分析一下kafka网络架构,俗话说人无好的胫骨,就没有好的身体,建筑没有扎实可靠的结构框架,就不会屹立不倒。同样的服务端程序没有好的网络架构,其性能就会受到极大影响,其他方面再怎么优化,也会受限于此,那kafka网络架构是怎样的呢,它不是用的现今流行的netty,mina的高性能网络架构,而是自己基于java nio开发的。
kafka网络架构图如下:
Kafka是典型SEDA(多阶段事务驱动模型)
这种架构正好符合Kafka设计要求,高吞吐量高性能要求,kafka客户端(producer和consuemr)与broker一般都是建立长连接。
1.对于broker来说,客户端连接数量有限,不会频繁新建大量连接。因此一个Acceptor thread线程处理新建连接绰绰有余。
2.Kafka高吐吞量,则要求broker接收和发送数据必须快速,因此用proccssor thread线程池处理,并把读取客户端数据转交给缓冲区,不会导致客户端请求大量堆积。
3.Kafka磁盘操作比较频繁会且有io阻塞或等待,IO Thread线程数量一般设置为proccssor thread num两倍,可以根据运行环境需要进行调节。
总结
IO处理不同阶段耗时和cpu消耗不同,因此需要配置不同线程。
kafka网络架构图如下:
Kafka是典型SEDA(多阶段事务驱动模型)
这种架构正好符合Kafka设计要求,高吞吐量高性能要求,kafka客户端(producer和consuemr)与broker一般都是建立长连接。
1.对于broker来说,客户端连接数量有限,不会频繁新建大量连接。因此一个Acceptor thread线程处理新建连接绰绰有余。
2.Kafka高吐吞量,则要求broker接收和发送数据必须快速,因此用proccssor thread线程池处理,并把读取客户端数据转交给缓冲区,不会导致客户端请求大量堆积。
3.Kafka磁盘操作比较频繁会且有io阻塞或等待,IO Thread线程数量一般设置为proccssor thread num两倍,可以根据运行环境需要进行调节。
总结
IO处理不同阶段耗时和cpu消耗不同,因此需要配置不同线程。
相关文章推荐
- apache kafka系列之源码分析走读-server端网络架构分析
- apache kafka系列之源码分析走读-SocketServer分析
- apache kafka系列之源码分析走读-kafkaApi详解
- apache kafka系列之源码分析走读-kafka内部模块分析
- apache kafka系列之源码分析走读-kafka内部模块分析
- apache kafka系列之源码分析走读-kafkaApi详解
- 安卓MonkeyRunner源码分析之工作原理架构图及系列集合
- mongoose源码分析系列之server_data
- 【源码分析】redis网络通讯并发架构简介
- tornado源码分析系列 [网络层 IOLoop类] 优秀系列文章可以看看
- 网络服务器开发框架spserver源码分析 (二)
- Jquery源码分析系列(1)--Jquery整体架构
- gdb和gdbserver源码架构分析
- jQuery-1.9.1源码分析系列(一)整体架构
- jQuery-1.9.1源码分析系列(一)整体架构
- UiAutomator系列——Appium Server源码分析之作为Bootstrap客户端(011)
- Redis源码分析系列七:initServer下
- 优秀的轻量级网络开发框架spserver源码分析(二)
- Redis源码分析系列六:initserver中
- apache kafka源码分析走读-Producer分析