-
-
Notifications
You must be signed in to change notification settings - Fork 576
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pull的合并思路 #25
Comments
在多子进程模式下,推流请求会被随机地分配给某个子进程,播放请求也会被随机地分配给某个子进程,但是如果为推流服务的子进程和为播放服务的子进程不是同一个子进程,那么播放会失败,所以才有了rtmp_auto_push这个指令,它让某个子进程接收到推流请求后,再把流relay给其他子进程,这样,不管播放请求被分配给哪个子进程,播放都能收到流。而对于播放pull,播放请求被分配给某个子进程,这个子进程根据配置,从上游去拉流,然后把流返回给播放请求,这没涉及到广播。即push流是一对多,而pull流是一对一,没必要合并。不知道这样解释能不能回答你的问题?或者我是否正确理解了你的问题? |
谢谢你的解释, 现在都是多核时代了, 甚至到了64cpu的,也就是说pull拉流回源多则32路回源,再加上分布式部署N台机器的话,无形中对中心机产生了很大的不必要的链接,当然nginx的机制跟srs不一样,srs的做法是单进程多线程所以一个source就可以解决问题。我记得nginx rtmp有个补丁, 这个补丁是将nginx worker每个都绑定不同的端口,端口之间进行合并压缩, 但这个方式我想似乎牺牲了 |
你说的是个问题,多进程的回源请求势必对上游服务器产生更大压力,其实更好的方法是用RTMP 302或者HTTP 302把请求按照一定规则分散到不同的上游服务器,这样不会对同一个上游服务器(或者集群)产生压力,但是很遗憾,支持RTMP 302的客户端非常少,服务器也需要修改代码,没一个好的团队来搞,不太现实。另外,仅仅据我个人测试,Nginx的多进程模型对于推流连接数的提升其实并不太理想,对于播放连接数的提升倒不错。 |
我现在的想法是这样的, 这里有个补丁: |
空了我看看这个,nginx-http-flv-module对server配置块的组织结构跟nginx-rtmp-module相比改动很大,不知道能不能用 |
如果设置为单核,pull会自动合并吗? |
为了减少CDN内部的带宽,边缘节点的多进程和同节点的多台机器合并回源,其实很多CDN厂商都已经做过了 |
nginx rtmp 本身有 rtmp_auto_push 这个指令对多进程的work之间进行流的广播, 从而作出流的合并回源思路, 问题是当pull后端流的时候, 那多进程worker之间如何进行流的广播从而合并回源呢? 今天一直在想这个方案, 没有特别好的思路, 能否给点建议?
The text was updated successfully, but these errors were encountered: