Ocelot网关在.Net Core 的使用
1. 项目环境
.Net Core 2.2 Ocelot 13.5.2
2. 基本使用
* Nuget 安装 Ocelot , Ocelot.Provider.Polly
* 修改 Program.cs
WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext,builder) => {
      builder.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath).AddJsonFile("Ocelot.json");
}).UseStartup<Startup>();
* 修改Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddOcelot().AddPolly();
} public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseOcelot().Wait();
}
* 新建 Ocelot.json,内容如下
{
  "ReRoutes": [
    {
      // - 上游服务配置
      "UpstreamPathTemplate": "/{url}",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ],
      // - 下游服务配置
      "DownstreamPathTemplate": "/{url}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port":
        },
        {
          "Host": "localhost",
          "Port":
        }
      ],
      // - LoadBalancer将决定负载均衡的算法,三种取值
      // RoundRobin:轮流发送
      // LeastConnection:将请求发往最空闲的那个服务器
      // NoLoadBalance:总是发往第一个请求或者是服务发现
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },
      //ClientWhiteList:一个字符串数组,在请求头中包含ClientId=xxx的请求不受限流控制,其中ClientId这个key可以修改,后边会介绍,xxx表示配置的白名单。
      //"EnableRateLimiting:Boolean值,是否启用限流,只有为true时,配置生效。" "Period:限流控制的时间段,可以输入",
      //"1s(1秒),1m(1分),1h(1小时),1d(1天)类似的值,以此类推。" "PeriodTimespan:超过限流限制的次数后,需要等待重置的时间(单位是秒)。",
      //"Limit:在Period时间内最大能访问的数量。" "用一句话描述一下上边的配置:对于除了请求头中包含ClientId=myclient的请求启用限流,1分钟之内该api最多被访问2次,如果已经达到2次,从第2次请求结束起30秒后才能进行下一次访问。",
      "RateLimitOptions": {
        "ClientWhitelist": [],
        "EnableRateLimiting": false,
        "Period": "1m",
        "PeriodTimespan": ,
        "Limit":
      },
      // 熔断  "ExceptionsAllowedBeforeBreaking:允许异常次数,当Ocelot转发给该下游服务连续出现异常次数达到该数字时,Ocelot会进行自动熔断,一段时间内不再向该下游服务转发请求"
      // "DurationOfBreak:熔断时间,单位为ms(毫秒),持续多长时间不向该下游服务转发请求",
      // "TimeoutValue:服务质量配置项,超时时间,单位为ms(毫秒),当Ocelot向下游服务转发请求多长时间后,自动认为该请求超时": null,
      "QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": ,
        "DurationOfBreak": ,
        "TimeoutValue":
      }
    }
  ],
  "GlobalConfiguration": {
    "BaseUrl": "https://api.mybusiness.com"
  }
}
* 启动网关 和API站点
Ocelot网关在.Net Core 的使用的更多相关文章
- Ocelot——初识基于.Net Core的API网关
		
前言 前不久看到一篇<.NET Core 在腾讯财付通的企业级应用开发实践>,给现在研究.Net Core及想往微服务方向发展的人来了一剂强心针.于是我也就立刻去下Ocelot的源码及去阅 ...
 - Ocelot网关统一查看多个微服务asp.net core项目的swagger API接口
		
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 一.准备 前提需要下载安装consul,项目需要懂添加swagger 统一在网关中配置多个微服务的swagger,需要用到服务注册 ...
 - .net core下,Ocelot网关与Spring Cloud Gateway网关的对比测试
		
有感于 myzony 发布的 针对 Ocelot 网关的性能测试 ,并且公司下一步也需要对.net和java的应用做一定的整合,于是对Ocelot网关.Spring Cloud Gateway网关做个 ...
 - .Net Core使用Ocelot网关(一) -负载,限流,熔断,Header转换
		
1.什么是API网关 API网关是微服务架构中的唯一入口,它提供一个单独且统一的API入口用于访问内部一个或多个API.它可以具有身份验证,监控,负载均衡,缓存,请求分片与管理,静态响应处理等.API ...
 - .Net Core with 微服务 - Ocelot 网关
		
上一次我们通过一张架构图(.Net Core with 微服务 - 架构图)来讲述了微服务的结构,分层等内容.从现在开始我们开始慢慢搭建一个最简单的微服务架构.这次我们先用几个简单的 web api ...
 - Ocelot网关
		
Ocelot是一个.net core框架下的网关的开源项目,下图是官方给出的基础实现图,即把后台的多个服务统一到网关处,前端应用:桌面端,web端,app端都只用访问网关即可. Ocelot的实现原理 ...
 - 基于.NET平台的Ocelot网关框架教程汇总
		
Ocelot 框架是基于.NET 开发的 API 网关,API网关是系统内部服务暴露在外部的一个访问入口,类似于代理服务器,就像一个公司的门卫承担着寻址.限制进入.安全检查.位置引导等工作,我们可以形 ...
 - 让 Ocelot 与 asp.net core “共存”
		
让 Ocelot 与 asp.net core "共存" Intro 我们的 API 之前是一个单体应用,各个模块的服务是通过 Assembly 集成在一起,最后部署在一个 web ...
 - Ocelot网关+IdentityServer4实现API权限认证
		
Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butterfly ...
 
随机推荐
- 大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#
			
学习selenium能做什么? 很多书籍.文章中是这么定义selenium的: Selenium 是开源的自动化测试工具,它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web ...
 - iOS开发-Apple Pay-苹果支付
			
转自:http://www.open-open.com/lib/view/open1471952847228.html Apple Pay,是苹果公司在2014年苹果秋季新品发布会上发布的一种基于NF ...
 - 利用python进行微信好友分析
			
欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...
 - 数据库Oracle数字函数
			
数字函数不多: ROUND(arg1):四舍五入保留整数. arg1:数字类型.原数字. arg2:整数类型.小数点保留的位数. SQL> select round(1256.564,2) fr ...
 - 学习Java必看的Java书籍(高清中文最新版附下载链接)
			
今年下半年,我正式系统地学习Java(之前学习C++).最近把学习Java所用到的书籍整理了一下,分享出来,希望对正在学习或准备学习Java的人有一定的帮助. 关于Java的学习路线,和IDE工具In ...
 - python输出日志到文件(每天一个日志)
			
import logging from logging.handlers import TimedRotatingFileHandler logger = logging.getLogger('sim ...
 - 在5分钟内将Spring Boot作为Windows服务启动
			
分享优锐课学习笔记~来看一下如何使用Spring Boot创建Windows服务以及通过配置详细信息来快速启动并运行. 最近不得不将Spring Boot应用程序部署为Windows服务,感到惊讶的是 ...
 - 【Vuejs】351- 带你解析vue2.0的diff算法
			
前言 vue2.0加入了virtual dom,有向react靠拢的意思.vue的diff位于patch.js文件中,该算法来源于snabbdom,复杂度为O(n).了解diff过程可以让我们更高效的 ...
 - 小白学 Python 爬虫(20):Xpath 进阶
			
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
 - CentOS搭建yum源及EPEL仓库
			
一.CentOS搭建yum源 1.备份配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backu ...