Ocelot + Consul的demo
参考大佬的博客写的:https://www.cnblogs.com/alan-lin/p/9126155.html;也可以参考这篇博客:https://www.cnblogs.com/axzxs2001/p/8487521.html
首先下载Consul: https://www.consul.io/downloads.html,本项目是windows下进行测试,然后把下载的添加到
的path中;这样的话环境变量接配置好了
项目结构如下:
加一个core的web空白项目TestApiGateway;在nuget中找到包ocelot;添加一个Ocelot.json的文件:
{
//路由配置
"ReRoutes": [
{
"UpstreamPathTemplate": "/apiservice/{controller}/{action}", //请求路径模板
"UpstreamHttpMethod": [ "Get", "POST" ], //请求方法数组
"DownstreamPathTemplate": "/apiservice/{controller}/{action}", //下游请求地址模板
"DownstreamScheme": "http", //请求协议,目前应该是支持http和https
"DownstreamHostAndPorts": [ //下游地址和端口
{
"host": "localhost",
"port":
},
{
"host": "localhost",
"port":
}
],
"LoadBalancerOptions": { //负载均衡 RoundRobin(轮询)/LeastConnection(最少连接数)/CookieStickySessions(相同的Sessions或Cookie发往同一个地址)/NoLoadBalancer(不使用负载)
"Type": "RoundRobin"
}
}
], "GlobalConfiguration": { //全局配置
"BaseUrl": "http://localhost:5000" //告诉别人网关对外暴露的域名
}
}
然后修改俩个类如下:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build()
.Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, builder) => {
builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
.AddJsonFile("Ocelot.json");//testOcelot.json
})
.UseKestrel()
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();
}
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddOcelot();
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseOcelot().Wait(); //app.Run(async (context) =>
//{
// await context.Response.WriteAsync("Hello World!");
//});
}
}
这个这个网关项目基本就配置完了
现在添加两个api项目TestServiceA和TestServiceB,修改Startup的端口分别为5011和5012
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5011")
.UseStartup<Startup>();
这个是项目不是在debug启动下的端口配置,还需要修改appsettings.json文件如下,是为了区分调用的api是哪个
{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
},
"AppName": "ServiceA"
}
然后是接口的类容,只留下get和post请求即可,这个接口的返回结果可以修改,
[Route("apiservice/[controller]/[action]")]
[ApiController]
public class ValuesController : ControllerBase
{
public IConfiguration Configuration { get; } public ValuesController(IConfiguration configuration)
{
Configuration = configuration;
} // GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1A", "value2A" };
} // GET api/values/5
[HttpGet]//("{id}")
public ActionResult<string> Getid(int id)
{
return HttpContext.Request.Host.Port + "=>" + Configuration["AppName"] + "=>" + DateTime.Now.ToString() + "=>" + id;
} // POST api/values
[HttpPost]
public string Post(string value)
{
return HttpContext.Request.Host.Port + "=>" + Configuration["AppName"] + "=>" + DateTime.Now.ToString() + "=>" + value;
} [HttpGet]
public IActionResult Heathle()
{
return Ok();
}
}
如果是要debug下启动项目测试:右键项目属性修改端口
测试效果如下:
aaarticlea/gif;base64,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" alt="" />
这个接口就找轮播了
添加 Consul的支持
conf 配置目录
data 缓存数据目录,可清空里面内容
dist Consul UI目录
consul.exe 注册软件
startup.bat 执行脚本
修改配置文件service.json
{
"encrypt": "7TnJPB4lKtjEcCWWjN6jSA==",
"services": [
{
"id": "ApiServiceA",
"name": "ApiServiceA",
"tags": [ "ApiServiceA" ],
"address": "localhost",
"port": ,
"checks": [
{
"id": "ApiServiceA_Check",
"name": "ApiServiceA_Check",
"http": "http://localhost:5011/apiservice/values/heathle",
"interval": "10s",
"tls_skip_verify": false,
"method": "GET",
"timeout": "1s"
}
]
},
{
"id": "API服务A",
"name": "ApiServiceB",
"tags": [ "ApiServiceB" ],
"address": "localhost",
"port": ,
"checks": [
{
"id": "ApiServiceB_Check",
"name": "ApiServiceB_Check",
"http": "http://localhost:5012/apiservice/values/heathle",
"interval": "10s",
"tls_skip_verify": false,
"method": "GET",
"timeout": "1s"
}
]
}
]
}
修改startup.bat 脚本
consul agent -server -datacenter=dc1 -bootstrap -data-dir ./data -config-file ./conf -ui-dir ./dist -node=n1 -bind 127.0.0.1 -client=0.0.0.0
然后启动api服务和startup.bat 脚本,效果如下
最后这是在一个服务上的,要在多个服务商的参考:https://www.cnblogs.com/alan-lin/p/9126155.html,我也是按这个博客来写的demo,然后记个笔记;哈哈哈
ocelot配置文件基本参数,具体参考官方文档:https://ocelot.readthedocs.io/en/latest/index.html
{
"ReRoutes": [ //路由是API网关最基本也是最核心的功能、ReRoutes下就是由多个路由节点组成。
{
"DownstreamPathTemplate": "", //下游服务模板
"UpstreamPathTemplate": "", //上游服务模板
"UpstreamHttpMethod": [ "Get" ],//上游方法类型Get,Post,Put
"AddHeadersToRequest": {},//需要在转发过程中添加到Header的内容
"FileCacheOptions": { //可以对下游请求结果进行缓存,主要依赖于CacheManager实现
"TtlSeconds": ,
"Region": ""
},
"ReRouteIsCaseSensitive": false,//重写路由是否区分大小写
"ServiceName": "",//服务名称
"DownstreamScheme": "http",//下游服务schema:http, https
"DownstreamHostAndPorts": [ //下游服务端口号和地址
{
"Host": "localhost",
"Port":
}
],
"RateLimitOptions": { //限流设置
"ClientWhitelist": [], //客户端白名单
"EnableRateLimiting": true,//是否启用限流设置
"Period": "1s", //每次请求时间间隔
"PeriodTimespan": ,//恢复的时间间隔
"Limit": //请求数量
},
"QoSOptions": { //服务质量与熔断,熔断的意思是停止将请求转发到下游服务。当下游服务已经出现故障的时候再请求也是无功而返,
并且增加下游服务器和API网关的负担,这个功能是用的Polly来实现的,我们只需要为路由做一些简单配置即可
"ExceptionsAllowedBeforeBreaking": , //允许多少个异常请求
"DurationOfBreak": , //熔断的时间,单位为秒
"TimeoutValue": //如果下游请求的处理时间超过多少则自如将请求设置为超时
}
}
],
"UseServiceDiscovery": false,//是否启用服务发现
"Aggregates": [ //请求聚合
{
"ReRouteKeys": [ //设置需要聚合的路由key
"booking",
"passenger"
],
"UpstreamPathTemplate": "/api/getbookingpassengerinfo" //暴露给外部的聚合请求路径
},
"GlobalConfiguration": { //全局配置节点
"BaseUrl": "https://localhost:5000" //网关基地址
}
}
路由分开写要注意,不然报错
限流和聚合,聚合只能get请求,返回json类型
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/apiA/{controller}/{action}", //api地址
"UpstreamPathTemplate": "/api/{controller}/{action}", //请求输入的地址
"UpstreamHttpMethod": [ "Get", "POST" ],
"ReRouteIsCaseSensitive": false,
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5011
}
]
},
{
"DownstreamPathTemplate": "/apiB/{controller}/{action}",
"UpstreamPathTemplate": "/api2/{controller}/{action}",
"UpstreamHttpMethod": [ "Get", "POST" ],
"ReRouteIsCaseSensitive": false,
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5012
}
]
},
{
"DownstreamPathTemplate": "/apiA/Values/Get",
"UpstreamPathTemplate": "/api/getbooking",
"UpstreamHttpMethod": [ "Get" ],
"ReRouteIsCaseSensitive": false,
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5011
}
],
"Key": "booking",
"RateLimitOptions": { //限流
"ClientWhitelist": [],
"EnableRateLimiting": true,
"Period": "1s",
"PeriodTimespan": 15,
"Limit": 1
}
},
{
"DownstreamPathTemplate": "/apiB/Values/Get",
"UpstreamPathTemplate": "/api/getpassenger",
"UpstreamHttpMethod": [ "Get" ],
"ReRouteIsCaseSensitive": false,
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5012
}
],
"Key": "passenger"
}
],
"GlobalConfiguration": {
"BaseUrl": "https://localhost:5010"
},
"Aggregates": [
{
"ReRouteKeys": [ //聚合的路由
"booking",
"passenger"
],
"UpstreamPathTemplate": "/api/getbookingpassengerinfo" //聚合请求地址
}
]
}
限流请求超过次数结果
聚合请求结果
demo的地址:https://gitee.com/cainiaoA/ocelot_consuls_demo
Ocelot + Consul的demo的更多相关文章
- Ocelot + Consul的demo(二)集群部署
把服务A和服务B接口分别部署在两个ip地址上 修改 services.json文件, { "encrypt": "7TnJPB4lKtjEcCWWjN6jSA==&quo ...
- .net core Ocelot Consul 实现API网关 服务注册 服务发现 负载均衡
大神张善友 分享过一篇 <.NET Core 在腾讯财付通的企业级应用开发实践>里面就是用.net core 和 Ocelot搭建的可扩展的高性能Api网关. Ocelot(http:// ...
- 【微服务No.4】 API网关组件Ocelot+Consul
介绍: Ocelot是一个.NET API网关.该项目针对的是使用.NET运行微服务/面向服务架构的人员,他们需要一个统一的入口进入他们的系统.然而,它可以处理任何说HTTP并在ASP.NET Cor ...
- 负载均衡之Ocelot+Consul(配置文件注册服务)
继上篇 Ocellot 做负载均衡之后,本篇将记录 Ocelot + Consul 试验如何做服务发现和服务注册. 服务发现和服务注册的背景知识,一搜满街都是. 在此,我还是写下自己对这个术语的理解吧 ...
- 负载均衡之Ocelot+Consul(WebAPI注册服务)
上一篇 负载均衡之Ocelot+Consul(文件配置注册服务),介绍了如何通过json文件注册服务,本篇将学习如何通过web api 注册服务. 在展开学习过程之前,且先总结一下 consul服 ...
- Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网关Ocelot+Consul
相关文章 Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现 Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网 ...
- ocelot+consul+identity4的使用demo
Ocelot网关搭建 搭建core控制台项目 本demo采用2.1版本 命名为APPIGateWay 在Nuget包中添加Ocelot引用 选用8.0.0版本 添加Ocelot.json 文件 内容为 ...
- Ocelot + Consul + Registrator 基于Docker 实现服务发现、服务自动注册
目录 1. Consul集群搭建 1.1 F&Q Consul官方推荐的host网络模式运行 2. Registrator服务注册工具 2.1 F&Q Registrator悬挂服务 ...
- Ocelot + Consul实践
关于Consul(https://www.consul.io)是一个分布式,高可用,支持多数据中心的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla ...
随机推荐
- YouTube 网站的架构演进——阅读心得
基础平台 Apache Python Linux(SuSe) MySQL psyco,一个动态的Python到C的编译器 lighttpd代替Apache做视频播放 状态 支持每天超过5亿的视频点击量 ...
- Flutter子组件调用父组件方法修改父组件参数
子组件调用父级组件方法的主要实现是父组件给子组件传入一个方法,然后在子组件中调用父级方法来修改父级的参数.看一下效果图 父级组件实现 在父级组件中写一个_editParentText的方法来修改组件中 ...
- java Date 转mysql timestamp 秒数不一致
mysql的字段类型是timestamp(0), java的类型的是util.Date, 在插入数据的时候发现, 数据库的实际数据秒数比预想的数据偶尔会大1秒. 问题的原因: mysql的timest ...
- Python3 编程之字符串处理
Python3 编程之字符串处理 在编程中最常见的任务就是字符串的处理,So,学好字符串的使用非常重要 一.变量的定义规范 Python中声明变量时,要符合以下规则为准: 只能使用数字.字母.下划线组 ...
- delphi DBTreeview与数据库连接的数据存取
//操作: procedure TForm1.act_GetListExecute(Sender: TObject); begin FieldList := TStringList.create; T ...
- error_reporting函数引起的error_log配置失效的问题
由于项目代码中大量使用了error_reporting(0);导致php.ini中的error_log失效,不记录错误日志, 导致调试起来非常不便,耗费大量的时间,所以在php.ini的配置中禁止掉e ...
- Spring Boot连接DB2查询结果时报错“java.lang.AbstractMethodError: com.ibm.db2.jcc.t4.b.isValid(I)Z”的解决办法
关于在maven项目中如何添加DB2的坐标的详细,见:https://www.cnblogs.com/zifeiy/p/7918554.html Spring Boot项目中的application. ...
- AJAX的个人见解
ajax是什么? 在学习的过程中,我虽然在学习ajax但是对ajax的具体的意义不甚了解,对此我们就来看看什么ajax吧. Ajax的全称是:AsynchronousJavaScript+XML 2. ...
- swift 第十课 cocopod 网络请求 Alamofire
这个 cocopod 真的是不容易,差点就放弃了…… 还好,我足够的坚持…… 还是首先说下具体的步骤,希望能记得足够的详细…… 1.打开终端,cd 到自己项目的文件夹 cd 文件路径 2.执行 vim ...
- springmvc项目 logback.xml配置 logstash日志收集
配置logback,需要一个转接的Appender,可以通过Maven依赖加到项目中: <dependency> <groupId>com.cwbase</groupId ...