.NET Core微服务一:Consul服务中心

.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网关的更多相关文章

  1. Spring Cloud 微服务二:API网关spring cloud zuul

    前言:本章将继续上一章Spring Cloud微服务,本章主要内容是API 网关,相关代码将延续上一章,如需了解请参考:Spring Cloud 微服务一:Consul注册中心 Spring clou ...

  2. Spring Cloud 微服务三: API网关Spring cloud gateway

    前言:前面介绍了一款API网关组件zuul,不过发现spring cloud自己开发了一个新网关gateway,貌似要取代zuul,spring官网上也已经没有zuul的组件了(虽然在仓库中可以更新到 ...

  3. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  4. spring cloud+.net core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  5. Chris Richardson微服务翻译:构建微服务之使用API网关

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关(本文) 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...

  6. (8)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot网关(Api GateWay)

    说到现在现有微服务的几点不足: 1) 对于在微服务体系中.和 Consul 通讯的微服务来讲,使用服务名即可访问.但是对于手 机.web 端等外部访问者仍然需要和 N 多服务器交互,需要记忆他们的服务 ...

  7. 谈谈微服务中的 API 网关(API Gateway)

    前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...

  8. (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server

    用 JWT 机制实现验证的原理如下图:  认证服务器负责颁发 Token(相当于 JWT 值)和校验 Token 的合法性. 一. 相关概念 API 资源(API Resource):微博服务器接口. ...

  9. 微服务中的 API 网关(API Gateway)

    API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...

随机推荐

  1. 19.yield和send的区别

    转载:https://www.jianshu.com/p/ccb5e7da3fd8 https://www.cnblogs.com/xhcdream/p/8304953.html https://ww ...

  2. PLsql下载官网下载地址

    https://www.allroundautomations.com/registered/plsqldev.html

  3. [梁山好汉说IT] 区块链在梁山的应用

    [梁山好汉说IT] 区块链在梁山的应用 0x00 摘要 区块链属于一种去中心分布式数据存储系统,有其擅长的应用场景,也有其缺点. 下面用梁山为例来阐释下区块链部分概念&应用. 0x01 梁山好 ...

  4. flask的url处理器(url_defaults和url_value_preprocessor)

    url处理器的作用:对于一部分资源, 你并不是很清楚该如何设定其 URL 相同的部分.例如可能有一些URL包含了几个字母来指定的多国语言语种,但是你不想在每个函数里都手动识别到底是哪个语言 rom f ...

  5. DEVOPS技术实践_12:创建持续集成的管道

    持续集成不仅包含了Jenkins或者相关其它的CI工具,也包含了包含代码如何控制,采用的什么分支策略等.不同的组织可能采用不同的类型的策略来完成CI,策略类型和项目的类型的有很大的关系. 一 分支策略 ...

  6. 洛谷$P$2252 取石子游戏 博弈论

    正解:博弈论 解题报告: 传送门! 威佐夫博弈板子昂$QwQ$ 关于这一类问题也有个结论,是说,先手必败的状态一定形如$(\left \lfloor i+\phi \right \rfloor,\le ...

  7. SQL预处理

    每向数据库发送一条SQL语句,数据库中的SQL解释器就会将SQL语句转换成数据库底层命令,然后执行该命令完成相关的数据库操作.如果频繁的向数据库提交SQL语句,势必会增加数据库中SQL解释器的负担,进 ...

  8. 《美国纽约摄影学院摄影教材》PDF教材

        下载地址: 美国纽约摄影学院摄影教材(上册).pdf 美国纽约摄影学院摄影教材(下册).pdf 欢迎你到纽约摄影学院来,我们急切地等待着开课,你们也在 跃跃欲试了.那就让我们马上开始吧! 你已 ...

  9. 纯css 实现大白

    首先是用html 语言来搭建框架 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  10. docker练习-堆栈

    介绍 分布式应用程序层次结构的顶部:堆栈. 堆栈是一组相互关联的服务,它们共享依赖关系,并且可以协调和缩放在一起. 单个堆栈能够定义和协调整个应用程序的功能(尽管非常复杂的应用程序可能希望使用多个堆栈 ...