共计 4267 个字符,预计需要花费 11 分钟才能阅读完成。
中国人领有了齐全自主的高性能网络编程框架 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.tiocloud.com/41
测试现场二:https://www.tiocloud.com/61
基于 tio 开发的即时通讯软件谭聊,目前是业界性能最强的全开源销售即时通讯软件。
https://www.tiocloud.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.tiocloud.com/2/ca…