这个项目的最新代码在:https://git.oschina.net/tywo45/t-io
-
t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、内置功能丰富、核心代码只有4000多行的即时通讯框架。字母 t 取talent(天才)的首字母,也可以理解为**"特快",同时也是作者姓氏**的首字母。
-
IM、实时监控、推送服务(已内置API)、RPC、游戏、物联网等实时通讯类型的场景
-
- 极简洁清晰易懂的API: 没有生涩难懂的新概念,只需花上30分钟学习helloworld就能很好地掌握并实现一个性能极好的即时通讯应用
- 极震撼的性能
- 轻松支持百万级tcp长连接,彻底甩开业界C1000K烦恼(centos 单CPU4核 16G 测试数据: 17.82万长连接,只消耗800M内存,CPU毫无压力)
- 最高时,每秒可以收发500万条消息,约165M(windows10、i7、8g、固态硬盘、群聊场景、服务器和客户机在同一台机器)
- 极亲民的内置功能
- 框架层面帮你检测心跳(tcp server)、发送心跳(tcp client)
- 框架层面支持自动重连(可设置重连间隔时间和重连次数)
- 框架层面支持同步消息(消息发送后,等到响应消息再往下执行)
- 框架层面支持绑定userid(用于用户关联)、绑定groupid(用于群聊)
- 内置各项统计功能----接受过多少连接、关闭过多少连接、已发送的消息数、已接收的消息数、当前是多少正常连接、当前多少断开的连接等。
-
-
-
-
- 服务器一台:centos6.x, 虚拟机,一个4核E5 CPU,内存16G
- 客户机11台:windows,硬件没什么特别要求
-
-
修改centos操作系统参数,使之支持更大的长连接数,细节略(可百度之)
-
在centos上运行 "bin/start-im-server.sh" 启动im server
-
修改dist\examples\im\client\config\app.conf,参考下面的值,注意把server指向centos的ip,
#服务器 server=127.0.0.1 #服务器port port=9321 #连接多少个连接到服务器 client.count=16200 #进入到哪个组 group=g #聊天消息发的内容 chat.content=he #一次发多少条(这个数字不要太大) send.count=1
-
把dist\examples\im\client拷到各客户机并运行"bin/start-im-client.bat"
-
-
- 11个客户机 ,每个客户机连16200个TCP连接,服务器一共承受17.82万TCP长连接,服务器内存只消耗800M,CPU使用率极低
- 根据测试结果初步推测:t-io支持200万长连接没什么问题,各位有条件的可以测测。
-
-
学习t-io的最好方式,是从helloworld的例子入手,顺藤摸瓜阅读t-io的源代码,已经有很多人阅读过t-io的源代码,譬如j-net的作者、hutool的作者,并且反馈良好,源代码毕竟只有4000多行,读读无妨!如果懒于阅读代码,就按照下面的步骤来学习吧!
-
- 安装1.7以上版本的jdk及maven(已安装的略过此步骤)
- 从https://git.oschina.net/tywo45/t-io处下载源代码(已下载的略过此步骤)
- 双击 "bin/install.bat" 安装t-io到本地maven仓库(此步骤可省略)
- 双击 "bin/start-im-server.bat" 启动im server
- 双击 "bin/start-im-client.bat" 启动im client
- 对着界面把玩几下,测试一把性能数据,对t-io形成感性认识 客户端界面 服务器端界面(这里显示的都是一些统计信息,方便用户了解服务器运作情况)
-
├─bin----------------脚本目录(方便快速操作) │ clean.bat----------------清空所有工程的target目录 │ clean.sh----------------清空所有工程的target目录 │ deploy.bat----------------作者用来发布到maven中心仓库的脚本,放出来主要是供大家参考 │ deploy.sh----------------作者用来发布到maven中心仓库的脚本,放出来主要是供大家参考 │ dist-examples.bat----------------把所有的例子打包到dist目录,方便用户直接执行 │ dist-examples.sh----------------把所有的例子打包到dist目录,方便用户直接执行 │ install.bat----------------安装工程到本地仓库 │ install.sh----------------安装工程到本地仓库 │ start-helloworld-client.bat----------------启动helloworld的客户端 │ start-helloworld-client.sh----------------启动helloworld的客户端 │ start-helloworld-server.bat----------------启动helloworld的服务端 │ start-helloworld-server.sh----------------启动helloworld的服务端 │ start-im-client.bat----------------启动im的客户端 │ start-im-client.sh----------------启动im的客户端 │ start-im-server.bat----------------启动im的服务端 │ start-im-server.sh----------------启动im的服务端 │ start-im-simple-client.bat----------------启动简化版协议的im的客户端 │ start-im-simple-client.sh----------------启动简化版协议的im的客户端 │ start-im-simple-server.bat----------------启动简化版协议的im的服务端 │ start-im-simple-server.sh----------------启动简化版协议的im的服务端 │ start-showcase-client.bat----------------启动showcase的客户端 │ start-showcase-client.sh----------------启动showcase的客户端 │ start-showcase-server.bat----------------启动showcase的服务端 │ start-showcase-server.sh----------------启动showcase的服务端 ├─docs │ │ │ ├─blog----------------本人博客草稿(大部分博客是在线编辑,所以此处就没有了) │ │ │ ├─performance----------------一些性能测试截图(随着版本的增多,有些截图已经过时,但仍保留) │ │ │ ├─release----------------新版本发布时的log │ ├─dist----------------成品 │ └─examples----------------用t-io写的例子成品 │ ├─helloworld │ │ ├─client----------------helloworld的客户端 │ │ └─server----------------helloworld的服务端 │ ├─im │ │ ├─client----------------im的客户端 │ │ └─server----------------im的服务端 │ │─im-simple │ │ ├─client----------------简化版协议的im的客户端 │ │ └─server----------------简化版协议的im的服务端 │ └─showcase │ ├─client----------------showcase的客户端 │ └─server----------------showcase的服务端 └─src ├─core----------------t-io的核心代码 ├─example----------------用t-io写的例子的源代码 │ ├─parent----------------例子的maven parent │ ├─helloworld----------------helloworld的源代码 │ │ ├─client │ │ ├─common │ │ └─server │ ├─im----------------im的源代码 │ │ ├─client │ │ ├─common │ │ └─server │ ├─im-simple----------------简化版协议的im的源代码 │ │ ├─client │ │ ├─common │ │ └─server │ └─showcase----------------showcase的源代码 │ ├─client │ ├─common │ └─server └─parent----------------maven工程的parent
-
传送门: 30分钟极速入门
-
代码正在开发中,文档暂未开始... ...尽量在2017年4月30号前提供,在此之前有问题可以和作者沟通。有什么需求可以在这里反馈给我: showcase需求反馈
-
-
- 某网管系统(管理数百台刀片服务器的系统)
- 某直播平台(视频直播+聊天)
- 某智能设备检测系统(数据采集)
- 某物联网系统(服务端)
- 深圳市某在线技术发展有限公司(中银联投资):某网络安全运营支撑平台
- redisx
- talent_dubbo
- 某移动省公司CRM业务受理消息采集平台(数据采集)
-
- t-io是将多线程技巧运用到极致的框架,所以一旦您参与到本项目,将会从本项目中学到很多关于多线程的技巧。
- 提交Issue 给项目提出有意义的新需求,或是帮项目发现BUG,或是上传你本地测试的一些数据让作者参考以便进一步优化。
- 点击右上方的 Star 以便随时掌握本项目的动态