欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OpenRTMFP/Cumulus Primer(3)图解CumulusEdge原理

程序员文章站 2022-03-02 18:16:07
...

OpenRTMFP/Cumulus Primer(3)图解CumulusEdge原理

1 CumulusEdge 为 CumulusServer 提供可扩展性

CumulusEdge 为 CumulusServer 分担负载(俗称“扛连接”)。分担什么负载?一台服务的 CPU 资源、内存资源都是有限的,即是配置再高的服务器,对于高并发的应用来说,一台服务器的性能总是不够的。还有,端口号也是有限的(65536个)。

如果使用了 CumulusEdge,CumulusServer 可以将新来的 Clients 根据 CumulusEdge 列表和这些 CumulusEdge 资源的当前状况来分配。

如何选择哪个 CumulusEdge?你可以先理解为一种非常自然简单的方式:ping。比谁ping的快。当有很多 Clients 连接的时候,用 CumulusEdge 显然会快得多。

OpenRTMFP/Cumulus Primer(3)图解CumulusEdge原理
            
    
    博客分类: OpenRTMFP/Cumulus OpenRTMFP/Cumulus 

上图来自 OpenRTMFP/Cumulus 项目主页

CumulusServer 是 OpenRTMFP/Cumulus 的中心,它有如下特点:

  • 可以得到整个 OpenRTMFP/Cumulus 系统中所有 CumulusEdge 的信息;
  • 是 Clients 的网关(Gateway);

CumulusServer 直接与 CumuluEdge 通过文本数据格式传输 Request 和 Response。CumulusEdge 由 CumulusServer 分配 Clients 后,Clients 接下来就只与 CumulusEdge 直接通信了,并完成 ExchangeKey 的解密(Decrypt)、编码(Encode),以及负责完成一些高资源开销的操作,和具有高开销加密操作的握手动作。

简而言之,CumulusEdge 可以帮助 CumulusServer 扩展 Clients 连接数。

2 部署原则

CumulusServer 和 CumulusEdge 对每一个 Client 都必须有一个 public 的端口。形象一些说,可以看下图。下图中的内部结点与外环(虚线)直接的连接,表示与 Clients 之间的连接,这样的连接的端口必须都是 public。而 CumulusServer 与 CumulusEdge 之间的连接,是 private 端口。

OpenRTMFP/Cumulus Primer(3)图解CumulusEdge原理
            
    
    博客分类: OpenRTMFP/Cumulus OpenRTMFP/Cumulus 

如果将 CumulusServer 和 CumulusEdge 部署在一个局域网络内,那么对于 Cumulus 整体的性能很有好处。

3 重定向算法

当 CumulusServer 收到一个新的 Client 的请求时,会检查 CumulusEdge List,如果这个 List 为空,则接下来由 CumulusServer 来“招待”这个 Client。

如果 CumulusEdge List 不为空,这个列表将是按照每个 CumulusEdge 所连接的 Clients 数量来排序的(降序),当一个新的 Client 连接到 CumulusServer 时,CumulusServer 将 CumulusEdge List 中排在前 6 位的取出给这个 Client。为什么可以一次给这个 Client 这么多 CumulusEdge 呢?因为 Flash Player 支持并发连接。当一个 Flash Client 去尝试多个连接时(即开始并发连接时),第一个给这个 Client 响应的 CumulusEdge 会与其建立连接,并一直保持,而 Flash Client 会关闭其他连接。

当然,如果 CumulusServer 将新来的 Client 丢给 CumulusEdge,但并没有在 Client 与 CumulusEdge 之间成功地建立起连接,那么 CumuluServer 就得来“招待”这个 Client 了。

-

转载请注明来自柳大的CSDN博客 Blog.CSDN.net/Poechant

-

 

相关标签: OpenRTMFP/Cumulus