中国人拥有了完全自主的高性能网络编程框架t-io。

通过十多年对低层技术的潜心研究,终于打磨出中国人自己的完全自主的开源网络编程软件t-io。

1、什么是t-io

t-io是基于java开发的一个开源的网络编程架构,大家都知道现在手机上或者电脑上都装了很多APP,这些APP都不是一个个在手机上或电脑上孤立的使用,而是能访问其他的地方数据或者与其他节点进行实时聊天,故每个APP中都要有一个对外进行通信的模块,这块内容从编程的角度来看就能通过网络编程框架来实现,t-io就是完成这块的内容的最好的编程软件。

软件开发人员要开发一个新的应用,对于软件中的通信模块如果使用tio就不要专门开发新的通信模块,这样节省了开发时间,可以专注于打磨软件中的其他内容,而且即使自己开发类似的对外通信的网络架构,也不一定能达到使用t-io的通信效果,我们知道一个好的流行的APP可能同时访问的人非常多,几十万、几百万、甚至几千万上亿同时访问,这样对于网络架构的设计就非常关键,如果设计不好就可能满足不了这样大的用户同时访问APP,如果出现这么大的访问量,可能导致死机,通信中断,通信太慢等等情况。

t-io经过创始人谭先生的精心打磨,性能超强,已经达到运营的的级别,用t-io写的程序每秒能处理1000+万条消息,1.9G内存能够支撑30万TCP长连接。

每秒处理1051万条消息:

1.9G内存支撑30万TCP长连接:

测试现场一:用t-io跑出每秒1051万条聊天消息(含测试步骤) - 谭聊

测试现场二:t-io 30W长连接并发压力测试报告 - 谭聊

基于tio开发的即时通讯软件谭聊,目前是业界性能最强的全开源销售即时通讯软件。

谭聊介绍,功能列表,报价清单

2、APP中的数据在网络中的传输

了解网络中的数据传输,能更好的理解t-io在软件中的作用,APP中的应用数据要在网络中传输,也必须要严格遵守OSI或者TCP/IP协议按照封装的要求进行分片打包,才能在IP网络中传输,所以先了解一下OSI和TCP/IP的相关数据包的封装和解封装过程。

OSI和TCP/IP的分层协议栈对应关系

OSI和TCP/IP协议栈每层对应的协议和应用

Socket位于TCP/IP协议栈中的位置

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

从以上图示可以知道tio完成的功能属于传输层和应用层之间的封装,以及和链接的建立。

下面说明tio在软件中的具体使用过程:

APP要完成设计的各项功能,必须在客户端和服务端之间先建立有连接或者无连接交互通信链路,然后再在这条链路上传输数据,t-io就能完成这个链路的建立。

APP应用交互节点部署

APP通信具体实现逻辑图

物理层,指的是电信号的传递方式,透明的传输比特流。

链路层,在两个相邻结点间的线路上无差错地传送以帧为单位的数据。

网络层,负责为分组交换网上的不同主机提供通信,数据传送的单位是分组或包。

传输层,负责主机中两个进程之间的通信,数据传输的单位是报文段。

网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)。

数据传输到对方,必须先按照TCP/IP协议进行封装,封装成一个标准的链路层包后,然后通过物理层传输到对方后,对方再进行解封装,取出应用层数据。

从以上讲解的APP的通信过程中知道,如果各种应用在开发过程中调用t-io则,不用开发相关的网络通信方面的模块,更多的时间和精力专注于具体应用功能的开发,这样省时、省力,加速应用的上市。

3、t-io的核心模块

t-io包含框架实现的核心模块tio-core,还有tio-websocket-server、tio-http-server、tio-udp-server、tio-webpack-core、tio-flash-policy-server等,后面所列都是基于tio-core开发的应用层组件。

tio-core:基于java aio开发的网络编程框架。使用示例:tio-study。

tio-websocket-server:基于tio-core开发的websocket服务器。使用示例:tio-websocket-showcase。

tio-http-server:基于tio-core开发的http服务器。使用示例:tio-http-server-showcase。

tio-udp-server:基于tio-core开发的udp服务器。使用示例:tio-udp-showcase。

tio-websocket-client:基于tio-core开发的websocket客户端。

tio-webpack-core:基于tio-core开发的js/css/ht ml编译压缩工具。

4、t-io功能介绍

TCP Server&Client:

1)编解码处理:源文件为AioHandler.java

2)启动:源文件为TioServer.java/TioClient.java

