十年磨一剑,匠心打造中国人自己的网络编程架构t-io
对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《十年磨一剑,匠心打造中国人自己的网络编程架构t-io》,主要介绍了MySQL、html、Java、html5、android,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
中国人拥有了完全自主的高性能网络编程框架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长连接:

测试现场一:https://www.wanetech.com/41
测试现场二:https://www.wanetech.com/61
基于tio开发的即时通讯软件谭聊,目前是业界性能最强的全开源销售即时通讯软件。
https://www.wanetech.com/2/pr...
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:
UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
tio-udp是包含在tio-core的一个功能子集,具体实现请学习:
把工程以maven的形式导入到eclipse后
运行org.tio.showcase.udp.server.ShowcaseUdpServerStarter启动udp服务器,启动成功后,日志如下

运行org.tio.showcase.udp.client.UdpClientStarter
观察服务器端的console,会看到如下日志

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

同步消息:
指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.wanetech.com/2/ca...

到这里,我们也就讲完了《十年磨一剑,匠心打造中国人自己的网络编程架构t-io》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!
在线MySQL,SQL Server建表语句生成JSON测试数据工具
- 上一篇
- 在线MySQL,SQL Server建表语句生成JSON测试数据工具
- 下一篇
- koa搭建nodejs项目并注册接口
-
- 数据库 · MySQL | 5小时前 |
- MySQL collation 不一致导致 JOIN 报错怎么统一
- 446浏览 收藏
-
- 数据库 · MySQL | 13小时前 |
- MySQL 递归 CTE 生成日期序列时为什么列类型会截断
- 104浏览 收藏
-
- 数据库 · MySQL | 17小时前 |
- MySQL 递归 CTE 遍历树数据时怎么防止无限循环
- 142浏览 收藏
-
- 数据库 · MySQL | 20小时前 |
- MySQL invisible index 如何安全观察索引下线影响
- 300浏览 收藏
-
- 数据库 · MySQL | 21小时前 | MySQL · 索引优化 · generated column · mysql 索引 优化器 生成列
- MySQL 生成列索引为什么没有被优化器使用
- 300浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL 窗口函数取每组最新记录时如何处理并列时间
- 242浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL JSON_VALUE 返回 NULL 时怎么区分缺少路径和空值
- 170浏览 收藏
-
- 数据库 · MySQL | 1天前 | MySQL · JSON查询 · JSON_TABLE · SQL技巧 · mysql JSON_TABLE FOR ORDINALITY JSON数组序号
- MySQL JSON_TABLE 的 FOR ORDINALITY 怎么保留数组原始序号
- 139浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL 复制延迟升高时怎么区分 SQL 线程和 IO 线程
- 304浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 61次使用
-
- SuperCLUE
- SuperCLUE是权威的中文大语言模型综合评测基准,涵盖语言理解、知识应用、AI Agent智能体及安全性等12项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
- 216次使用
-
- C-Eval
- 深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
- 145次使用
-
- AI Prompt Library
- 探索AI Prompt Library免费资源库,涵盖营销、写作及多场景AI提示词。兼容ChatGPT、Claude等工具,一键复制优化输出,提升工作效率。
- 78次使用
-
- Generrated
- Generrated汇集9300+张DALL·E生成图像及对应提示词,支持查看完整图集、对比DALL·E 2与3版本差异,是AI绘图新手学习Prompt设计与获取创作灵感的实用工具。
- 55次使用
-
- MySQL 明明加了索引,为什么查询还是很慢?先查这 6 个点
- 2026-06-27 374浏览
-
- shizuku官网入口是什么?官方工具适合哪些安卓用户
- 2026-08-29 140浏览
-
- shimeji桌宠官网入口是什么?屏幕伙伴适合哪些安卓用户
- 2026-08-29 394浏览
-
- scene官网入口是什么?Android框架功能、兼容与常见问题
- 2026-08-30 321浏览
-
- shizuku无线调试怎么启动?ADB权限、兼容性与常见故障说明
- 2026-09-04 306浏览

