资 源 简 介
2014/1/3
1.0.11 aplha 发布
update:
1.修改内存分配策略,降低mem lack时的分配新的heap内存的频率,优先使用池化内存,有效控制服务端资源使用率,降低oom风险
2.修正发送mem lack时,protobuf 编码失败的bug
3.修改protobuf协议,于netty protobuf协议兼容
2013/11/13
1.0.9 发布
update:
1.修正内存池释放bug
2.内存池调整为多个processor使用一个
3.解码移动到worker线程中进行处理,tps上升
4.增强性能,在阻塞同步通信下,性能增强30%tps
1169byte消息,响应大小137byte,protobuf编解码,单tcp连接双工的非阻塞同步通信平均tps 97800 ,千兆网卡,平均112MB
1169byte消息,响应大小137byte,protobuf编解码,单tcp连接,客户端阻塞同步通信 平均tps 3900 ,千兆网卡流量4.7MB
测试环境:双核虚拟机
设计初衷是提供方便易用,且高效率的nio框架,一部分实现上参考了mina。还包括线程池,编解码,内存池等机制,以便于开发高性能tcp程序。文档后续会慢慢的补上。
整体实现上尽量少的使用锁,避免cpu浪费。
整体框架提供了服务线程池,对于一个连接来讲,这个连接的事件将会在线程池中执行,不过这个过程保证是顺序执行的,例如对于一个连接,在差不多同时的时间接收到了两个包,那么,我们可以认为,在第一次接受事件未执行完,第二个事件不会被执行,即这两个事件不是分别被发送到两条线程中执行,可以认为是被串行化到同一条线程中(注意:此处一条线程,并不是真的在同一条线程中执行,这两个事件可能在不同线程中,只不过框架严格保证执行的先后顺序了,所以对于ThreadLocal变量的使用,是不安全的)。由于线程池的添加,我们在开过程中,无需再考虑业务层消耗,直接按事件触发式就可以了,也不用再将数据包投递到另外的线程中。使用方式参见TestProtocolClient,TestProtocolServer
框架还提供了完全不使用线程池的方式,请参见TestClient,TestSer