通过nginx负载marcomedia AMF flash remoting RIA客户端

  通常我们使用nginx来做http的负载,今天我通过试验发现,nginx默认是支持AMF协议的.不得不赞一个!

 

  通常我们在flash客户端中负载的话是修改remoting service的gateway地址,比如有2个服务,部署于game1.xxx.com 和 game2.xxx.com 那么flash中AS的网关调用写法就是调用 http://game1.xxx.com/gateway.aspx 或者 http://game2.xxx.com/gateway.aspx

 

  这样做,负载就很麻烦,域名改来改去的,还得在服务器aspx中自己写负载逻辑.那么如果用nginx集中进行负载的话,就好办了.我直接上nginx.conf

 

     server {
         listen 80;
         server_name center.xxx.com;
  location / {
  if ($query_string = "id=game2") {
               proxy_pass http://game2.xxx.com;
  }
  if ($query_string = "id=game") {
               proxy_pass http://game.xxx.com;
                }
  }

 

嘿嘿.这样一来,flash AS就简单了 直接改成

http://center.xxx.com/gateway.aspx?id=game2

http://center.xxx.com/gateway.aspx?id=game

 

这样nginx后端的2台应用服务器就被隐藏了,同时负载由nginx的upstream控制,相当轻松.!

 

PS:linux版本的nginx比windows版本的nginx性能和速度快很多的.windows上负载的话,不推荐这个方案了,推荐用porttunnel做端口映射.

 

另外,我解释下marcomedia AMF协议,这个协议,本质上,我们从HTTP协议的角度去分析,会发现它就是一个POST数据,通常情况下POST可以POST文件,也就可以传输二进制流数据,那么AMF实际上就是MM自己搞的一套对象封送协议,类似webservice的SOAP,但是不兼容.原理是相同的,也即是序列化之后的对象封送,所以MM才给这个机制取了个名字叫做 flash remoting , 也就是这个道理.OOP的必然发展产物.因此,nginx针对post负载就行了.那么另一方面,性能略低于GET方式提交数据的方式,主要因为有个反序列化的过程.但是安全性,自由性,数据容错性相对GET高的多.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKULAKK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值