网络课程学习

redis、skynet、nginx、memcached网络模块对比分析

1. 阻塞io、非阻塞io、异步io、同步io、io多路复用;
2. select、epoll精讲;
3. 几种开源框架reactor实现比较;
上课讲师:mark老师
上课时间:2020/12/30 20:00
上课地址:https://ke.qq.com/course/417774?flowToken=1018091

 

1. 阻塞IO和非阻塞IO的区别在于数据准备阶段(accept)是否阻塞,因为数据从内核态拷贝到用户态(read)肯定是阻塞的

 四个步骤:

  数据没准备好

  数据准备好了

  数组在内核态

  数据在用户态

2. IO多路复用

 2.0 解决了什么问题?

  帮我们得到可操作的fd,不需要我们一直轮询

 2.1 复用什么?复用一个线程

 2.2 多路是什么?多个网络请求

3. epoll 水平触发和边缘触发

边缘: 只能用非阻塞IO

 3.1 读: 由socket 读缓冲区空转为非空 的时候触发

 3.2 写: 写缓冲区满转为不满 的时候触发

水平: 阻塞IO和非阻塞都可以

 3.1 读: socket读缓冲区有数据就会通知

 3.2 写: socket写缓冲区 有空间写就会触发

 

nginx: 边缘触发

redis(reactor模型), skynet, memcached: 水平触发

nginx用来做什么?静态web服务器,数据量大,希望把数据及时在用户态就读完减少系统调用

 

reactor = 非阻塞IO + IO多路复用

redis, skynet是单reactor模型,网络和业务都是在一个线程,不能处理网络密集型业务

nginx是多reactor模型,利用多进程做的

 

 

今日和你聊聊RTSP/RTMP推流那些坑

1.推流架构分析
2.推流缓存队列的设计
3.FFmpeg函数阻塞问题分析
上课讲师:darren老师
上课时间:2021/01/05 20:00
上课地址:https://ke.qq.com/course/417774?flowToken=1018091

1. 音视频都需要时间戳, 假如370KB的图片,需要在40ms发出去,带框需要 370 * (1 << 10) * 8 / 0.04 = 70Mb带框

2. 直播服务分为,RTMP协议

    2.1 推流

    2.2 流媒体缓存

    2.3 拉流

3. 假如有延迟,做法

    3.1 推流drop数据

    3.2 客户端变速或者客户端drop掉非I帧

 

posted on 2020-12-30 20:28  stupid_one  阅读(129)  评论(2编辑  收藏  举报

导航