3)各种事件处理:源文件为AioListener.java

4)TCP连接上下文:源文件为ChannelContext.java

5)实用方法:源文件为Tio.java

6)全局配置:源文件为TioConfig.java

HTTP Server:

完整的实现了HTTP 1.1,t-io内部也大量使用了tio-http,POM引入

Websocket Server:

完整的实现了Websocket协议,t-io内部也在大量使用tio-websocket,POM引入

UDP Server&Client:

流量监控和统计:

目前唯一一个内置完整流量监控和统计的网络框架

同步消息:

指A给B发送一条消息后,A在原线程中等待B给出一条对应的响应消息,用其它网络框架实现这样的功能,需要开发人员精通多线程协作,极易产生死锁,而t-io已经内置了发送同步消息的能力,使用也非常简单。

心跳检查:

t-io内置了检测心跳超时的任务,当发现某连接在指定时间内没有发生任何数据收发,则断开该连接。

心跳发送:

t-io内置了发送心跳消息的任务,用于判断连接状态。

集群功能:

企业版t-io(集群版)内置了集群能力,用户只需要在启动的时候加几行配置代码,便能轻松拥有集群能力,这时可同时支撑1亿+长连接。

集群服务器路由

集群架构中,各台服务器之间有完整的路由信息完成服务器之间的业务交互。

集群架构中的消息路由

集群业务中有各种路由来指导业务消息发送相关的业务节点。

协议适配

t-io内置了协议适配能力,让一套业务代码可同时支持多个协议,这样能避免重复开发,重复测试,重复BUG。

 并发数据结构:

t-io自创了大量数据结构,将并发编程难度降到最低,主要包含:

ObjWithLock,ListWithLock,CollectionWithLock,SetWithLock,MapCollectionWithLock,MapListWithLock,MapSetWithLock,MapWithLock

半包粘包:

框架层已经做好半包和粘包的工作,业务层不需要考虑在传输过程中的数据包的结构,只需要按着业务协议解码即可。

自动重连:

用t-io作为TCP客户端时,内置了自动重连功能,用户只需要在启动时,配置ReconnConf 对象即可,如果业务自己实现自动重连,至少要浪费高级工程师5-10个工作日来完成该功能。

SSL功能:

SSL(Secure Sockets Layer 安全套接字协议)协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持,而t-io内置支持SSL,只需要一行代码:

serverTioConfig.useSsl("/cert/xxx.jks", "/cert/xxx.jks", "password");

IP拉黑

拉黑某个IP的时候,t-io会自动把该IP下的连接全部断开,并且不再接受来自该IP的连接,直到业务把该IP从黑名单中解除。结合t-io的监控数据,可以很方便地实现自动拉黑能力。

锁工具:

为了更便捷地利用读写锁,t-io提供了一个被用户称为“出神入化”的锁工具类,将锁使用的出错率降至最低,锁用不好,对项目就是灾难,如果业务项目中大量使用这些t-io提供的锁工具,既高效又不易出错。

缓存工具:

t-io在第三方专业缓存的基础上,封装了两级缓存,同时提供了一个缓存工具类,用一套编程接口便可在多种缓存间自由切换,t-io内部大量使用了这些缓存工具,将性能发挥到极致。

群组管理:

将多个TCP连接关联到一个或者多个群组(多对多),这样就能很容易实现上层业务的群组管理功能,可以实现一对一或者一对多的群业务。

用户管理

将一个TCP连接关联到一个用户(一对多)

Token管理:

将一个TCP连接关联到一个Token(一对多)

业务ID管理:

将一个TCP连接关联到一个业务ID(一对一)

IP管理:

一个TCP连接对应一个客户端IP(一对多)

ID管理:

一个TCP连接自动产生一个唯一ID(一对一)

5、t-io使用案例

保守估算,正在使用t-io的企业有10000+,并且还在不断增加中,以下仅展示部分使用过t-io或购买过t-io授权的公司。

更多案例,请参考:https://www.tiocloud.com/2/case/index.html

