# t-io **Repository Path**: gitmaster/t-io ## Basic Information - **Project Name**: t-io - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-05-02 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

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

  1. 简 介

    t-io是基于jdk aio实现的易学易用、稳定耐操、性能强悍、内置功能丰富、核心代码只有3000多行的即时通讯框架。字母 t talent(天才)的首字母,也可以理解为"特快",同时也是作者姓氏的首字母。
  2. 各种传送门

  3. 常见应用场景

    IM、实时监控、推送服务(已内置API)、RPC、游戏、物联网等实时通讯类型的场景
  4. 特 点

  5. 性能数据

    1. IM实例收发速度500万条/秒----此数据系网友提供(i7 6700 + 固态硬盘 + win10),我本地只能跑到333万/秒

    2. IM实例17.82万TCP长连接且正常收发消息只消耗800M内存,CPU使用率极低,目测t-io可以支撑200万长连接

    3. 17万长连接反复破坏性测试(譬如断网又连网、反复断开客户端又连上客户端等),服务器内存保持稳定(600多M到900M间)

  6. 性能测试步骤

    1. 测试单机吞吐量

      1. 机器准备

        1. CPU: i7 6700
        2. 内存:8G/4G
        3. 操作系统:windows7/windows10
        4. 说明:客户机和服务器位于同一台机器
      2. 测试步骤

        1. 双击 "bin/start-im-server.bat" 启动im server
        2. 双击 "bin/start-im-client.bat" 启动im client
        3. 保持下图参数进行测试
      3. 测试结果

        1. 500万条/秒约165M----此数据系网友提供(i7 6700 + 固态硬盘 + win10)
        2. 333万条/秒约97M----此数据系本人亲测数据(i7 4790 + 固态硬盘 + win7),测试参数与上图略有差别,不一一说明
    2. 测试centos下可以支持多少长连接数

      1. 机器准备

        1. 服务器一台:centos6.x, 虚拟机,一个4核E5 CPU,内存16G
        2. 客户机11台:windows,硬件没什么特别要求
      2. 测试步骤

        1. 修改centos操作系统参数,使之支持更大的长连接数,细节略(可百度之)
        2. 在centos上运行 "bin/start-im-server.sh" 启动im server
        3. 修改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
          							
        4. 把dist\examples\im\client拷到各客户机并运行"bin/start-im-client.bat"
      3. 测试结果

        1. 11个客户机 ,每个客户机连16200个TCP连接,服务器一共承受17.82万TCP长连接,服务器内存只消耗800M,CPU使用率极低
        2. 根据测试结果初步推测:t-io支持200万长连接没什么问题,各位有条件的可以测测。
  7. t-io学习步骤(供参考,具体步骤根据各人而异)

    学习t-io的最好方式,是从helloworld的例子入手,顺藤摸瓜阅读t-io的源代码,已经有很多人阅读过t-io的源代码,譬如j-net的作者、hutool的作者,并且反馈良好,源代码毕竟只有4000多行,读读无妨!如果懒于阅读代码,就按照下面的步骤来学习吧!
    1. 初步认识t-io

      1. 安装1.7以上版本的jdk及maven(已安装的略过此步骤)
      2. https://git.oschina.net/tywo45/t-io处下载源代码(已下载的略过此步骤)
      3. 双击 "bin/install.bat" 安装t-io到本地maven仓库(此步骤可省略)
      4. 双击 "bin/start-im-server.bat" 启动im server
      5. 双击 "bin/start-im-client.bat" 启动im client
      6. 对着界面把玩几下,测试一把性能数据,对t-io形成感性认识
        客户端界面
        服务器端界面(这里显示的都是一些统计信息,方便用户了解服务器运作情况)
    2. 了解代码目录结构(所有工程都是maven工程)

      ├─bin----------------脚本目录(方便快速操作)
      │      clean.bat----------------清空所有工程的target目录
      │      clean.sh
      │      deploy.bat----------------作者用来发布到maven中心仓库的脚本,放出来主要是供大家参考
      │      deploy.sh
      │      dist-examples.bat----------------把所有的例子打包到dist目录,方便用户直接执行
      │      dist-examples.sh
      │      install.bat----------------安装工程到本地仓库
      │      install.sh
      │      start-helloworld-client.bat----------------启动helloworld的客户端
      │      start-helloworld-client.sh
      │      start-helloworld-server.bat----------------启动helloworld的服务端
      │      start-helloworld-server.sh
      │      start-im-client.bat----------------启动im的客户端
      │      start-im-client.sh
      │      start-im-server.bat----------------启动im的服务端
      │      start-im-server.sh
      │      start-im-simple-client.bat----------------启动简化版协议的im的客户端
      │      start-im-simple-client.sh
      │      start-im-simple-server.bat----------------启动简化版协议的im的服务端
      │      start-im-simple-server.sh
      │      start-showcase-client.bat----------------启动showcase的客户端
      │      start-showcase-client.sh
      │      start-showcase-server.bat----------------启动showcase的服务端
      │      start-showcase-server.sh
      ├─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的源代码,这个例子是为了帮助用户学习t-io专门写的
      	│      ├─client
      	│      ├─common
      	│      └─server
      	└─parent----------------maven工程的parent
      

    3. 了解t-io源代码及用于学习的例子

      https://git.oschina.net/tywo45/t-io下载源代码及例子,里面的showcase例子是专门为学习t-io而写的,其设计也是准生产级别的,可以直接拿来做您项目的手脚架。下载完成后,请按下面步骤导入到eclipse中
    4. 花30分钟看一下t-io的helloworld,了解一下TCP编程的大概流程

      传送门: t-io系列文档之hello world(1)
    5. 花半天时间学习showcase

      下载例子代码学习即可,很容易懂,天蓬元帅就是这样学习的,可以和他交流,他后面会出详细的教程。
  8. 案 例(案例太多,此处仅列举t-io开源第一个月内的案例)

  9. 参与t-io

    1. t-io是将多线程技巧运用到极致的框架,所以一旦您参与到本项目,将会从本项目中学到很多关于多线程的技巧。
    2. 提交Issue 给项目提出有意义的新需求,或是帮项目发现BUG,或是上传你本地测试的一些数据让作者参考以便进一步优化。
    3. 点击右上方的 Star 以便随时掌握本项目的动态