架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23980|回复: 3

[资料] 【架构篇】ASP.NET Core 基于 Consul 之服务高可用

[复制链接]
发表于 2020-10-16 18:33:07 | 显示全部楼层 |阅读模式
在开发互联网项目中,需要各项服务之间进行数据交互、用户从服务器中获取数据,服务接口高可用显得尤为重要,尤其在电商、支付系统中,高可用也衡量着系统是否健壮。集群的情况下,众多的服务也难以维护。

Consul 回顾

Consul 是HashiCorp公司推出的使用go语言开发的开源工具,用于实现分布式系统的服务发现与配置,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,使用起来较为简单。

【架构篇】.net/c# 基于 Consul 实现分布式配置之Key/Value存储
https://www.itsvse.com/thread-9420-1-1.html

【架构篇】ASP.NET Core 基于 Consul 动态配置热更新
https://www.itsvse.com/thread-9421-1-1.html


Consul 服务发现

Consul服务发现的使用方法:

  • 在每台电脑上都以Client Mode的方式运行一个Consul代理, 这个代理只负责与Consul Cluster高效地交换最新注册信息(不参与Leader的选举)
  • 每台电脑上的服务Service都向本机的consul代理注册 服务名称和提供服务的url
  • 当Computer1上部署的程序ServiceA需要调用服务ServiceB时, 程序ServiceA直接从本机的Consul Agent通过服务名称获取ServiceB的访问地址, 然后直接向ServiceB的url发出请求。


b789b056-2f31-4c2a-88b2-d781b43e0ca8.jpg

代码如下:



在 Startup 类中调用如下:



健康检查

consul 需要向服务定时发送请求,确保服务在正常运行状态,健康检查接口只需要向 consul 返回 200 状态码即可,代码如下:



启动项目,注册服务

控制器随便定义一个 test 方法,如下:



我们进入到项目的bin目录下面,通过命令行启动,代码如下:



a54110bf-42b3-4040-8155-4559741957bd.jpg

通过浏览器查看链接:

http://127.0.0.1:8500/ui/dc1/services/test.itsvse

fabb2e16-88d2-47f5-9998-c57ce8500900.jpg

http://127.0.0.1:8500/v1/catalog/service/test.itsvse

json数据如下:

[
    {
        "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f",
        "Node": "DESKTOP-EB7B69D",
        "Address": "127.0.0.1",
        "Datacenter": "dc1",
        "TaggedAddresses": {
            "lan": "127.0.0.1",
            "wan": "127.0.0.1"
        },
        "NodeMeta": {
            "consul-network-segment": ""
        },
        "ServiceKind": "",
        "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0",
        "ServiceName": "test.itsvse",
        "ServiceTags": [
            "test",
            "itsvse"
        ],
        "ServiceAddress": "127.0.0.1",
        "ServiceWeights": {
            "Passing": 1,
            "Warning": 1
        },
        "ServiceMeta": {},
        "ServicePort": 8083,
        "ServiceEnableTagOverride": false,
        "ServiceProxy": {
            "MeshGateway": {},
            "Expose": {}
        },
        "ServiceConnect": {},
        "CreateIndex": 1317,
        "ModifyIndex": 1317
    },
    {
        "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f",
        "Node": "DESKTOP-EB7B69D",
        "Address": "127.0.0.1",
        "Datacenter": "dc1",
        "TaggedAddresses": {
            "lan": "127.0.0.1",
            "wan": "127.0.0.1"
        },
        "NodeMeta": {
            "consul-network-segment": ""
        },
        "ServiceKind": "",
        "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228",
        "ServiceName": "test.itsvse",
        "ServiceTags": [
            "test",
            "itsvse"
        ],
        "ServiceAddress": "127.0.0.1",
        "ServiceWeights": {
            "Passing": 1,
            "Warning": 1
        },
        "ServiceMeta": {},
        "ServicePort": 8082,
        "ServiceEnableTagOverride": false,
        "ServiceProxy": {
            "MeshGateway": {},
            "Expose": {}
        },
        "ServiceConnect": {},
        "CreateIndex": 1314,
        "ModifyIndex": 1314
    }
]


Consul 服务调用

新建一个 .net core 控制台项目,代码如下:



我是随机调用注册的 test.itsvse 服务,执行结果如下:

33f79b92-7f83-4f13-9f6c-3e4404f35600.jpg

最后,源码下载:

游客,如果您要查看本帖隐藏内容请回复




上一篇:【架构篇】ASP.NET Core 基于 Consul 动态配置热更新
下一篇:dmp文件导入异常
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2020-11-30 19:57:38 | 显示全部楼层
w174w174w174
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-7-23 09:31:37 | 显示全部楼层
感谢分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-9-3 09:05:16 | 显示全部楼层
软件,导入上万封邮件,不假死,不卡顿!!!!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-20 05:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表