CS系统框架 - 负载均衡技术详解(Load Balancing) (二)
CS系统框架 - 负载均衡技术详解(Load Balancing) (一)
服务端会部署多个WebService服务器给客户端选择性连接,在客户端必须存放一个配置文件告诉程序我们的服务器位置在那,几个关键属性是ServerName,WebServiceList。
负载均衡服务器XML配置实体类:
IsAvailable:Web服务器是否可用,是否死机,是否超负荷。
IsDefaultServer: 是否预设的服务器。客户端首先尝试连接这个服务器。
ServerName:服务器编号。
ServerCaption:服务器标题,显示名称。
Web服务XML配置实体类:
WebService的连接参数:
ConfigName: WebService名称
RemoteAddress:WebService地址。
因部署多个Web服务器,而每个服务器发布的WebService接口是一致的,只是IP Address不同。客户端程序运行时读取本地XML文件,加载WebService列表。
LoadBalancingServer 与 WebServiceNode 构成一对多关系。
LoadBalancingServer --- 1 -------- *->WebServiceNode 。
Web服务的工厂:
顾名思义,SoapClientFactory类用于创建WebService的实例。通过类工厂可以选择性创建WebService实例,当系统预设的Web服务器忙碌时可选择其它可用的Web服务器。
负载均衡管理器(Load Balancing Management):
FindAnyServer:查找可用WebService服务器。
FindAnyUsableServer:查找可用WebService服务器。
FindDefaultWebServer:查找系统预设的Web服务器。
Instance:负载均衡管理器实例。
LoadBalanceServer:所有Web服务器列表。
InvokeWebMethod:动态调用Web方法。假设当前WebService不可用时系统会自动调用其它可用的WebService的方法。负载均衡关键功能之一。
LoadXML:加载本地XML配置,读取Web服务器列表。
TestChannel:测试WebService通信通道。每个WebService页都必须定义此方法,用于类工厂自动查询Web服务器调用。
销售模块的WebService SOAP客户端,此类系统自动生成。
存货模块的WebService SOAP客户端,此类系统自动生成。
客户端本地配置文件:WebService.LoadBalance.Config.xml
.\Debug\WebService.LoadBalance.Config.xml
<?xml version="1.0" encoding="utf-8" ?>
<WebServerList>
<Server default="true" name="ASP.Net Development Server" caption="ASP.Net开发环境服务器">
<endpoint name="WebServiceSalesModule" address="http://localhost:1534/WebServer/WebServiceSalesModule.asmx"/>
<endpoint name="WebServiceInventoryModule" address="http://localhost:1534/WebServer/WebServiceInventoryModule.asmx"/>
</Server>
<Server default="false" name="IIS Server(LocalHost)" caption="本地IIS服务器(LocalHost) ">
<endpoint name="WebServiceSalesModule" address="http://localhost/LoadBalancingTester/WebServiceSalesModule.asmx"/>
<endpoint name="WebServiceInventoryModule" address="http://localhost/LoadBalancingTester/WebServiceInventoryModule.asmx"/>
</Server>
<Server default="false" name="IIS Server2" caption="其他机器IIS服务器 ">
<endpoint name="WebServiceSalesModule" address="http://192.168.1.7/WebServer/WebServiceSalesModule.asmx"/>
<endpoint name="WebServiceInventoryModule" address="http://192.168.1.7/WebServer/WebServiceInventoryModule.asmx"/>
</Server>
</WebServerList>
扫一扫加作者微信