我的编程空间,编程开发者的网络收藏夹
学习永远不晚

.Net Core服务治理Consul使用服务发现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

.Net Core服务治理Consul使用服务发现

先思考一些问题:它是做什么的、以及怎么使用它。带着这些问题往下走。

consul是做什么的

consul用于微服务下的服务治理。服务治理是什么?它包含但不限于:服务发现、服务配置、健康检查、键值存储、安全服务通信、多数据中心等。

为什么需要服务治理?举个例子:最开始的服务比较简单,各服务之间通过API就能访问。后面业务复杂了,服务也跟着复杂了,搞分布式了,而分布式又必然是多服务器部署,这就有一个问题:如果服务之间还是用API访问,那某个服务所在的服务器挂掉以后这个服务就不能用了,也不能自动转移,那么只能人肉运维了。这时候大家在想:如果下游调用上游,只需要一个统一的地址,不用关注负载均衡、节点失效之类的问题,也不用关注可用性,这些都有一个中间件来完成,那该有多好。这个中间件要做的事情,就是服务治理,也就是本文的consul,它就是解决这个事的。但其实也不是只有它能做这个事,zooKeeper、etcd也能做这个事,也没有什么高下之分,用什么主要看自己,看公司。对自己来说,哪个摸得透、玩的熟就用哪个。对公司来说,哪个市场认可度高就用哪个,说白了就是哪个用的人多。用的人多会的人就多,招人换人速度就快了,互联网企业追求的不就是速度么?“时间就是金钱,效率就是生命”,这句话早期在深圳随处可见,至今仍然适用。

题外话有点多,接着往下走。

怎么使用consul

这里只讲docker内的consul。首先下载一个镜像:

dokcer pull consul

然后运行起来:

docker run -itd -p 8700:8500 --name myconsuldemo consul

成功运行后能看到如下页面:

tips:consul的默认端口是8500,docker启动可以映射到任意端口。

服务注册

服务发现的概念,简单来说就是所有节点程序启动时都去consul注册一下,注册后的信息统一保存在consul中以供调用。是不是很简单?

现在net core 3.1下完成consul服务注册。

首先需要添加nuget包:

然后自行封装一个注册服务,节省时间先上源码:

public static void Reg(IConfiguration configuration)
        {
            string ip = configuration.GetSection("ip").Value.ToString();

            string port = configuration.GetSection("port").Value.ToString();

            string weight = configuration.GetSection("weight").Value.ToString();

            string address = configuration.GetSection("address").Value.ToString();//consul的启动地址

            string center = configuration.GetSection("center").Value.ToString();//数据中心名称

            ConsulClient client = new ConsulClient(x =>
            {
                x.Address = new Uri(address);
                x.Datacenter = center;
            });

            client.Agent.ServiceRegister(new AgentServiceRegistration()
            {
                ID = $"server {ip}:{port}",
                Name = "shenzhen-ma",//分组名称
                Address = ip,
                Port = int.Parse(port)
            });
        }

配置文件:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ip": "127.0.0.1",
  "port": 5100,
  "weight": 1,//权重,负载均衡的重要参数
  "address": "http://127.0.0.1:8700",//consul地址
  "center": "dc1"//数据中心
}

最后,这个服务需要在程序启动的时候调用,只一次就好。直接把调用放在startup里就好,这样程序启动的时候就会自动注册一个服务。

为了能够动态修改配置文件,接下来通过控制台启动程序:

dotnet run --urls="http://*:5000" --ip="127.0.0.1" --port=5000

启动成功以后,转到consul的ui看一下:

能看到多了一个分组【shenzhen-ma】,点进去看下我们的服务:

127.0.0.1:5000,没毛病。这时候模拟一下多节点,再多启动两个程序试试看:

5001,5002也自动注册进入了这个分组。

因为时间关系,今天只能写到这里了,还有很多东西没有写,服务调用、健康检查什么的,我会尽快再发文的。

到此这篇关于.Net Core服务治理Consul使用服务发现的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

.Net Core服务治理Consul使用服务发现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

.Net Core服务治理Consul健康检查方法是什么

这篇文章主要讲解了“.Net Core服务治理Consul健康检查方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net Core服务治理Consul健康检查方法是什么”吧!健康检
2023-06-26

SpringCloud Eureka服务治理之服务注册服务发现

这篇文章主要介绍了SpringCloud Eureka服务治理服务注册和服务发现概念详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

.NET Core如何使用Worker Service创建服务

这篇文章主要介绍了.NET Core如何使用Worker Service创建服务,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求来源在几年前, 做的项目是依赖Windows
2023-06-29

配置管理和服务发现之Confd和Consul使用场景详解

这篇文章主要为大家介绍了配置管理和服务发现之Confd和Consul使用场景详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-07

基于Docker的Consul集群实现服务发现

服务发现其实简单说,服务发现就是解耦服务与IP地址之间的硬绑定关系,以典型的集群为例,对于集群来说,是有多个节点的,这些节点对应多个IP(或者同一个IP的不同端口号),集群中不同节点责任是不一样的。比如说一个数据集群中,可以分为读节点或者写节点,写节点和读节点
基于Docker的Consul集群实现服务发现
2015-11-26

Asp.Net Core怎么使用Ocelot实现服务注册和发现

本文小编为大家详细介绍“Asp.Net Core怎么使用Ocelot实现服务注册和发现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Asp.Net Core怎么使用Ocelot实现服务注册和发现”文章能帮助大家解决疑惑,下面跟着小编的思路
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录