getty 1.3 版本发布,兼容 JDK1.7、Android 5.0 以上版本

2020年03月30日

本次更新

  1. 添加对java nio1的支持。
  2. 部分网友表示希望兼容更低jdk版本,特别是Android 5.0以上版本的支持(Getty 1.3以下版本使用了部分jdk8的特征,在安卓8.0以下不支持)。本次更新主要是对在JDK1.8以下环境以及Android8.0 以下环境下使用做了兼容。
  3. 优化了部分代码,提高了稳定性。

getty

一个完全基于java 实现的高性能网络框架。

简介

1、getty是完全基于java nio封装的高性能网络框架。

2、getty可在项目中使用,也可以用于帮助你更好的学习java nio

3、getty完全开源,基于 Apache License 2.0 开源协议。

4、getty的目的是为了降低对java socket nio的使用成本,帮助提高工作效率。

getty的特点:

1、完全基于java nio,基于nio1以及nio2(aio)做了实现,整体代码代码结构很轻量,也非常简单易用。

2、借鉴了netty和其他框架的部分优秀设计思想,如责任链、内存池化、零拷贝等优秀的设计模式。

3、getty提供了常用的多个插件(String编解码器,protobuf编解码器器,心跳超时处理器、ip过滤,websocket插件等)满足大部分开发场景。

4、getty可直接在安卓环境中使用(兼容Android5.0以上版本)

5、getty同时提供了TCP和UDP的支持,并且使用方式几乎一致,大大提高了易用性。

5、getty内置处理器支持使用过程中的热拔插设计,各处理器可以灵活组合。

6、框架拥有非常好的拓展性,处理器拓展也非常简单,大大降低了开发成本。

7、高效和稳定性能,经过多次测试,同时发送百万消息的耗时居然比netty还好。

相同的条件下发送百万条消息,getty 使用nio2模式耗时500毫秒左右,使用nio1模式耗时1.5秒左右,netty耗时2.5秒左右(没有黑netty的意思,也许是netty做了很多其他的处理)。

8、使用过程与netty非常相似,只要有netty是使用经验,使用getty几乎不需要额外学习。

 

更多详情与文档

更多详情,请点击 wiki文档 :跳转到wiki

提供bug反馈或建议

create by

gogym

展开阅读全文
7 收藏
分享
加载中
最新评论 (14)
async并发数超过50才会体现优势,你百万消息怎么发送的?
2020-03-31 08:01
0
回复
举报
优势跟发送百万消息,好像关系不是很大,单线程也能发送百万消息。50个线程也能发送百万消息。我的理解不知对不对。
2020-03-31 09:20
0
回复
举报
我只是好奇你的测试细节,怎么百万消息得到的这个结果
2020-03-31 10:02
0
回复
举报
本机到本机, 每个消息1字节, 接收端直接丢弃, 发送端只异步发不等待. 这样的条件下单线程发送速度也快得很.
2020-03-31 10:05
0
回复
举报
单点对单点,并且不ack,这个模型已经算挺可以了
2020-03-31 10:13
0
回复
举报
需要注意的是,这里的发送消息只是框架的测试,不含任何业务处理,就如前面朋友说的,只是单机,单框架内的收发,才达到这个量,而ack等属于业务范畴,如果说要考虑各种消息高可用,消息传播消耗等等,那是达不到百万消息/s的。即使强如netty,加上了业务,也达不到这种程度。
2020-03-31 10:23
0
回复
举报
ack与业务无关,参考kafka producer ack
2020-03-31 10:25
0
回复
举报
咱们不纠结这个,getty的定位跟netty一样,只是单纯网络通讯框架,不含任何关于消息应答,消息处理等后续业务相关的东西。如果有兴趣,也可以关注一下我前几天开源的另外一个框架gim。那个框架就有ack,集群这些东西了。
2020-03-31 10:31
0
回复
举报
每个NioChannel都开个线程池处理读和一个线程处理写?
2020-03-30 11:42
0
回复
举报
是的,读和写是在不同线程处理的。这样读写的效率是最高的
2020-03-30 11:44
0
回复
举报
那nio提供的多路复用完全没意义了, 没法支持大规模连接.
如果连接数少,还不如直接两个线程阻塞读写简单高效呢.
2020-03-30 11:53
0
回复
举报
我认为你说的是有道理的,但getty的多线程设计并不影响多路复用,getty只是让不同的客户端连接需要处理的事件在接收后分别在不同的线程中完成后续的处理,而不需等待完全处理完才处理下一个事件,以此提高getty本身处理的效率。当然当大规模连接时可能会造成不必要的线程消耗,这点是值得getty后续考虑的。感谢你的建议
2020-03-30 12:32
0
回复
举报
"getty 使用nio2模式耗时500毫秒左右,使用nio1模式耗时1.5秒左右"
看来是在windows下测的, Linux下nio2不会比nio1性能好.
2020-03-30 10:41
0
回复
举报
在目前linux内核机制下,你说的是有可能的,但差距不会太大。
2020-03-30 11:45
0
回复
举报
更多评论
14 评论
7 收藏
分享
返回顶部
顶部