博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kakfa揭秘 Day5 SocketServer下的NIO
阅读量:6968 次
发布时间:2019-06-27

本文共 911 字,大约阅读时间需要 3 分钟。

Kakfa揭秘 Day5

SocketServer下的NIO

整个Kafka底层都是基于NIO来进行开发的,这种消息机制可以达到弱耦合的效果,同时在磁盘有很多数据时,会非常的高效,在gc方面有非常大的优势,而socketServer就是其中的代表。

今天会分析下socketServer,分析下其中三个核心对象 acceptor、processor、handler

概述

首先让我们看下socketServer的说明:

Snip20160630_80

这是一个采用Java NIO开发的socket Server,有一个acceptor线程去处理新的连接请求,一个acceptor会接收很多客户的连接请求,里面有N个processor提供并发度,每个processor依附一个线程,线程里有自己的selector,会读取NIO socket通讯的请求,交给handler处理,handler处理完成后把结果返回给客户端。

从在构造方法,也可以看到,生成了一个acceptor和n个processor。

Snip20160630_81

Acceptor

Acceptor 继承自AbstractServerThread,是个Runnable对象,在接收客户端请求后,会交给processor来进行处理。

Snip20160630_82

关键是run方法,如果有连接进来的话,会分配processor进行处理,分配算法用的是round robin的方式。

Snip20160630_85

Acceptor主要是会建立一个ServerSocketChannel,当select方法返回时,就表示注册的事件发生了。

Snip20160630_86

Processor

processor的作用相当于一个路由器。

Snip20160630_87

在run时不断循环,读取客户端的数据,就是一个消息循环器的多线程编程,具体的操作是交给handler的。

Snip20160630_88

processor读取完数据之后,会封装为一个request对象,发送到queue中,

Snip20160630_91

如果queue满了的话,handler会从request queue获取数据,进行处理。

Snip20160630_89

欲知后事如何,且听下回分解!

DT大数据每天晚上20:00YY频道现场授课频道68917580

转载于:https://www.cnblogs.com/dt-zhw/p/5631103.html

你可能感兴趣的文章
JFreeChart绘制保存为图片
查看>>
GDI+ 学习记录(25): 变换 - Transform
查看>>
允许telnet 通过root用户进行访问
查看>>
WinAPI: waveOutGetNumDevs - 获取波形输出设备的数目
查看>>
一个Hadoop管理员的职责(翻译)
查看>>
mysql主从复制架构及实现
查看>>
Couchbase学习笔记(3)——.NET应用入门
查看>>
temp
查看>>
【分享】Java程序获取本机ip,mac,os名称,版本等
查看>>
nginx中没有绑定域名(ip访问)的处理办法
查看>>
单元测试工具——JUnit
查看>>
AVI RIFF 文件参考手册
查看>>
input添加星号*
查看>>
mysql将查询结果插入新表
查看>>
PXE+HTTP+TFP+DHCP自动化部署
查看>>
源码包编译安装之--实战
查看>>
powershell 批量查询导出 组织内OU
查看>>
我的友情链接
查看>>
昨日终于考完路考了
查看>>
转:解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录...
查看>>