java-Kcp
README in english
基於netty版本實作的kcp(包含fec功能的實作)
KCP是基於udp的快速可靠協議(rudp),能以比TCP浪費10%-20%的頻寬的代價,換取平均延遲降低30%-40%,且最大延遲降低三倍的傳輸效果。
maven地址:
< dependency >
< groupId >com.github.l42111996</ groupId >
< artifactId >kcp-base</ artifactId >
< version >1.6</ version >
</ dependency >
使用方法以及參數
- server端範例
- client端實例
- 最佳實踐
- 大量資料
- 相容c#端,java服務端, c#客戶端
- 遇到過的問題
- 性能測試結果
- 相容kcp-go,包含fec相容
相容性:
- 相容c版本kcp
- fec基於https://github.com/Backblaze/JavaReedSolomon 實現
- 完美相容的C#版本,https://github.com/l42111996/csharp-kcp ,快速建立遊戲前後端網路庫
穩定性:
已經是穩定版本,統計有5~10款上線項目接入,包含騰訊,快手等公司產品使用
最佳化:
- 基於事件驅動,充分利用多核心
- 最佳化fastack邏輯,降低10%流量
- 優化check函數。
- 優化集合迭代器。
- 包含fec,降低延遲
- 附帶crc32校驗
- 使用時間輪,優化大量連接cpu佔用
- 使用directbuf和物件池,無gc壓力
- 增加使用conv或ip+port確定channel唯一性,遊戲建議使用conv與tcp配置使用,相關資料
- 增加遊戲使用時4G切換wifi等出口ip變動不會導致連線中斷
相關資料
- https://github.com/skywind3000/kcp 原版c版本的kcp
- https://github.com/xtaci/kcp-go go版本kcp,有大量最佳化
- https://github.com/Backblaze/JavaReedSolomon java版本fec
- https://github.com/LMAX-Exchange/disruptor 高效能的執行緒間訊息傳遞庫
- https://github.com/JCTools/JCTools 高效能並發庫
- https://github.com/szhnet/kcp-netty java版本的一個kcp
- https://github.com/l42111996/csharp-kcp 基於dotNetty的c#版本kcp,完美相容
交流
QQ:526167774