t-io 1.7.1 发布:不仅仅是百万级 TCP 长连接框架

talent-tan
 talent-tan
发布于 2017年07月03日
收藏 122

t-io 目标提升

不仅仅是百万级TCP长连接框架,这是t-io的第三个目标了,前两个都已实现。 目标先定下来,逐步实现,当年吹过的牛,大都含着泪完成了

  • 要往短连接方面扩展

  • 支持更多的传输层协议

  • 发展t-io生态

新版本说明

  • 异步发送切换为阻塞发送只需要把Aio.sendXxx()改成Aio.bSendXxx()即可,接近零成本

  • 提供了分页获取连接列表的功能(特别适合im应用中的用户列表场景)

  • 用tio实现了部分httpserver协议,并且附带了一个类似springmvc用法的路由功能----根据请求path找相应方法

  • 用tio实现了websocket协议(pong协议部分,个人觉得是协议设计得不合理,所以改由客户端来维护心跳),并且附带了一个类似springmvc用法的路由功能----根据自定义消息体的某个字段找相应方法

  • t-io生态圈项目成立,工程见下图


    目前已经放置tio-httpserver和http-websocket,下图是作者亲测的ab test数据(作者本人在性能测试方向比较菜,看到这个测试结果,不确定是ab在测t-io,还是t-io在测ab),有兴趣和有质疑的可以测试验证,测试步骤在 tio httpserver ab test


    运行bin/start-http-server.bat文件便可启动基于tio的httpserver,接着用chrome访问http://127.0.0.1:9527/,就能看到下面这样的界面 


  • 添加了大量更简洁的API 具体见下图红框部分

  • voovan作者发布了t-io的ab test结果,引发了t-io对短连接场景的初步支持

  • bug-fix: 对方关闭连接,服务器检测到后在关闭连接前应该停止监听IO事件

  • t-io 2M小站被DDos群攻击事件影响,t-io目前分成了自用版社区版自用版仅仅是自带了部分防攻击能力而已

最新maven坐标

<dependency>
    <groupId>org.t-io</groupId>
    <artifactId>tio-core</artifactId>
    <version>1.7.1.v20170630-RELEASE</version>
</dependency>

本版本鸣谢

t-io官方澄清

  • t-io官方主群不交保护费就会被踢出群
    物以类聚,人以群分,群里有一群优秀的开源作者譬如jf、hutool、actframework、voovan、baseio、jnet、cobar等创始人、技术主管、创业老板,还有OSC官方人员亲临监场,谣言止于智者, t-io主群确实在短短一个月内清理过约400人,部分用户想再次入群被拒绝,目的仅仅是为了逐步实行群实名制,用以保证t-io用户群体的品德和信用质量。

  • t-io差评会被删除
    请自行验证:https://www.oschina.net/p/t-io/comments,如果确有此事,请知会红薯家的测试

  • t-io是netty的一个壳
    请自行查证:https://git.oschina.net/tywo45/t-io

  • t-io收费传闻
    t-io项目本身不会收费,协议也只会是LGPL,任何人都可以用t-io在LGPL协议规则下开发出商业产品

  • t-io只适合小白级用户
    小白用户容易上手并且能做到生产环境中还极其稳定,反而说明框架健壮性(保证程序运行稳定)和抽象性(保证API容易使用)好,目前有不少用t-io实现的各类项目,譬如IM项目、游戏项目、物联网项目、http服务器(已经实现主要功能)、websocket服务器(已经完整实现)等,相信这些根本不是某无名公司“技术主管”口中小白能玩得转的

  • t-io更多澄清
    有些澄清,需要摆出大量证据,秉承息事宁人的态度,不再一一澄清和旧事重提,这里也就点到为止。

t-io特别说明

  • t-io对用户品行要求比较高,已经有不少用户被列入不支持名单了,譬如对作者呼来喝去、提着小白的问题装着高手的态度、当面恭维背后各种诋毁的,所以对自己品行没自信的慎用t-io

  • t-io对OSC社区口碑较好的用户会提供全方位的免费技术支持。

  • 所以最后的结果是爱t-io的人会越来越爱t-io进而持续享受着t-io提供的各种技术壁垒成果,恨t-io的人会越来越恨t-io进而路转黑。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:t-io 1.7.1 发布:不仅仅是百万级 TCP 长连接框架
资讯来源:原创
加载中

精彩评论

jekywong
jekywong
-c 才50,还-k了,才5万qps,只能说渣渣
Eriloan
Eriloan
首先感谢作者,这确实是一个不错的东东。

