consul启动 . http://192.168.1.6:8500/

#以server方式启动,UI可以访问,boot引导自己选为leader,网段内PC可访问
consul agent -server -ui -bootstrap -data-dir=data -client=0.0.0.0

建两个项目coreApi、coreApiClient 。分别nuget添加 Steeltoe.Discovery.Consul

在StartUp 配置服务  services.AddDiscoveryClient(Configuration);

appsettings.json 配置 coreApi 项目

  "consul": {
"host": "192.168.1.6",
"port": 8500,
"discovery": {
"register": true,
"serviceName": "coreApi",
"preferIpAddress": true
}
}

coreApiClient 项目

  "consul": {
"host": "192.168.1.6",
"port": 8500,
"discovery": {
"register": true,
"serviceName": "coreApiClient",
"preferIpAddress": true
}
}

coreApi项目提供服务

        [HttpGet]
public UsrDto getUsrDto()
{
var header = contextAccess.HttpContext.Request.Headers;
return new UsrDto()
{
Age = 34,
CreTime = DateTime.Now,
Id = $"BaseDirectory={AppContext.BaseDirectory},ApplicationName={env.ApplicationName},EnvironmentName={env.EnvironmentName}",
LoginAccount = configuration.GetSection("Urls").Value,
Score = 9823.123456m
};
} [HttpPost]
public async Task< string> addUsr(UsrDto usr, string age)
{
var token = Request.Headers["Authorization"].ToString();
await Task.Delay(3 * 1000);
return token;
}

coreApiClient项目调用服务

    public static class Ext {
public static async Task<string> Get(this System.Net.Http.HttpClient httpClient, string uri, string token = "", string tokenKey = "Authorization") { using var request = new HttpRequestMessage(HttpMethod.Get, uri);
request.Headers.TryAddWithoutValidation(tokenKey, token);
var resp = await httpClient.SendAsync(request);
var content = await resp.Content.ReadAsStringAsync();
return content;
} public static async Task<string> Post(this System.Net.Http.HttpClient httpClient, string uri, object data, string token="", string tokenKey= "Authorization") { using var request = new HttpRequestMessage(HttpMethod.Post, uri);
request.Headers.TryAddWithoutValidation(tokenKey, token);
request.Content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
var resp = await httpClient.SendAsync(request);
var content = await resp.Content.ReadAsStringAsync();
return content;
}
}
    [ApiController]
[Route("[controller]/[action]")]
public class WeatherController : ControllerBase { System.Net.Http.HttpClient httpClient; public WeatherController(Steeltoe.Discovery.IDiscoveryClient client) {
Steeltoe.Common.Discovery.DiscoveryHttpClientHandler httpClientHandler = new Steeltoe.Common.Discovery.DiscoveryHttpClientHandler(client);
httpClient = HttpClientHelper.GetHttpClient(httpClientHandler, 10 * 1000);
//httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "123456"); } [HttpGet]
public async Task< string> getUsrDtoProxy() {
return await httpClient.Get("http://coreApi/usr/getUsrDto", "token");
} [HttpGet]
public async Task<string> addUsrProxy() {
return await httpClient.Post("http://coreApi/usr/addUsr?age=12"
, new { Id = "hc", Age = 34, CreTime = DateTime.Now, Score = 23.34 }
, "0987");
}
}

运行两个项目,consul已经注册了

浏览器测试 coreApiClient 的两个接口

http://localhost:20001/Weather/getUsrDtoProxy  正常返回:

http://localhost:20001/Weather/addUsrProxy 浏览器等待3秒后 返回:0987

以上,只测试consul 服务注册与发现,get、post方式。

=======================================

下面,测试一下consul的配置管理 key/value

        [HttpGet]
public async Task< string> getConsulConfig(string key) {
using ConsulClient client = new ConsulClient((i) => {
i.Address = new Uri($"http://{configuration["consul:host"]}:{configuration["consul:port"]}");
});
var byteV = await client.KV.Get(key);
return Encoding.UTF8.GetString(byteV.Response.Value);
}

在consul配置 user、product,测试后可正常取出value。

如果是新建项目,配置项目可通过命令导出和导入:

#导出kv配置,从192.168.1.6节点,具体仅导出user项目,导出到文件consul-kv.json
consul kv export -http-addr=http://192.168.1.6:8500 user > consul-kv.json #导入kv配置,从文件consul-kv.json,只导入文件中内容,不覆盖
consul kv import -http-addr=http://192.168.1.6:8500 @consul-kv.json

aspnetcore 注册中心 consul的更多相关文章

  1. 微服务SpringCloud之注册中心Consul

    Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发 ...

  2. ketchup 注册中心consul使用

    ketcup  git地址:https://github.com/simple-gr/ketchup consul 安装 1.docker pull consul 2.docker run --nam ...

  3. (6)go-micro微服务consul配置、注册中心

