我在负载平衡方案中托管了 WCF 服务。该服务使用 IIS 托管。有两台服务器是负载平衡的。
以下是end points
服务器中的。
https://labA.myCompany.com:44330/MyService/InternalService.svc
https://labB.myCompany.com:44330/MyService/InternalService.svc
我保持host base address
不变
baseAddress=" https://test-LoadBalanced.myCompany.com/MyService".
此主机基地址来自负载平衡地址。
当我输入https://test-LoadBalanced.myCompany.com/MyService/InternalService.svc时 ,我可以获得服务页面。在里面,有时我会得到 ServerA 盒子的端点地址和有时服务器 B 盒子的端点地址的 wsdl 链接。
参考
WCF服务端点与主机基地址问题的答案说
在 IIS 上托管 WCF 服务时,基地址只能是 .svc 文件的 URL。
以下来自WCF 深度寻址
客户不知道服务的基地址,也不需要在他们的网络上支持类似的东西。因此,您不会在客户端对象模型或配置部分中找到与基地址相关的任何内容。客户端只需选择一个特定的端点,该端点总是配置有一个绝对地址,而该绝对地址决定了它将在传输过程中使用的地址。
从负载均衡
默认情况下,BasicHttpBinding 在带有 Keep-Alive 值的消息中发送连接 HTTP 标头,这使客户端能够与支持它们的服务建立持久连接。此配置提供了增强的吞吐量,因为可以重用先前建立的连接将后续消息发送到同一服务器。但是,连接重用可能会导致客户端与负载平衡场中的特定服务器强关联,这会降低循环负载平衡的有效性。如果不希望出现这种行为,可以使用带有 CustomBinding 或用户定义的绑定的 KeepAliveEnabled 属性在服务器上禁用 HTTP Keep-Alive。
客户
我使用负载平衡地址创建了一个客户端。但是,在客户端配置中,端点地址是服务器 A 盒子的地址;不是负载平衡地址。
问题
那么,客户端如何利用负载均衡的性能优势呢?它将始终访问服务器 A 以获得服务操作,不是吗?