日期:2014-05-18  浏览次数:21003 次

这样的分布式怎么实现,应该选择哪种通信方式?
有主控制服务器Server1,上边运行着程序A,A维持着多个任务队列。
有作业服务器Server2、server3、server4...serverN,上边分别运行着程序B1,B2,B3,...Bn
B1到Bn分别从A中任务队列获取任务并执行,并且定时将执行情况发送至A应进行统计
所有有服务器处于同一局域网 B1至Bn以及A的管理界面需采用C/S结构  

请问程序间应该如何通信 把A做成WebServer? 还是用Remoting? 或者其他的方式?

------解决方案--------------------
好像有个开源项目和楼主的情况类似,其主要是为了一般计算机用户向科学计算贡献剩余计算能力的,叫什么名字我真记不得了。
------解决方案--------------------
试试WCF
------解决方案--------------------
WCF MSMQ
------解决方案--------------------
采用WCF的netMSMQBibnding为用队列构建分布式应用程序提供支持。
------解决方案--------------------
如果业务量很大,数据通信非常频繁的话,SOCKET可能是唯一的选择,WCF,Remoting通信损耗都非常大,要处理的话得用异步通信方式,需要维护几个队列:
server1上的任务队列的入栈及出栈要异步进行。
server1上的命令队列(比如服务器上线、离线、汇报进度等)
各个分布处理Bn服务器的任务收发队列
如果要求可以断线接续还要考虑设置断线接续队列等。

假设你的意图是服务器B1~Bn完成当前任务后取新任务的情况(这样比较简单,效率也较高),就要定义好相关命令协议(比如取任务、收任务等)

总之,socket通信有些难度,但效率比其他方式高N倍(相当于增加N台服务器)
------解决方案--------------------
如果无大数据传输,建议用WCF。(需要.net 3.5支持)