aspnetcore 注册中心 consul
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的更多相关文章
- 微服务SpringCloud之注册中心Consul
Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发 ...
- ketchup 注册中心consul使用
ketcup git地址:https://github.com/simple-gr/ketchup consul 安装 1.docker pull consul 2.docker run --nam ...
- (6)go-micro微服务consul配置、注册中心
目录 一 Consul介绍 1. 注册中心Consul基本介绍 2.注册中心Consul关键功能 3.注册中心Consul两个重要协议 二 Consul安装 1.使用docker拉取镜像 三 Conf ...
- springcloud(十三):Eureka 2.X 停止开发,但注册中心还有更多选择:Consul 使用详解
在上个月我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件, ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十八):注册中心(Spring Cloud Consul)
什么是 Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...
- 服务注册中心Eureka vs Zookeeper vs Consul
前言 在现在云计算和大数据快速发展的今天,业务快速发展和变化.我们以前的单一应用难以应对这种快速的变化, 因此我们需要将以前单一的大应用不断进行差分,分成若干微小的应用或者服务,这就是微服务的思想.但 ...
- Spring Cloud2.0之整合Consul作为注册中心
使用Consul来替换Eureka Consul简介 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发. 它具有很多优点.包括: 基于 raft ...
- Spring Cloud 微服务一:Consul注册中心
Consul介绍 Consul is a service mesh solution providing a full featured control plane with service disc ...
- zookeeper、consul 实现注册中心
1.Zookeeper 分布式协调工具,可以实现注册中心 所有实现方式基本一致,只需要先开启zookeeper的服务端,然后再打开客户端jar包即可. Zookeeper一开始连接失败,后面又可以了, ...
- springlcoud中使用consul作为注册中心
好久没写博客了,从今天开始重新杨帆起航............................................ springlcoud中使用consul作为注册中心. 我们先对比下注册 ...
随机推荐
- Python-查询所有python版本
C:\Users\liujun>where pythonD:\Python\Python310\python.exeD:\Python\Python38\python.exeC:\Users\l ...
- Python从0到1丨了解图像形态学运算中腐蚀和膨胀
摘要:这篇文章将详细讲解图像形态学知识,主要介绍图像腐蚀处理和膨胀处理. 本文分享自华为云社区<[Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解>,作者: eastmou ...
- 未来之JavaScript做嵌入式
只听说过汇编,c做嵌入式,从不曾想JAVAScript也牛到涉入硬件领域了,原本对他的思维定格就是一个浏览器脚本.看来真应了那句话'只有想不到,没有做不到' 话不多说看看这些大佬的帖子在嵌入式设备中使 ...
- 使用ptrace将标准输出重定位到文件
首先使用PTRACE_SYSCALL获取到系统调用号,如果是write则将文件描述符从标准输出变为我们打开的文件 #include <stdio.h> #include <fcntl ...
- cmd+ssh配置远程服务器Anaconda3_2023+pytorch
一.上传Anaconda3到远程服务器 注意:如果要将这个东西安装在anaconda3文件夹里的话,当前这个目录里不能有这个文件夹.(安的时候会自动创建) 二.安装Anaconda3 1. win+r ...
- 如何让别人访问你本地允许的Vue本地项目
步骤一: 将config/index.js 中的host: localhost 改为 host:'0.0.0.0'步骤二:在package.json 将scripts 下面的dev 后 ...
- 20230611 再次升级SSD
家里常用电脑的硬盘又显得捉襟见肘,老规矩,升级SSD.幸亏几年前摸索的方法记录下来了,翻出以前的博客复习一下.为了保险起见,也重新在网上搜了一下,看是不是有新的更方便的方法,答案是没有,只是搜出很多推 ...
- 从 SpringApplication 认识 Spring 应用启动过程
一.SpringApplication 是什么? Spring 应用的启动类. 二.SpringApplication 执行了什么? 创建 ApplicationContext 实例 Applicat ...
- Python运维开发之路《高阶函数》
一.列表生成式,迭代器&生成器 列表生成式 需求:data列表里有如下三个值,需要给每个值加1 1 data = [1,2,3] 2 list = map(lambda x:x+1,data) ...
- 安装VMware Workstation 16 Pro
下载 官网:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html 注:我是在新毒霸软件管 ...