但是每当我到t-io的说明后,我就有一种感觉,很是不自在。真的!
shuaia
shuaia
百万长连接再加个心跳程序,,,不做业务的情况下,你的网络开销和cpu开销是个啥样?我觉得作者进入了一个误区,支持百万连接能说明什么问题呢?内存大还是框架牛逼?你试试分别用netty和tio写个echoserver,分析下两者差别多大?再试试百万连接?
飞过海家
飞过海家
感谢开源,开源应该要有一种拥抱世界的想法吧。
有的人愿意喷就让他喷去,但是在你的主页写这些情绪化的东西,让人觉得很小家子气。
jekywong
jekywong

引用来自“jekywong”的评论

-c 才50,还-k了,才5万qps,只能说渣渣

引用来自“小99”的评论

请发出详细截图,不然别瞎bb
ab -c 10000 -n 500000 -k http://localhost:8888/

Server Software:
Server Hostname: localhost
Server Port: 8888

Document Path: /
Document Length: 5 bytes

Concurrency Level: 10000
Time taken for tests: 4.405 seconds
Complete requests: 500000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 500000
Total transferred: 72500000 bytes
HTML transferred: 2500000 bytes
Requests per second: 113505.03 [#/sec] (mean)
Time per request: 88.102 [ms] (mean)
Time per request: 0.009 [ms] (mean, across all concurrent requests)
Transfer rate: 16072.49 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 7 83.8 0 3052
Processing: 5 79 32.3 72 892
Waiting: 0 79 32.3 72 892
Total: 5 85 94.1 73 3260

最新评论(67

大哥成66
大哥成66
加油
精灵007
精灵007
我第一个项目用在短连接场景😊
陈某锋
陈某锋
感觉作者有点 极端了,那么多优秀开原没有这么言辞犀利的,没必要,让别人讨论,有好有差,很正常,linux都有人骂垃圾,不也发展好好的。开原就开原了别整这么多条条框框的,又不是没有替代品。
二两棉
二两棉
前面还仔细看了看,看完“t-io官方澄清”感觉可以关闭页面了。。。
talent-tan
talent-tan

引用来自“安宇雨”的评论

感谢开源。。喷子驱散。。有空测试一下。。
如果真的测试了,希望辛苦一下,把结果反馈给我(测试环境,场景,数据等),大家需要开源,开源也需要大家!我想收集各种测试数据,然后分析分析,做出更好的作品分享给大家!
talent-tan
talent-tan
看到大家的评论,讨论比较多的还是ab test嘛 ---- 因公司项目急需,花一天多时间写了http server作为内部API调用,随手用ab测试了一下,测试数据仅供初步参考,和voovan作者有过简短沟通,双方也没觉得性能也没差到哪去,最后还是很期待大家的测试的结果的。说一下voovan,这是和t-io是有点相似的作品,讨厌t-io的观众可以尝试去支持一下voovan,也是国产的,个人觉得还不错。

f
freezingsky
开源精神是必须要支持的,总不能每天挂着Netty或者Mina之类的就去嘲讽别人的努力,作为开发者的素养来说,都是不应该的。对于为开源做贡献的,我都是点赞!加油!
勇敢的贼心
勇敢的贼心
赞同作者的态度,但是作者一而再再而三的说到“品行、"好人"、“坏人”,感觉有点莫名的反感。
因为我们都不是审判官。
jarchan
jarchan
tomcat配置优化过一点,试下来和t-io差不多

<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="1000"
minSpareThreads="1000"
processorCache="1000"
acceptCount="1000"
socket.appReadBufSize="512"
socket.appWriteBufSize="512"
/>

17:31 $ ab -c 50 -n 200000 -k http://localhost:8080/examples/servlets/servlet/HelloWorldExample

Concurrency Level: 50
Time taken for tests: 4.399 seconds
Complete requests: 200000
Failed requests: 0
Keep-Alive requests: 198022
Total transferred: 29790110 bytes
HTML transferred: 2400000 bytes
Requests per second: 45460.30 [#/sec] (mean)
Time per request: 1.100 [ms] (mean)
Time per request: 0.022 [ms] (mean, across all concurrent requests)
Transfer rate: 6612.63 [Kbytes/sec] received
...
星辰大海88
星辰大海88

引用来自“jamesmo”的评论

每秒才5w,用 redis 好了
回复@jamesmo : nginx+lua 5W 也轻轻松松
返回顶部
顶部