实时消息的推送,PC端的推送技术可以使用socket建立一个长连接来实现。传统的web服务都是客户端发出请求,服务端给出响应。但是现在直观的要求是允许特定时间内在没有客户端发起请求的情况下服务端主动推送消息到客户端。有哪些可以实现web消息推送的技术:不断地轮询(俗称“拉”,polling)是获取实...
分类:
Web程序 时间:
2015-02-08 15:18:16
阅读次数:
186
1. 背景1.1. 惊人的性能数据最近一个圈内朋友告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到...
分类:
Web程序 时间:
2015-02-08 01:37:04
阅读次数:
396
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