多协议、性能稳定、丰富API的流媒体服务器软件
在Wowza 的live repeater架构下,边缘服务器如何动态地选择一个源服务器?
在Wowza Streaming Engine的live stream repeater (origin/edge)架构下,本文的这个扩展模块ModuleStreamResolver可以让边缘服务器从源服务器拉流时,可以在多个源服务器中动态地选择其中一个。

内容大纲



前置条件

安装

在Wowza Streaming Engine edge server上的配置

在Wowza Streaming Engine edge server 上的参数

在Wowza Streaming Engine origin server 上地配置

在Wowza Streaming Engine origin server 上的参数

关于这个模块的使用

开发者

前置条件



这个模块适用于Wowza Streaming Engine 4.0.0 及以上版本。

安装



  1. 下载wse-plugin-streamresolver.zip。在Live Repeater 架构下,将这个模块同时部署在边缘服务和源服务器上。

  2. 将下载的zip包进行解压缩,然后将lib/wse-plugin-streamresolver.jar文件拷贝到Wowza Streaming Engine 安装目录的lib目录下([install-dir]/lib).

  3. 重启 Wowza Streaming Engine.

在Wowza Streaming Engine Live Edge Server 上配置Module



在Live repeater架构下的每一个边缘(edge)服务器上,你都需要安装一下这个Module。

Name
Description
Fully Qualified Class Name
ModuleStreamResolver Resolves streams from origin dynamically. com.wowza.wms.plugin.streamresolver.ModuleStreamResolver


在Wowza Streaming Engine Live Edge Server上的参数配置



在边缘服务器上配置好module后,你还可以继续添加以下参数,来调整它的一些默认设置。

Path
Name
Type
Value
Notes
/Root/Application wowzaResolverConfTargetPath String [install-dir]\content\origins.txt 指向定义源服务器地址的文本文件路径(一行一个). (默认:没有设置)
/Root/Application wowzaResolverOriginServers String server1.com,server2.com 如果wowzaResolverConfTargetPath参数没有设置,你可以用这个参数来定义源服务器列表(用逗号隔开)。(默认:没有设置)
/Root/Application wowzaResolverProtocol String rtmp 当边缘服务器到源服务器拉流时,使用的协议(rtmp 或 wowz). (默认: rtmp)
/Root/Application wowzaResolverUDPClientPort Integer 9777 边缘服务器和源服务器之间进行源服务器选择协商的UDP端口,由边缘服务器向源服务器发送UPD包,根据响应,选择一个源服务器,这就是本文的"动态选择"的概念(默认: 9777)
/Root/Application wowzaResolverUDPClientTimeout Integer 2000 一个时长(单位是毫秒),指边缘服务器向源服务器发送Udp包后,等待响应的时长,意思是过了这个时长就不等了 (默认: 2000)
/Root/Application wowzaResolverOriginApplicationName String live (可选项)默认情况下,边缘服务器会请求源服务器上同样的Wowza应用名的应用。但你可以用这个参数定义一个不同的应用。(默认:使用和边缘服务器上同名的应用)
/Root/Application wowzaResolverOriginApplicationInstanceName String _definst_ (可选项) 默认情况下,边缘服务器会请求源服务器上同样的应用实例名的实例。但你可以用这个参数定义一个不同的实例名。(默认:使用和边缘服务器上同样的应用实例名)
/Root/Application wowzaResolverOriginStreamName String myStream (可选项) 默认情况下,边缘服务器会请求源服务器上同样名字的流。但你可以用这个参数定义一个不同的流名字。(默认: 使用和边缘服务器上同样名字的流).
/Root/Application wowzaResolverDebugLog Boolean true (可选项)如果是true,则输出Debug日志,(默认:false).

注意:如果wowzaResolverConfTargetPathwowzaResolverOriginServers 参数都没有被设置,那么将使用定义在Application.xml<Repeater>/<OriginURL>参数中的源服务器列表.

在Wowza Streaming Engine Live Origin Server配置Server Listener



在每一个源(Live Origin)服务器上,首先添加以下的Server Listener。

Fully Qualified Class Name
com.wowza.wms.plugin.streamresolver.ServerListenerLocateSourceStream


在Wowza Streaming Engine Live Origin Server上的参数配置



在Origin服务器上配置完Server Lisener后,你还可以继续在源服务器上的Wowza应用上配置以下参数,来调整它的默认行为。

Path
Name
Type
Value
Notes
/Root/Server wowzaSourceStreamUDPListenerDebug Boolean false 对于来自边缘服务器的请求和响应进行日志输出。(默认: false)
/Root/Server wowzaSourceStreamUDPListenerPort Integer 9777 监听的UDP端口,边缘服务器会向这个端口发送消息。(默认: 9777)
/Root/Server wowzaSourceStreamHostName String mycompany.com:1935 这个源服务器的公开域名或IP地址,可以包含端口号。(默认: null)


关于这个模块的使用



当一个客户端/播放器向边缘服务器请求一个流时,边缘服务器首先会检查自身是否有这个流(已经从一个源服务器拉流了)。 如果没有这个流,则会通过UDP端口向每一个源服务器发送请求,然后选择第一个响应的源服务器,之后就从这个源服务器拉流,然后对客户端/播放器提供这个流服务。

开发者



GitHub上的源代码上可以下载源代码。