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

爱写码
• 阅读 1229

中国人拥有了完全自主的高性能网络编程框架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万条消息: 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 1.9G内存支撑30万TCP长连接: 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 测试现场一:https://www.tiocloud.com/41 测试现场二:https://www.tiocloud.com/61 基于tio开发的即时通讯软件谭聊,目前是业界性能最强的全开源销售即时通讯软件。 https://www.tiocloud.com/2/product/tm.html 2、APP中的数据在网络中的传输 了解网络中的数据传输,能更好的理解t-io在软件中的作用,APP中的应用数据要在网络中传输,也必须要严格遵守OSI或者TCP/IP协议按照封装的要求进行分片打包,才能在IP网络中传输,所以先了解一下OSI和TCP/IP的相关数据包的封装和解封装过程。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io OSI和TCP/IP的分层协议栈对应关系 十年磨一剑,匠心打造中国人自己的网络编程架构t-io OSI和TCP/IP协议栈每层对应的协议和应用 十年磨一剑,匠心打造中国人自己的网络编程架构t-io Socket位于TCP/IP协议栈中的位置 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 从以上图示可以知道tio完成的功能属于传输层和应用层之间的封装,以及和链接的建立。 下面说明tio在软件中的具体使用过程: APP要完成设计的各项功能,必须在客户端和服务端之间先建立有连接或者无连接交互通信链路,然后再在这条链路上传输数据,t-io就能完成这个链路的建立。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io APP应用交互节点部署 十年磨一剑,匠心打造中国人自己的网络编程架构t-io APP通信具体实现逻辑图 物理层,指的是电信号的传递方式,透明的传输比特流。 链路层,在两个相邻结点间的线路上无差错地传送以帧为单位的数据。 网络层,负责为分组交换网上的不同主机提供通信,数据传送的单位是分组或包。 传输层,负责主机中两个进程之间的通信,数据传输的单位是报文段。 网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)。 数据传输到对方,必须先按照TCP/IP协议进行封装,封装成一个标准的链路层包后,然后通过物理层传输到对方后,对方再进行解封装,取出应用层数据。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 从以上讲解的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引入 十年磨一剑,匠心打造中国人自己的网络编程架构t-io Websocket Server: 完整的实现了Websocket协议,t-io内部也在大量使用tio-websocket,POM引入 十年磨一剑,匠心打造中国人自己的网络编程架构t-io UDP Server&Client: 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 流量监控和统计: 目前唯一一个内置完整流量监控和统计的网络框架 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 同步消息: 指A给B发送一条消息后,A在原线程中等待B给出一条对应的响应消息,用其它网络框架实现这样的功能,需要开发人员精通多线程协作,极易产生死锁,而t-io已经内置了发送同步消息的能力,使用也非常简单。 心跳检查: t-io内置了检测心跳超时的任务,当发现某连接在指定时间内没有发生任何数据收发,则断开该连接。 心跳发送: t-io内置了发送心跳消息的任务,用于判断连接状态。 集群功能: 企业版t-io(集群版)内置了集群能力,用户只需要在启动的时候加几行配置代码,便能轻松拥有集群能力,这时可同时支撑1亿+长连接。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 集群服务器路由: 集群架构中,各台服务器之间有完整的路由信息完成服务器之间的业务交互。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 集群架构中的消息路由: 集群业务中有各种路由来指导业务消息发送相关的业务节点。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 协议适配: t-io内置了协议适配能力,让一套业务代码可同时支持多个协议,这样能避免重复开发,重复测试,重复BUG。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 并发数据结构: t-io自创了大量数据结构,将并发编程难度降到最低,主要包含: ObjWithLock,ListWithLock,CollectionWithLock,SetWithLock,MapCollectionWithLock,MapListWithLock,MapSetWithLock,MapWithLock 半包粘包: 框架层已经做好半包和粘包的工作,业务层不需要考虑在传输过程中的数据包的结构,只需要按着业务协议解码即可。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 自动重连: 用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在第三方专业缓存的基础上,封装了两级缓存,同时提供了一个缓存工具类,用一套编程接口便可在多种缓存间自由切换,t-io内部大量使用了这些缓存工具,将性能发挥到极致。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 群组管理: 将多个TCP连接关联到一个或者多个群组(多对多),这样就能很容易实现上层业务的群组管理功能,可以实现一对一或者一对多的群业务。 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 用户管理: 将一个TCP连接关联到一个用户(一对多) 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io Token管理: 将一个TCP连接关联到一个Token(一对多) 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 业务ID管理: 将一个TCP连接关联到一个业务ID(一对一) 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io IP管理: 一个TCP连接对应一个客户端IP(一对多) 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io ID管理: 一个TCP连接自动产生一个唯一ID(一对一) 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 十年磨一剑,匠心打造中国人自己的网络编程架构t-io 5、t-io使用案例 保守估算,正在使用t-io的企业有10000+,并且还在不断增加中,以下仅展示部分使用过t-io或购买过t-io授权的公司。 更多案例,请参考:https://www.tiocloud.com/2/case/index.html 十年磨一剑,匠心打造中国人自己的网络编程架构t-io