十年磨一剑,匠心打造中国人自己的网络编程架构t-io相关推荐

  1. 触宝纽交所上市:十年磨一剑 要打造世界一流AI公司

    雷帝网 雷建平 9月28日报道 中国出海企业触宝今日正式在美国纽交所挂牌上市,股票代码:CTK.触宝首次公开上市发行价为每股12美元. 触宝此次全球发售435万股美国存托股票(ADS), 每股ADS相 ...

  2. 十年磨一剑!阿里OceanBase创纪录卫冕,中国数据库从此告别卡脖子

    晶少 雷刚 发自 凹非寺  量子位 报道 | 公众号 QbitAI OceanBase,十年前有"海洋"一样的寄托,十年后梦想实现. 作为中国自研的数据库,它在短短7个月内再次.且 ...

  3. 十年磨一剑,阿里云RDS MySQL和AWS RDS谁的性能更胜一筹?

    MySQL代表了开源数据库的快速发展. 从2004年前后的Wiki.WordPress等轻量级Web 2.0应用起步,到2010年阿里巴巴在电商及支付场景大规模使用MySQL数据库,再到2012年开始 ...

  4. php十年磨一剑,十年磨一剑

    十年磨一剑 --专访化学学院郭雪峰课题组 期次:第1437期 作者:校报记者 唐一然 工作中的郭雪峰 工作中的郭雪峰 近日,教育部公布了2016年度"中国高等学校十大科技进展",北 ...

  5. 华宇物流 十年磨一剑

    在中国,提起最大的零担货物运输,不得不提起华宇物流:提起华宇物流,不得不提起华宇的十年创业史.十年的时间,湮没了无数原本成功的企业,也成就了许多像华宇物流这样白手起家的企业.    被称为中国最大 零 ...

  6. 十年磨一剑:心中无敌 无敌于天下

    80后CEO:创业者罗威 刚刚结束不久的2008北京奥运会冠军乃至运动员的重要特征是80后大踏步地主宰了局势.然而,欧美国家的80后与前辈明星的行为方式差别还不大,但是在中国却大不一样.原因在于中国的 ...

  7. 十年磨一剑!SACC带你领略企业大数据平台实践优化!

    [IT168 评论]十余年来,企业架构经过了数次迭代和变迁,ITPUB是这一切的重要见证者,同样陪伴了无数架构师的成长.10月17日,第十届中国系统架构师大会以"十年架构,成长之路" ...

  8. 双11特刊|十年磨一剑,云原生多模数据库Lindorm 2021双11总结

    前言 2021 年,转眼 Lindorm 已经在阿里发展了十年的时间,从基于 HBase 深度改造的 Lindorm 1.0 版本,到全面重构,架构大幅升级的 Lindorm 2.0 版本:从单一的宽 ...

  9. 十年磨一剑:从2009启动“去IOE”工程到2019年OceanBase拿下TPC-C世界第一

    十年前(2009年)的9月,我奉命组建当时的淘宝技术保障部:随即启动了2010年的技术预算工作,记得第一次给时任集团首席架构师的王坚博士汇报预算的时候,我得意地说到:"(淘宝)2010年不再 ...

最新文章

  1. python从入门到精通pdf百度云下载-跟老齐学Python从入门到精通 电子版(pdf格式)...
  2. 一起谈.NET技术,ASP.NET MVC2实现分页和右键菜单
  3. iOS Hacker 反注入和反反注入
  4. 当装了两个tomcat后,如何修改tomcat端口
  5. linux scrapy 定时任务_写爬虫一定要会scrapy?-Python每日3题(爬虫专题)
  6. idea非开源安装指南_开发人员开源指南
  7. 倒计时 5 天!年度开发者盛会 Unite Shanghai 2019 全日程揭晓(附表)
  8. linux远程关机程序,木马中如何编程实现远程关机(VC版)
  9. 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到4
  10. 正则表达式-2-正则表达式实战1
  11. 跑路了,在国外当程序员有多爽?
  12. Unity中设置对象匀速移动
  13. 简单的个人发展规划java,java个人职业发展方向规划范文
  14. 基于Matlab的语音识别
  15. c语言简单教师管理系统,C语言教师管理系统代码
  16. 计算机ppt音乐,PPT制作-背景音乐最全面设置教程
  17. 数据分析:留存率曲线拟合
  18. DNS协议——域名解析
  19. 格兰杰因果 / EEG脑电数据分析
  20. MySQL-间隙锁-加锁规则

热门文章

  1. 一些常用的postman测试脚本
  2. 一入魔兽深似海,回首已是中年人
  3. 爬取搜搜问问的一个实例
  4. Other | PPTV电视安装第三方应用教程
  5. Redis的奇葩问题
  6. c语言从入门到脱发,知乎|脱发是一种怎样的体验?
  7. support package
  8. xilinx 官网vivado和petalinux下载速度慢的解决办法
  9. TiDB 高并发写入常见热点问题及规避方法
  10. operator-和operator-*