急人,WCF 咋样实现负载均衡的问题?

labthink 2011-12-20 10:56:28
功能描述: 客户端 通过WCF 把数据上传到 服务器上(服务器有三台,分别是A,B,C,三台机器上都含有相同的WCf服务),客户端配置文件中就一个WCF访问地址(A对外发布的WCF地址),我想在对外发布的这个WCF(A机器上)上做一些分发的功能,在A机器上截获WCF请求,然后根据上传的数据判断应该调用那台服务器上WCF服务然后保存数据,如果含有返回数据的,也从通过A机器上调用返回

功能简述:也就是客户端只有一个WCF的固定地址,然后请求到了IIS宿主之后,这个WCf起到一个分发请求到其他机器,并通过这个WCF把相应的数据返回,我想请教一下我应该怎么做,思路是什么?

是否应该在iis中使用httpmodle截获请求,然后动态请求b,c两台机器的WCF服务,然后再返回?,还是这个WCf服务中添加一个WCF服务,然后再去动态请求?


希望做过负载和分发的朋友,给些建议,我一直就没搞清楚,我的思路对不对,怎样效率会高一些

...全文
365 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
labthink 2011-12-21
  • 打赏
  • 举报
回复
我邮箱,xiaosun830910@163.com
labthink 2011-12-21
  • 打赏
  • 举报
回复
如果不冒昧的话,能够给我发一下,http://blog.csdn.net/fangxinggood/article/details/6872015,这个地址的示例代码?
机器人 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fangxinggood 的回复:]

嗯 Routing Service 无法做到自动的负载均衡,这个均衡的过程要你自己实现了。

http://msdn.microsoft.com/en-us/library/9w7b4fz7.aspx
[/Quote]

根据预定义的逻辑,比如action name,endpoint name等进行转发可以。

上面的url贴错了:http://blog.csdn.net/fangxinggood/article/details/6872015
宝_爸 2011-12-20
  • 打赏
  • 举报
回复
lz好像不是要负载均衡,而是:

[Quote=引用 5 楼 labthink 的回复:]

,就是说,我想控制根据一定的业务逻辑实现这种路由分发规则
[/Quote]

宝_爸 2011-12-20
  • 打赏
  • 举报
回复
Routing Service不行吗?
看这个介绍有点像

The Routing Service is a generic SOAP intermediary that acts as a message router. The core functionality of the Routing Service is the ability to route messages based on message content, which allows a message to be forwarded to a client endpoint based on a value within the message itself, in either the header or the message body.

我的理解是根据Message Content的不同,route到不同的Endpoint上去。
机器人 2011-12-20
  • 打赏
  • 举报
回复
嗯 Routing Service 无法做到自动的负载均衡,这个均衡的过程要你自己实现了。

http://msdn.microsoft.com/en-us/library/9w7b4fz7.aspx
宝_爸 2011-12-20
  • 打赏
  • 举报
回复
听起来有点像Routing Service,不过我也不太了解Routing Service.

你自己看看有没有帮助吧
Routing
http://msdn.microsoft.com/en-us/library/ee517421.aspx
宝_爸 2011-12-20
  • 打赏
  • 举报
回复
那没办法,只能自己实现了。
labthink 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 findcaiyzh 的回复:]

必须要自己做负载平衡吗?

我觉得用windows的NLB(网络负载平衡)应该就可以了吧。

设置也不难,就是建立一个cluster,给一个ip,然后把ABC三台机器作为节点加进去。request来到后,NLB就检查负载,决定分发到哪台机器上去。

外面访问cluster的ip.

参考

http://best0.blog.51cto.com/444987/100526
[/Quote],就是说,我想控制根据一定的业务逻辑实现这种路由分发规则
labthink 2011-12-20
  • 打赏
  • 举报
回复
主要的问题是我这里,可能的策略是保存的客户数据太大,可能需要指定请求去那台服务器上保存数据,不是随机的负载均衡
宝_爸 2011-12-20
  • 打赏
  • 举报
回复
必须要自己做负载平衡吗?

我觉得用windows的NLB(网络负载平衡)应该就可以了吧。

设置也不难,就是建立一个cluster,给一个ip,然后把ABC三台机器作为节点加进去。request来到后,NLB就检查负载,决定分发到哪台机器上去。

外面访问cluster的ip.

参考

http://best0.blog.51cto.com/444987/100526
labthink 2011-12-20
  • 打赏
  • 举报
回复
晕,没人理解吗
flyerwing 2011-12-20
  • 打赏
  • 举报
回复
没搞过这么难的。
机器人 2011-12-20
  • 打赏
  • 举报
回复
你没仔细看。我在示例里配置的是两个服务,自然需要两个endpoint。其实暴露给客户的只有一个ip,添加完引用后会在客户端生成两个endpoint。因为是sample所以在一个客户端调用了两个服务地址。
使用 routingservice 之后,客户端只会看到一个地址。

另外根据filter策略,比如将 用户a routing 到 service1,将用户b routing 到service2

看我第二篇blog:http://blog.csdn.net/fangxinggood/article/details/6919027
labthink 2011-12-20
  • 打赏
  • 举报
回复
因为我这边的框架里,客户端那边的程序是需要下载的,而上传服务策略可能有所调整,所以可能存在有些客户端没有下载最新的版本程序,而不能享受新的服务,我就想,这个暴露的服务地址是不变的,然后后台的策略无论怎么调整,因为地址没有变化,所以不会影响客户端
labthink 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fangxinggood 的回复:]

引用 8 楼 fangxinggood 的回复:

嗯 Routing Service 无法做到自动的负载均衡,这个均衡的过程要你自己实现了。

http://msdn.microsoft.com/en-us/library/9w7b4fz7.aspx


根据预定义的逻辑,比如action name,endpoint name等进行转发可以。

上面的url贴错了:http:……
[/Quote],看了一下这篇文章,我感觉满足不了我的要求,我的意思是暴露给客户端的服务就是一个定死的地址,然后暴露出来的这个服务接受到请求之后,再判断然后分发,客户端只知道一个服务地址,这篇文章里,客户端还是预先配置好了两个服务啊

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