利用NIO和线程池极大提升网管通讯模块的消息吞吐量

传统模式:
[img]http://dl.iteye.com/upload/attachment/408228/92ea4afd-c45a-3aed-944b-b163dd760e67.jpg[/img]


NIO + 线程池模式:
[img]http://dl.iteye.com/upload/attachment/408230/c06aaae5-fdbc-30d1-892e-0a41bb54c6c5.jpg[/img]

[b]优势:[/b]
1、 减少了接收的线程数。
2、 利用线程池技术控制了处理线程的数量。
3、 从测试数据来看,消息的吞吐量是极大的提升,从原来的1000条/秒提升到现在的10W条/秒。

[b]注意点:[/b]
1、 线程池技术时,要自己写许多代码来控制并发安全。
2、 NIO有一些BUG,列举如下:
1、 socketchannel.close()有时候关不掉socket,需要多次关闭
2、 selector在注销和注册监听时,有时候不能立刻反映到程序中,需要自己在程序中适时的wakeup一下。


[b]应裴小星的要求,把我以前写的一个用nio收发消息的demo传上来(见src.zip)[/b]:入口程序:com.talent.NioClient(直接运行这个类就可以了)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值