none
WCF回调与NLB部署问题 RRS feed

  • 问题

  • 场景:

    (1)即时通讯WCF服务(使用回调实现消息实时通知),NLB双机集群部署

    (2)一个消息同时发给100个人,该100人登陆时,被NLB自动分配在两台物理服务器(假设各50用户),则该消息仅能发给登陆在该消息发起者所在服务器的50人。

    (3)求救:使用了回调的WCF服务,不能采用NLB形式的部署?有其他实现方式吗?

    2012年11月28日 5:28

答案

全部回复

  • 你好,

    对WSDualHttpBinding可以使用HTTP负载平衡技术来实现负载平衡。详细内容请查看下列文档的WSHttp 绑定和 WSDualHttp 绑定的负载平衡部分。

    http://msdn.microsoft.com/zh-cn/library/ms730128.aspx


    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework

    2012年11月30日 2:32
    版主
  • 非常感谢您的回复。我的实验结果是这样的:

    (0)我的程序是桌面程序,服务端是独立的宿主程序;

    (1)不使用WCF回调的无状态服务,运行非常理想;

    (2)但使用了WCF回调,消息还是不能通知到所有的人,如原(2)一个消息同时发给100个人,该100人登陆时,被NLB自动分配在两台物理服务器(假设各50用户),则该消息仅能发给登陆在该消息发起者所在服务器的50人。

    (3)是否我的配置不正确,还是在NLB环境下,不能采用回调?有其他实现方式吗?

    2012年12月3日 5:58
  • 你好,

    服务器会维护一个订阅用户列表,当收到某用户的消息,该用户就被添加到该列表中,这里消息只能发送到消息发起者所在服务器的用户是因为这两个服务器是独立的,该服务器并不知道另一服务器用户列表的内容。

    参考:

    http://msdn.microsoft.com/zh-cn/library/ms752254.aspx


    Haixia
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年12月4日 9:50
    版主
  • 非常感谢您的回答。

    但我感觉这是一个严重缺陷,NLB是不能很好支持WCF回调的服务的,NLB仅仅是解决IP层面负责均衡的问题。也就是说WCF回调不具备横向扩展性(由一台机器扩展到多台机器的集群),否则需要自己开发一个分布式协作的基础架构。但是如果使用NLB集群,而不使用回调,是否有其他的技术方案能解决我的问题呢?即一个透明的订阅发布系统(不管是多少台服务器集群,所有用户都能收到信息)?

    2012年12月4日 13:17
  • 在你的基础上再套一个MQ就满足你的需求了,这应该不是WCF回调的缺陷,WCF层面不可能了解到负载均衡的细节的.
    2013年6月26日 5:26