1. 背景1.1. 原生NIO类库的复杂性在开始本文之前,我先讲一件自己亲身经历的事:大约在2011年的时候,周边的两个业务团队同时进行新版本开发,他们都需要基于NIO非阻塞特性构建高性能、异步和高可靠性的底层通信框架。当时两个项目组的设计师都咨询了我的意见,在了解了两个项目团队的NIO编程经验和现...
分类:
Web程序 时间:
2015-02-06 12:39:17
阅读次数:
161
示例 : wikit http://netty.io/wiki/index.html书 : netty in action http://blog.csdn.net/abc_key/article/category/2374891 netty 权限指南nio1.缓冲区 Buffer java 基本类...
分类:
Web程序 时间:
2015-02-04 18:33:43
阅读次数:
214
数据结构学的烂,看这个类比较的吃力PoolChunk主要使用long allocate(int normCapacity) 在buffer pool中分配buffer。这个类有几个重要的概念:page:是chunk中内存分配的最小单元,chunk:表示一系列的page, 一个chunk的大小chun...
分类:
Web程序 时间:
2015-02-03 00:38:45
阅读次数:
282
看了PoolChunk源码,好多位操作,对这些位操作理解不到位,看起来很是吃力,不知道为什么要这么做,但是是性能更好1:大小为2 的冥的数加1 怎么操作 size^1;2: <=比较 mask=~(pageSize-1) num & mask !=0 那么num <mask4:两个数互补 ...
分类:
Web程序 时间:
2015-01-29 23:54:05
阅读次数:
284
Netty作为一个高性能的异步网络开发框架,可以作为各种服务的开发框架。前段时间的一个项目涉及到硬件设备实时数据的采集,采用Netty作为采集服务的实现框架,同时使用RabbitMQ作为采集服务和各个其他模块的通信消息队列,整个服务框架图如下:将业务代码和实际协议解析部分的代码抽离,得到以上一个简单...
分类:
Web程序 时间:
2015-01-29 00:05:20
阅读次数:
247
转http://iteches.com/archives/65193Netty4带来一个与众不同的特点是其ByteBuf的重现实现,老实说,java.nio.ByteBuf是我用得很不爽的一个API,相比之下,通过维护两个独立的读写指针,io.netty.buffer.ByteBuf要简单不少,也会...
分类:
Web程序 时间:
2015-01-27 21:49:51
阅读次数:
284
netty的buffer引入了缓冲池。该缓冲池实现使用了jemalloc的思想。为了看懂这块代码学写了内容分配的知识。这里讲的内存分配是堆的内存分配,其他内容本文不会涉及。内存分配是面向虚拟内存的而言的,以页为单位进行管理的,页的大小一般为4kb,当在堆里创建一个对象时(小于4kb),会分配一个页,...
分类:
其他好文 时间:
2015-01-27 21:39:38
阅读次数:
227
netty的引用计数文档看http://netty.io/wiki/reference-counted-objects.html为什么会引用引用计数呢,Java中不是有gc线程帮我们回收对象吗?我个人理解如下1:netty为了实现zero copy使用了Direct Buffer,该buffer从N...
分类:
Web程序 时间:
2015-01-25 23:47:56
阅读次数:
246
本文参考Doug Lea的Scalable IO in Java.网络服务随着网络服务的越来越多,我们对网络服务的性能有了更高的要求,提供一个高性能,稳定的web服务是一件很麻烦的事情,所以有了netty框架帮我们完成。我们对各种各样的网络服务进行抽象,得到最基本的业务流程:1:读取请求信息2:对请...
分类:
其他好文 时间:
2015-01-21 01:17:30
阅读次数:
322
Netty作为一个高性能的异步网络开发框架,可以作为各种服务的开发框架。前段时间的一个项目涉及到硬件设备实时数据的采集,采用Netty作为采集服务的实现框架,同时使用RabbitMQ作为采集服务和各个其他模块的通信消息队列,整个服务框架图如下:1、设备TCP消息解析:NettyMQServer和采集...
分类:
Web程序 时间:
2015-01-17 22:01:39
阅读次数:
287