Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
tywo45 authored May 27, 2017
1 parent f742601 commit 86c4f18
Showing 1 changed file with 31 additions and 16 deletions.
47 changes: 31 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
## [最新代码在码云,欢迎兄弟们过来](https://git.oschina.net/tywo45/t-io)
## [最新代码在码云,因为码云可以用SVN等其它功能](https://git.oschina.net/tywo45/t-io)


## **t-io: 百万级TCP长连接即时通讯框架,让天下没有难开发的即时通讯**

t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、**将多线程运用到极致**、内置功能丰富、核心代码只有3000多行(2017年05月13号统计)的即时通讯框架(广义上的即时通讯,并非指im),字母 t 寓意talent。
- t-io是基于jdk aio实现的易学易用、稳定、性能强悍、**将多线程运用到极致**、内置功能丰富、核心代码只有3000多行(2017年05月13号统计)的即时通讯框架(广义上的即时通讯,并非指im),字母 t 寓意talent。
- 同类型的框架还有[voovan](https://www.oschina.net/p/voovan)[netty](https://www.oschina.net/p/netty)[mina](https://www.oschina.net/p/mina)[baseio](https://git.oschina.net/generallycloud/baseio)等,不喜欢t-io的可以去尝试了解这几个,t-io对所有人按LGPL协议开源,但只服务于品行良好的开发人员!

#### **常见应用场景**

Expand All @@ -13,11 +16,11 @@ t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、**将
- 物联网(已有很多案例)
- 其它实时通讯类型的场景,不一一列举

#### **晒一下作者花两天时间用t-io和[layim](http://layim.layui.com/)做的[web im](http://www.t-io.org:9292/im/app/im/index.html?t_io_v=34344545676)**
#### **晒一下作者花两天时间用t-io和[layim](http://layim.layui.com/)做的[web im](http://www.t-io.org:9292/newim/)**

- 先感谢一下贤心提供这么好的ui作品,也欢迎大家去捐赠获取[layim](http://layim.layui.com/),本人捐赠了[layim](http://layim.layui.com/)**只是贤心又零差价地回捐了t-io**
- 东西刚刚出来,还需要打磨,有问题在所难免,毕竟只花了两天时间。
- [演示地址](http://www.t-io.org:9292/im/app/im/index.html?t_io_v=34344545676)(2M带宽,请勿压测,谢谢!)
- [演示地址](http://www.t-io.org:9292/newim/)(2M带宽,请勿压测,谢谢!)
- 截图

---
Expand Down Expand Up @@ -50,8 +53,8 @@ t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、**将
- 只需花上30分钟学习helloworld,就能较好地掌握并实现一个性能极好的即时通讯应用

### 极震撼的性能
- 单机轻松支持**百万级tcp长连接**,彻底甩开业界C1000K烦恼;
- 最高时,每秒可以收发500万条消息,约165M
- 单机轻松支持**百万级tcp长连接**,彻底甩开业界C1000K烦恼(不过现在已经有不少公司已经搞定c1000K问题了)
- 最高时,每秒可以收发500万条业务消息,约165M**1.6.9版本数据,想验证的,后面有验证步骤**

### 对开发人员极体贴的内置功能
- **内置心跳检测**
Expand All @@ -61,7 +64,7 @@ t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、**将
- **一行代码拥有自动重连功能**
- **各项消息统计等功能,全部一键内置搞定,省却各种烦恼**

### 一张思维导图胜过千言万语
### 一张思维导图胜过千言万语(部分方法在未发布的1.7.1版本中)

---

Expand All @@ -73,7 +76,7 @@ t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、**将
## **各种传送门**

- [t-io生态圈建设](http://www.t-io.org:9292/ecosphere.html?t_io_v=34344545676)
- [t-io + layim开发的足够风骚的web im](http://www.t-io.org:9292/im/app/im/index.html?t_io_v=34344545676)
- [t-io + layim + vue + ivivew + webpack + google-protobuf开发的web im](http://www.t-io.org:9292/newim?t_io_v=34344545676)(服务器由某公司免费提供,只有2M带宽,最近被Ddos攻击,所以随时都可能暂时而导致你访问失败)
- [官 网][1]
- [代码托管平台码云](https://git.oschina.net/tywo45/t-io)
- [开源中国收录地址](https://www.oschina.net/p/t-io)
Expand All @@ -96,31 +99,38 @@ t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、**将


## **性能数据**
- IM实例收发速度500万条/秒----此数据系网友提供(i7 6700 + 固态硬盘 + win10),作者本地只跑到了333万/秒
- 需要验证的,请按后面提供的验证步骤来,对于t-io的数据,要么相信作者所说,要么自己亲手去测,网上的抹黑造谣谩骂很多,但真理来自测试。**验证完毕后,自己偷着乐就好,注意规避网上那些喷子,不要回复他们(t-io被黑了几个月,这两天,作者本人抓住确凿证据后正面回应了两个人,结果引来了更多的喷子(简单点看了几个 人,基本是些活跃度和访问量极低的用户),前车之鉴)**。如果你对测试数据还有疑问,可以debug进去看看各个步骤,重点是多沟通,防止误判
- IM实例收发速度500万条/秒----此数据系网友提供(i7 6700 + 固态硬盘 + win10),作者本地只跑到了333万/秒
- IM实例17.82万TCP长连接且正常收发消息只消耗800M内存,CPU使用率极低,目测t-io可以支撑200万长连接
- 17.82万长连接 + 各种破坏性测试,服务器内存保持稳定(600多M到900M间)

## **性能测试步骤**

### 测试单机吞吐量
### 测试单机吞吐量(实际上就是非网络环境啦)
1. 机器准备
- CPU: i7 6700 / i7 4790
- 内存:8G/4G
- 操作系统:windows7/windows10
- 说明:客户机和服务器位于同一台机器
- 说明:**客户机和服务器位于同一台机器**
2. 测试步骤
- **参数调优**:修改t-io\dist\examples\im\client\startup.bat,把-Dtio.default.read.buffer.size=512的值换成4096
- **参数调优**:修改t-io\dist\examples\im\server\startup.bat,把-Dtio.default.read.buffer.size=512的值换成4096
- 双击 "bin/start-im-server.bat" 启动im server
- 双击 "bin/start-im-client.bat" 启动im client
- 保持下图参数进行测试
- 保持下图参数进行测试**强调:你需要多试几次,前面几次的性能数据是最差的,貌似跟线程池的预热有关系,有研究的朋友可以交流一下**
![image](http://git.oschina.net/tywo45/t-io/raw/master/docs/performance/500%E4%B8%87.png)
3. 测试结果
- 500万条/秒约165M----此数据系网友提供(i7 6700 + 固态硬盘 + win10)
- 333万条/秒约97M----此数据系本人亲测数据(i7 4790 + 固态硬盘 + win7),测试参数与上图略有差别,不一一说明
4. 测试说明
- 数据中的消息条数指的是业务包,不是指tcp的交互次数,了解tcp协议的人知道,tcp是双向确认可靠的传输协议,对业务而言,其实并不关心tcp了多少次,而是我们的业务数据收发了多少条。
- **请用t-io 1.6.9分支进行测试,1.7.0加了链路行为跟踪功能、1.7.1会加上ip防黑功能,这些功能会使t-io框架本身的性能降低(就像操作系统一个开了防火墙,一个没开防火墙,性能不是一个级别的)。作为一个io框架,其实并不需要实现这些功能,但是为了让业务层更舒服,t-io还是舍弃了亮眼的性能数据去拥抱更实用的业务层功能。**
- netty是一个知名度极高的一个框架,而且功能更多,t-io如果满足不了你或不是你的菜,可以尝试netty

### 测试centos下可以支持多少长连接数
1. 机器准备
- 服务器一台:centos6.x, 虚拟机,一个4核E5 CPU,内存16G
- 客户机11台:windows,硬件没什么特别要求
- 服务器一台:**centos6.x, 虚拟机,一个4核E5 CPU,内存16G**
- 客户机11台:windows,硬件没什么特别要求,能跑起1.62万个长连接,配置不低得离谱就行
2. 测试步骤
- 修改centos操作系统参数,使之支持更大的长连接数,细节略(可百度之)
- 在centos上运行 "bin/start-im-server.sh" 启动im server
Expand All @@ -147,7 +157,12 @@ t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、**将
- 把dist\examples\im\client拷到各客户机并运行"bin/start-im-client.bat"
3. 测试结果
- 11个客户机 ,每个客户机连16200个TCP连接,服务器一共承受17.82万TCP长连接,服务器内存只消耗800M,CPU使用率极低(其中有一台客户担任破坏性测试机)
- 根据测试结果初步推测:t-io支持200万长连接没什么问题,各位有条件的可以测测。
- 根据测试结果初步推测:乐观点:t-io支持200万长连接没什么问题,保守点:100万吧,各位有条件的可以测测,毕竟推测的数据有时候会让人跌眼境。
4. 测试说明
- 因为这17.82万长连接位于同一个组中,你用客户机发一条消息,服务器就要推送17.82万条数据,所以在发消息时,请慎重,当然如果你非要把内存、CPU耗光,然后看t-io宕机才高兴,只能说t-io不是你的菜,你还是另请高明吧。
- 这些数据是1.6.9版本测出来的,1.7.0加了链路行为跟踪功能、1.7.1会加上ip防黑功能,这些功能的增加对tcp长连接个数没什么影响,但是可能内存会增加一些,毕竟多了不少维护数据。
- 不管怎么说,用在生产环境,不管用什么框架,都是要自己测一遍的,有问题可以随时找作者,不接受恶意找茬,同时作为开源免费软件,作者也有权拒绝一切服务,这点请知悉----开源,只是把代码本身按照某种协议贡献出来,并无义务给你服务,你用得不爽,请另请高明。
- netty是一个知名度极高的一个框架,而且功能更多,t-io如果满足不了你或不是你的菜,可以尝试netty
## t-io学习步骤(供参考,具体步骤根据各人而异)
学习t-io的最好方式,是从helloworld的例子入手,顺瓜摸藤阅读t-io的源代码,已经有很多人阅读过t-io的源代码,譬如j-net的作者、[hutool](https://git.oschina.net/loolly/hutool/)的作者、[天蓬小猪](https://my.oschina.net/u/257950/)、[守护天使](https://git.oschina.net/yyljlyy),并且反馈良好,源代码毕竟只有3000多行,读读无妨!如果懒于阅读代码,就按照下面的步骤来学习吧!
Expand Down Expand Up @@ -279,7 +294,7 @@ showcase一词是从springside借来的,放这很应景,[天蓬元帅](https
## 参与t-io
- t-io是将多线程技巧运用到极致的框架,所以一旦您参与到本项目,将会从本项目中学到很多关于多线程的技巧。
- 提交Issue 给项目提出有意义的新需求,或是帮项目发现BUG,或是上传你本地测试的一些数据让作者参考以便进一步优化。
- **点击右上方的 Star 以便随时掌握本项目的动态(据说star过t-io的用户会受到作者特别对待^_^)**
- **点击右上方的star以示精神支持,点击fork以备不时之需**
## [助力t-io生态圈建设](http://www.t-io.org:9292/ecosphere.html?t_io_v=34344545676)
Expand Down

0 comments on commit 86c4f18

Please sign in to comment.