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. Python-查询所有python版本

    C:\Users\liujun>where pythonD:\Python\Python310\python.exeD:\Python\Python38\python.exeC:\Users\l ...

  2. Python从0到1丨了解图像形态学运算中腐蚀和膨胀

    摘要:这篇文章将详细讲解图像形态学知识,主要介绍图像腐蚀处理和膨胀处理. 本文分享自华为云社区<[Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解>,作者: eastmou ...

  3. 未来之JavaScript做嵌入式

    只听说过汇编,c做嵌入式,从不曾想JAVAScript也牛到涉入硬件领域了,原本对他的思维定格就是一个浏览器脚本.看来真应了那句话'只有想不到,没有做不到' 话不多说看看这些大佬的帖子在嵌入式设备中使 ...

  4. 使用ptrace将标准输出重定位到文件

    首先使用PTRACE_SYSCALL获取到系统调用号,如果是write则将文件描述符从标准输出变为我们打开的文件 #include <stdio.h> #include <fcntl ...

  5. cmd+ssh配置远程服务器Anaconda3_2023+pytorch

    一.上传Anaconda3到远程服务器 注意:如果要将这个东西安装在anaconda3文件夹里的话,当前这个目录里不能有这个文件夹.(安的时候会自动创建) 二.安装Anaconda3 1. win+r ...

  6. 如何让别人访问你本地允许的Vue本地项目

    步骤一: 将config/index.js  中的host: localhost    改为   host:'0.0.0.0'步骤二:在package.json  将scripts 下面的dev  后 ...

  7. 20230611 再次升级SSD

    家里常用电脑的硬盘又显得捉襟见肘,老规矩,升级SSD.幸亏几年前摸索的方法记录下来了,翻出以前的博客复习一下.为了保险起见,也重新在网上搜了一下,看是不是有新的更方便的方法,答案是没有,只是搜出很多推 ...

  8. 从 SpringApplication 认识 Spring 应用启动过程

    一.SpringApplication 是什么? Spring 应用的启动类. 二.SpringApplication 执行了什么? 创建 ApplicationContext 实例 Applicat ...

  9. Python运维开发之路《高阶函数》

    一.列表生成式,迭代器&生成器 列表生成式 需求:data列表里有如下三个值,需要给每个值加1 1 data = [1,2,3] 2 list = map(lambda x:x+1,data) ...

  10. 安装VMware Workstation 16 Pro

    下载 官网:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html 注:我是在新毒霸软件管 ...