NET Core下去中心化访问HTTP服务集群

(给DotNet加星标,提升.Net技能)

转自:smark

cnblogs.com/smark/p/10114989.html

一般应用服务都会部署到多台服务器之上

1、可以通过硬件得到更多的并发处理能力;

2、可以避免单点太故障的出现,从而确保服务7X24有效运作。

定义访问接口

组件支持通过接口的方式来描述HTTP接口服务,接口的访问方式对使用和维护都具有着极大的便利性,以下是针对以上服务描述的接口

HttpClusterApi对象是线程安全的,所以定义成静态即可;也可以根据服务分类来定义不同的HttpClusterApi(之于内部的工作原理这里就不详细解说了,可以到GitHub上过一步了解)。创建了集群接口对象之后就可以用它来创建接口实例。

同样接口实例也是线程安的,只需要创建一个即可在不同线程和方法里同时调用。其实这样创建接口后还没能正常使用,因为没有定义相应服务地址,可以通过HttpClusterApi添加不同服务地址:

以上是所有请求都负载到Host25和Host29,一般情况都不会直这样定义;*的优先级是最低的,只有没有匹配到其他url描述的情况才会匹配*

平均负载

平均负载是一种最常用的方式,主要是把并发请求平均到不同的服务器上;以下是针对employee相关请求的地址负载到5个服务上.

接下简单地测试一下

测试结果:

以上代码分别把Host29和Host30的权重设置为5其他均为10.

实现是每5秒钟检则一下信息源,集成到HttpClusterApi如下:

设置INodeSourceHandler后组件就会检配置信息,检测错误或版本没有变化的情况就不会更新配置。以下是针对测编写的一个HTTP配置服务:

详细的代码可以访问https://github.com/IKende/FastHttpApi

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181216B0E04000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券