一、为什么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实现对数据的消费