.NET Core微服务二:Ocelot API网关
.NET Core微服务三:polly熔断与降级
本文的项目代码,在文章结尾处可以下载。
本文使用的环境:Windows10 64位 + VS 2019 + .NET Core 3.1 + Ocelot 14.0.3
Ocelot 相关地址:
https://github.com/ThreeMammals/Ocelot
https://ocelot.readthedocs.io/en/latest/introduction/gettingstarted.html
Ocelot 单独使用,可以查看“Ocelot的简单使用”这篇文章
本文接着“.NET Core微服务一:Consul服务中心”这篇文章,通过cmd运行起“Student”和“Teacher”服务,接下来就是创建网关项目
一、新建webapi项目,命名为“Ocelot_Consul”,去掉HTTPS勾选,不需要Controller,改为控制台方式启动

二、打开程序包管理器控制台,依次执行命令:
Install-Package Ocelot
Install-Package Ocelot.Provider.Consul

三、在项目根目录下,新建配置文件“ocelot.json”
"LoadBalancer"负载均衡类型:
RoundRobin:轮询机制,循环找到可以用的服务
LeastConnection:最少连接数,跟踪发现现在有最少请求或处理的可用服务
NoLoadBalancer:不使用负载均衡,直接访问第一个发现的可用的服务
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/Default/GetList",
"DownstreamScheme": "http",
"UpstreamPathTemplate": "/api/v1/Student/GetList",
"UpstreamHttpMethod": [ "Get" ],
"ServiceName": "Student",
"LoadBalancerOptions": {
"Type": "RoundRobin"
},
"UseServiceDiscovery": true
// ,
//"RateLimitOptions": {
// "ClientWhitelist": [], //白名单
// "EnableRateLimiting": true, //是否限流
// "Period": "30s", //指定一个时间
// "PeriodTimespan": 10, //多少时间后,可以重新请求。
// "Limit": 5 //在Period的指定时间内,最多请求次数
//}
},
{
"DownstreamPathTemplate": "/api/Default/GetList",
"DownstreamScheme": "http",
"UpstreamPathTemplate": "/api/v1/Teacher/GetList",
"UpstreamHttpMethod": [ "Get" ],
"ServiceName": "Teacher",
"LoadBalancerOptions": {
"Type": "RoundRobin"
},
"UseServiceDiscovery": true
}
],
"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Host": "127.0.0.1",
"Port":
}
}
}
四、在Program.cs的CreateHostBuilder中加入
.ConfigureAppConfiguration(conf => {
conf.AddJsonFile("ocelot.json", false, true);
})

五、找到Startup.cs
在ConfigureServices中加入:
services.AddOcelot().AddConsul();
在Configure中加入:
app.UseOcelot().Wait();

六、通过VS启动“Ocelot_Consul”,由于“ocelot.json”配置的对外的路由
“Student”服务的访问地址为:http://localhost:5000/api/v1/Student/GetList
“Teacher”服务的访问地址为:http://localhost:5000/api/v1/Teacher/GetList

代码:https://files.cnblogs.com/files/shousiji/Ocelot_Consul.rar
.NET Core微服务二:Ocelot API网关的更多相关文章
- Spring Cloud 微服务二:API网关spring cloud zuul
前言:本章将继续上一章Spring Cloud微服务,本章主要内容是API 网关,相关代码将延续上一章,如需了解请参考:Spring Cloud 微服务一:Consul注册中心 Spring clou ...
- Spring Cloud 微服务三: API网关Spring cloud gateway
前言:前面介绍了一款API网关组件zuul,不过发现spring cloud自己开发了一个新网关gateway,貌似要取代zuul,spring官网上也已经没有zuul的组件了(虽然在仓库中可以更新到 ...
- spring cloud+dotnet core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- spring cloud+.net core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- Chris Richardson微服务翻译:构建微服务之使用API网关
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关(本文) 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...
- (8)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot网关(Api GateWay)
说到现在现有微服务的几点不足: 1) 对于在微服务体系中.和 Consul 通讯的微服务来讲,使用服务名即可访问.但是对于手 机.web 端等外部访问者仍然需要和 N 多服务器交互,需要记忆他们的服务 ...
- 谈谈微服务中的 API 网关(API Gateway)
前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...
- (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server
用 JWT 机制实现验证的原理如下图: 认证服务器负责颁发 Token(相当于 JWT 值)和校验 Token 的合法性. 一. 相关概念 API 资源(API Resource):微博服务器接口. ...
- 微服务中的 API 网关(API Gateway)
API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...
随机推荐
- C# 实现多线程
1.System.Threading命名空间 System.Threading命名空间提供了使得可以多线程编程的类和接口 其中 (1)Thread类构成了C#多线程编程的支柱,他用于创建并控制线程 ...
- 解决IDEA使用terminal时 git log 乱码
1.配置环境变量: 变量名称-LESSCHARSET 变量值:utf-8 2.重启IDEA
- 用Qt写的简单屏保程序
近日老大提别人家产品都有屏保程序,貌似我们也该有,简单在qtcn.org请教了一下,写了个小程序! 晕倒,半天没找到上传功能!我已经上传到qtcn上了,地址如下: http://www.qtcn.or ...
- Hibernate映射文件详解(News***.hbm.xml)一
Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=P ...
- 从头学pytorch(三) 线性回归
关于什么是线性回归,不多做介绍了.可以参考我以前的博客https://www.cnblogs.com/sdu20112013/p/10186516.html 实现线性回归 分为以下几个部分: 生成数据 ...
- docker 安装 redis5.0.3
一.拉取官方5.0.3镜像 [root@localhost ~]# docker pull redis:5.0.3 下载完成 [root@localhost ~]# docker pull redis ...
- 将 Sidecar 容器带入新的阶段
作者 | 徐迪.张晓宇 导读:本文根据徐迪和张晓宇在 KubeCon NA 2019 大会分享整理.分享将会从以下几个方面进行切入:首先会简单介绍一下什么是 Sidecar 容器:其次,会分享几个阿里 ...
- SpringBoot Starter机制 - 自定义Starter
目录 前言 1.起源 2.SpringBoot Starter 原理 3.自定义 Starter 3.1 创建 Starter 3.2 测试自定义 Starter 前言 最近在学习Sp ...
- 洛谷$P$1486 郁闷的出纳员 $[NOI2004]$ $splay$
正解:$splay$ 解题报告: 传送门! 依然先考虑要呲呲些什么操作鸭$QwQ$ 其实就只要一个删除区间,一个查询第$k$大,还一个插入就欧克? 删除区间的话直接旋转下根什么的然后直接把子树删了就好 ...
- 预告:Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation 15 (PRO)下篇dockerの奥义
困 困 等明天再写吧 主题将围绕在Vmware使用持久化XFS disk后machine rm default后不丢失images containers volumes etc.的奇观 并将展开部署c ...