一、爲什麼Socket難
數據粘包、數據丟包、心跳維持、性能問題
二、目的
一套推送框架、IM傳輸原理、勝任物聯網開發職位、協議制定者、理解其他相關庫的底層原理
三、目標與收穫
ByteBuffer Channel 橋接技術 內存複用
NIO
數據分片 Socket運用 性能分析
消息粘包 消息丟包 性能調試 併發封裝
四、課程安排
底層協議
UDP、TCP
NIO大家族
案例實戰:羣聊天室,文件快傳,即時語音等
五、底層協議
報文 協議 Mac地址
IP 端口 服務器
六、UDP、TCP、NIO
協議區別、性能比較、適用場景
七、NIO --->NIO大家族
Selector
Channel (FileChannel、SocketChannel、ReadChannel)
Buffer (ByteBuffer、CharBuffer、IntBuffer)
八、羣聊天案例
多客戶端連接、UDP掃描功能、聊天消息轉發、向NIO的轉型、心跳包的實現、性能優化
九、文件傳輸案例
基於流的傳輸、文件發送中斷、消息分片技術、消息混發技術
十、即時語音
直播推流、語音採集、語音壓縮、接收與播放、實時消息模型
服務器橋接技術
十一、高性能的調度規則
利用多通道、線程池、多端寫入、併發消費的原理達到高性能的數據調度
十二、健壯的數據消費流程
將socket抽象爲Sender、Receiver
直接消費的數據爲IoArgs
要實現數據的消費,需要IoProvider,在IoProvider中實現WriteSelector和ReadSelector
WriteSelector和ReadSelector通過線程池進行調度
首先,將事件注入到IoProvider中,當數據就緒的時候,會通過線程池的callback實現對數據的消費