    目录 一 Consul介绍 1. 注册中心Consul基本介绍 2.注册中心Consul关键功能 3.注册中心Consul两个重要协议 二 Consul安装 1.使用docker拉取镜像 三 Conf ...

  4. springcloud(十三):Eureka 2.X 停止开发,但注册中心还有更多选择:Consul 使用详解

    在上个月我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件, ...

  5. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十八):注册中心(Spring Cloud Consul)

    什么是 Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...

  6. 服务注册中心Eureka vs Zookeeper vs Consul

    前言 在现在云计算和大数据快速发展的今天,业务快速发展和变化.我们以前的单一应用难以应对这种快速的变化, 因此我们需要将以前单一的大应用不断进行差分,分成若干微小的应用或者服务,这就是微服务的思想.但 ...

  7. Spring Cloud2.0之整合Consul作为注册中心

    使用Consul来替换Eureka Consul简介 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发. 它具有很多优点.包括: 基于 raft ...

  8. Spring Cloud 微服务一:Consul注册中心

    Consul介绍 Consul is a service mesh solution providing a full featured control plane with service disc ...

  9. zookeeper、consul 实现注册中心

    1.Zookeeper 分布式协调工具,可以实现注册中心 所有实现方式基本一致,只需要先开启zookeeper的服务端,然后再打开客户端jar包即可. Zookeeper一开始连接失败,后面又可以了, ...

  10. springlcoud中使用consul作为注册中心

    好久没写博客了,从今天开始重新杨帆起航............................................ springlcoud中使用consul作为注册中心. 我们先对比下注册 ...

随机推荐

  1. 2020-08-20:GO语言中的协程与Python中的协程的区别?

    福哥答案2020-08-20: 1.golang的协程是基于gpm机制,是可以多核多线程的.Python的协程是eventloop模型(IO多路复用技术)实现,协程是严格的 1:N 关系,也就是一个线 ...

  2. 2022-06-01:给定一个数组arr,可能有正、有负、有0,无序。 只能挑选两个数字,想尽量让两个数字加起来的绝对值尽量小。 返回可能的最小的值。

    2022-06-01:给定一个数组arr,可能有正.有负.有0,无序. 只能挑选两个数字,想尽量让两个数字加起来的绝对值尽量小. 返回可能的最小的值. 答案2022-06-01: 排序,双指针. 代码 ...

  3. 新版idea快捷键总结学习----(用于java开发模式)

    选择代码区 ctrl w 如果放到以if开头的语句,可以选择if判断条件所在的代码片段 游标在单个单词下时 选择单词 在选中多个单词时,选择整个字符串 三次点击时,如果不在字符串单词下,用于选择{}内 ...

  4. PE 结构的三种地址

    三种地址   (一)VA(虚拟地址):PE 文件被 Windows 加载到内存后的地址.   (二) RVA(相对虚拟地址):PE 文件虚拟地址相对于映射基地址(对于 EXE 文件来说,映射基地址是 ...

  5. 聊聊MAUI、WinUI3和WPF的优势及劣势

    今天在群里聊到WinUI3的学习及发展,还有他那堪比玩具的使用体验,正好梳理一篇关于WinUI3.MAUI和WPF优劣势,我整理的不是很好,所以又让ChatGPT在生成了一遍,感觉整体还可以.看完可以 ...

  6. 园子的商业化努力-行行AI人才培养「常青藤计划」

    各位园子的小伙伴: 感谢大家长期对园子的支持,AI大模型出现之后,各行各业都在积极思考如何应对,如何把业务场景和AI结合.在这个过程中,AI人才缺乏是最核心的问题. 基于此,园子打算在AI人才培养方面 ...

  7. Python异步编程之web框架 异步vs同步 Redis并发对比

    测试基本信息 主题:比较异步框架和同步框架在RedisIO操作的性能差异 python版本:python 3.8 数据库:redis 5.0.7 压测工具:locust web框架:同步:flask ...

  8. ASP.NET Core 6框架揭秘实例演示[39]:使用最简洁的代码实现登录、认证和注销

    认证是一个确定请求访问者真实身份的过程,与认证相关的还有其他两个基本操作--登录和注销.ASP.NET Core利用AuthenticationMiddleware中间件完成针对请求的认证,并提供了用 ...

  9. 前端Vue自定义简单通用省市区选择器picker地区选择器picker 收获地址界面模版

    前端Vue自定义简单通用省市区选择器picker地区选择器picker 收获地址界面模版,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin ...

  10. golang 实现四层负载均衡

    大家好,我是蓝胖子,做开发的同学应该经常听到过负载均衡的概念,今天我们就来实现一个乞丐版的四层负载均衡,并用它对mysql进行负载均衡测试,通过本篇你可以了解到零拷贝的应用,四层负载均衡的本质以及实践 ...