点赞
收藏
评论区
推荐文章
爱写码 爱写码
2年前
国产开源网络编程框架tio的得意之作—谭聊介绍
想各位对即时通讯源码有追求人,必然有所了解谭聊,谭聊是完全基于开源网络编程框架tio开发的一款即时通讯软件,也是tio作者亲自操刀,性能上的强大能力完全继承了tio的特性,即单机版可以达到近百万并发,而集群版可以达到过亿的并发能力。所以各位如果想开发即时通讯软件或者类似的公司内部沟通软件,完全可以以tio作为网络编程软件拿来使用,这样不仅能省去这块的开发工作
爱写码 爱写码
2年前
要想轻松驾驭t-io,提高编程效率,学习示范工程很重要
tio作为国内知名的开源网络编程框架,受到业界的广泛赞誉和使用,要一个想要学习或者想要使用tio的人员,最快的了解tio的方法就是学习tio相关的工程文档,主要包含五个部分:tiostudy工程tiowebsocketshowcase工程tiohttpservershowcase工程tioudpshowcase工程tiowebsocketclient 工程具
爱写码 爱写码
2年前
要想编程效率高,熟悉t-io很必要,省去你的APP中自己开发网络通信的模块
1.是基于javaaio的网络编程框架,和netty属于同类,它的使命是:让天下没有难开发的网络程序。2.基于tiocore来开发IM、TCP私有协议、RPC、游戏服务器端、推送服务、实时监控、物联网、UDP、Socket将会变得空前的简单。3.tio家族除了tiocore外,还有tiowebsocketserver、tiohttpserver、ti
爱写码 爱写码
2年前
t-io应用场景和能力
tio历史、应用场景(图示——简)tio应用场景(文字描述——详)tio是基于JVM的网络编程框架,和netty属同类,所以netty能做的tio都能做,考虑到tio是从项目抽象出来的框架,所以tio提供了更多的和业务相关的API,大体上tio具有如下特点和能力:内置完备的监控和流控能力内置半包粘包处理一骑绝尘的资源管理能力内置心跳检查和心跳发送能力
Wesley13 Wesley13
2年前
GO语言网络编程
socket编程Socket是BSDUNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。Socket可以理解为TCP/IP网络的API,它定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。电脑上运行的应用程序通常通过”套接字”向网络发出请求或者应答网络请求。Socke
Stella981 Stella981
2年前
Netty堆外内存泄露排查与总结
导读Netty是一个异步事件驱动的网络通信层框架,用于快速开发高可用高性能的服务端网络框架与客户端程序,它极大地简化了TCP和UDP套接字服务器等网络编程。Netty底层基于JDK的NIO,我们为什么不直接基于JDK的NIO或者其他NIO框架:1.使用JDK自带的NIO需要了解太多的概念,编程复杂。2
绣鸾 绣鸾
8个月前
防火墙Little Snitch 5 for Mac
LittleSnitch5是一款Mac电脑上的网络安全软件,它可以监控和控制应用程序的网络连接,以防止恶意软件、间谍软件和其他不良程序通过网络进行数据传输和访问。LittleSnitch5拥有一些非常强大的功能,包括:实时监控应用程序的网络连接,包括进出的
笑面虎 笑面虎
4个月前
基于C++从0到1手写Linux高性能网络编程框架(2023新课)
基于C从0到1手写Linux高性能网络编程框架(2023新课)分享课程——基于C从0到1手写Linux高性能网络编程框架,2023年新课,附源码电子书,课程包更新。Linux在服务器领域有着强大的优势,网络编程便是其中一项重要组成部分,运用合理的
笑面虎 笑面虎
4个月前
【完结12章】基于C++从0到1手写Linux高性能网络编程框架
【完结12章】基于C从0到1手写Linux高性能网络编程框架分享一套课程——基于C从0到1手写Linux高性能网络编程框架,已完结12章,附源码电子书。大家下载学习。Socket网络编程框架Socket(套接字)是一个网络编程概念,描述了一个通信
金旋 金旋
2个月前
2022巫妖易语言
//下仔のke:https://yeziit.cn/14439/易语言是中国自主研发的第一套面向对电脑零基础的人、完全可视化的编程语言。易语言降低了程序开发的门槛,使得广大的普通网友也能轻松上手编程,实现自己的创意和想法。易语言在编程领域拥有较高的知名度,