之前写过一篇关于集群 Consul 负载均衡https://blog.csdn.net/qq_38559484/article/details/104041267的文章
里面的记录现在看来是没有写全,所有现在在补充一份(重新写了一次)也是为了让自己加深印象
新加了轮询,权重 均衡策略,网关gataway 缓存 熔断 限流
环境 win10,开发工具 VS2019
能够完成 consul示例 要感谢朝夕教育的Eleven 老师,看他的视频写的
流程图
流程图应该没画错,中间包括了服务的注册与发现,服务的健康检查,
代码我就没分开
服务端很简单,webapi走起
ConsulHelper,服务的注册,里面设置了一些属性 主要是服务的健康检查 ,服务注册到consul,每隔一段时间就去调用一下服务 这样就是健康检查,若是超过多少时间没有响应,将在consul里删除服务。
若是这个服务地址A之前注册到consul里,后来出现异常,从consul里删除,在重新启用该服务地址A,那么consul里也会重新添加该服务地址A
▶在consul集群之前,单服务实例的时候,客户端直接调用服务地址
▶在consul集群后,只需要找到对应的consul地址,根据负载均衡策略调用服务地址
▶在用网关后 只需要配置好网关对应的consul地址,就等于访问consul一样
在没有网关之前,客户端需要访问consul里的服务,需要写上一大堆代码来发现和调用consul里的服务
有了网关之前,这些操作都可以删除,
调用网关,最重要的就是配置网关的配置文件 configuration.json
限流和熔断暂时没试。
几条命令:
1 启动 consul
consul agent -dev
2 启用服务
dotnet SK.MicServices.Servicesinstance.dll --urls="http://*:4557" --ip="127.0.0.1" --port=4557 --weight=1
dotnet SK.MicServices.Servicesinstance.dll --urls="http://*:4558" --ip="127.0.0.1" --port=4558 --weight=3
dotnet SK.MicServices.Servicesinstance.dll --urls="http://*:4559" --ip="127.0.0.1" --port=4559 --weight=6
port 是端口,weight 是权重 若是轮询或者平均分配 则可以不用weight
3最后是启动 网关
dotnet SK.MicServices.GatewayDemo.dll --urls="http://*:9527" --ip="127.0.0.1" --port=9527
这里注意,之前我想把端口设置为 666 或者888这样的 结果访问不了 换个端口就可以了
结果图:
调用网关结果:这里做了缓存,在不同的时间刷新的,可以看到调用同一个网关地址,返回不同的服务端口