|
[table][tr][td] 代替在显式和匿名代理中外发请求的情况,反向代理被配置为重定向进入的连接请求。在其到达源服务器之前,客户机的
播不会到达边缘服务器、源服务器和被请求的应用程序中的任何一方。代理集群或源服务器的URI不会在客户机上被找到。反向代理需要一种不同的策略来连接客户机和应用程序。
当请求同一个应用程序实例的所有客户机都连接到集群中的同一台边缘服务器时,集群的工作会最有效。为了实现这个效
率,反向代理需要一个多步处理。
1. 客户机发送一个HTTP请求,该请求包含一个对源服务器的XML.load调用:
http://origin[:<port>]/fms/fpad?uri=<uri>
2. 远程网络上的负载均衡器截获请求并把它路由到集群中的一台边缘服务器。
3. 然后,边缘服务器充当一个FPAD客户机并广播一个FPAD消息。
4. 注册于集群中的边缘服务器以它们的亲和力值作出响应。
5. 广播边缘服务器选择具有最低亲和力值的边缘服务器。
6. 这台边缘服务器把请求的信息发送回客户机。
<?xml version=\\"1.0\\" encoding=\\"utf-8\\" ?>
<fpad>
<proxy>10.133.192.85:1935</proxy>
<timestamp>627539012</timestamp>
<userdata></userdata>
</fpad>
在这里,<proxy>标签包含要连接到的边缘服务器的host:ip地址。
7. 在这里,<proxy>标签包含要连接到的边缘服务器的host:ip地址。 URI连接到源服务器:
7. 然后,客户机使用这个信息建立一个显式连接:首先是连接到边缘服务器,然后利用一个包装URI连接到源服务器:
nc = new NetConnection();
nc.onStatus = function(info)
{
trace(info.code);
}
myXML.onLoad = function(success)uri = "rtmp://yourcompany.com/app/inst";
myXML = new XML();{
if (success)
{
var proxy = this.childNodes[1].childNodes[1].firstChild.nodeValue;
uri = "rtmp://" + proxy + "/?" + uri;
nc.connect(uri);
}
myXML.load("http://yourcompany.com/fcs/fpad?uri=" + uri);}
myXML.load("http://yourcompany.com/fcs/fpad?uri=" + uri);
XML.load() URI中的/fcs/fpad?代码告诉边缘服务器它需要利用命名为uri的URI来广播一个FPAD消息,正如被指定的那样。 |
|