簡介
t-io是什麼?一個與netty同類的網絡編程框架t-io誕生的意義?解決其它網絡框架沒有解決的疼點,如群組、用戶、Token綁定,組發,流量監控,心跳檢查、發送,IP拉黑,同步、阻塞發送,多協議適配,服務間數據共享,極易駕馭…t-io開源嗎?基於apache協議,毫無保留的完全開源t-io收費嗎?原始碼完全免費,部分文檔收費t-io性能和穩定性如何?性能可以參見TFB上的排名;穩定性可以參見t-io案例t-io官網是基於t-io的嗎?是的,目前運行在2核 4G 2Mbit的華為雲上t-io應用場景
t-io是基於JVM的網絡編程框架,和netty屬同類,所以netty能做的t-io都能做,考慮到t-io是從項目抽象出來的框架,所以t-io提供了更多的和業務相關的API,大體上t-io具有如下特點和能力
內置完備的監控和流控能力內置半包粘包處理一騎絕塵的資源管理能力內置心跳檢查和心跳發送能力內置IP拉黑一流性能和穩定性(第三方權威平臺TFB提供性能測試和穩定性服務)極其穩定的表現(很多用戶還是停在t-io 1.x版本,就是因為太過穩定,不想變動)內置慢攻擊防禦唯一一個內置異步發送、阻塞發送、同步發送的網絡框架唯一內置集群分發消息的能力獨創的多埠資源共享能力(譬如一個埠是websocket協議,一個埠是私有的im協議,這兩個埠的資源可以共享,這對協議適配極其有用)獨創協議適配轉換能力(讓基於websocket和基於socket的應用看起來像是同一個協議)獨一檔的資源和業務綁定能力:綁定group、綁定userid、綁定token、綁定bsId,這些綁定幾乎囊括了所有業務需求t-io生態結構
一張圖描述t-io生態結構
1. tio-utils
tio-utils是筆者在項目開發中積累的部分工具類裡面有少部分代碼是在開源許可範圍內摘自第三方開源項目代碼的,還有部分代碼是其它開源作者提供的,譬如hutool的作者路神就提供了許多類,在此也是表示感謝!筆者這麼做,僅僅是因為廣大用戶強力要求tio減少第三方依賴!當然筆者更願意使第三方工具類,譬如hutool,畢竟和hutool的作者是基友在tio-utils中目前鄙人用得最多的Cache首先這個Cache是個門面——把市面上的各路Cache統一成了ICache,操作方法統一了,其次它內置了一級cache,兩級cache,並且性能極好、操作省心、穩定性也在大量項目中得到了考驗哦,這麼說,其實就是想挑戰J2cache,不過tio-utils也把J2cache門面化了^_^2. tio-core
大家口中的t-io或tio指的就是tio-core,這個一定要記住,要不然會混掉tio-core是依賴tio-utils的tio-core是基於java aio的網絡編程框架(很多人說t-io是基於netty,大家不要聽信這樣不負責任的言論)如果你知道netty是啥,那理解tio-core就很容易了,因為tio-core是和netty類似的框架關於社區的問答在t-io沒提供任何文檔的情況下,許多用戶僅依靠筆者提供的示範工程就掌握了tio,並用於生產項目中,這表明t-io極其容易上手tio-mvc是基於tio-http-server的mvc框架,它在TFB上的性能排名不差(不得不嚴肅提醒各位:TFB上部分排在tio-mvc前面的框架,並不具備用於生產項目的能力,而只是DEMO級別的,譬如協議容錯、協議防攻擊、session支持、分布session支持,流控這些都沒有,重要的是普通開發工程師難以入手)
tio-mvc在TFB上的PK排名表明t-io性能很好t-io是從前線走出來的作品,而且久經考驗!性能達到一定高度的前提下,再對比性能,其已經意義不大,穩定性、易用性、坑多否才是後面主要的競技場!問:市面上已經有netty這樣優秀的框架,為何還要自己寫一個tio-core?答:每個人心中有桿秤,你認為優秀的,不代表所有人都這樣認為問:和netty比,tio-core有何優勢和劣勢?答:很難回答這個問題,說幾個事實:3. tio-http-common
一個給tio-http-server和tio-http-client共用的工程,大家可以略過4. tio-http-server
基於tio-core(為啥不說是基於tio-http-common?怎麼說都可以)實現的http伺服器內置了極易使用的MVC框架內置了流控、拉黑、forward、攔截器等常用能力性能優秀,前面已經有地方描述了它在TFB上的性能表現,在TFB上tio-mvc的性能遠超使用人群最多的springmvc,當然這不是說springmvc不優秀,而是說性能到這份上了,再說性能沒啥意義!5. tio-websocket-common
一個給tio-websocket-server和tio-websocket-client共用的工程,大家可以略過6. tio-websocket-server
基於tio-core(為啥不說是基於tio-websocket-common?怎麼說都可以)實現的websocket伺服器請注意:tio-http-server和tio-websocket-server是分開的,不能在同一埠用tio-http-server和tio-websocket-server,這麼樣的原因很簡單:為了提升性能。「哦,那為什麼其它框架是放在一起的?」「我想說的是websocket協議是後來硬扯在http協議之上的,從設計上來講:這倆貨根本就不應該呆在一起,搞得筆者在實現websocket協議時,還得用http協議來完成握手」項目地址
官網:https://www.t-io.org/github地址:https://github.com/tywo45/t-io