.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,改为控制台方式启动

二、打开程序包管理器控制台,依次执行命令:

  1. Install-Package Ocelot
  2. Install-Package Ocelot.Provider.Consul

三、在项目根目录下,新建配置文件“ocelot.json”

"LoadBalancer"负载均衡类型:

RoundRobin:轮询机制,循环找到可以用的服务

LeastConnection:最少连接数,跟踪发现现在有最少请求或处理的可用服务

NoLoadBalancer:不使用负载均衡,直接访问第一个发现的可用的服务

  1. {
  2. "ReRoutes": [
  3. {
  4. "DownstreamPathTemplate": "/api/Default/GetList",
  5. "DownstreamScheme": "http",
  6. "UpstreamPathTemplate": "/api/v1/Student/GetList",
  7. "UpstreamHttpMethod": [ "Get" ],
  8. "ServiceName": "Student",
  9. "LoadBalancerOptions": {
  10. "Type": "RoundRobin"
  11. },
  12. "UseServiceDiscovery": true
  13. // ,
  14. //"RateLimitOptions": {
  15. // "ClientWhitelist": [], //白名单
  16. // "EnableRateLimiting": true, //是否限流
  17. // "Period": "30s", //指定一个时间
  18. // "PeriodTimespan": 10, //多少时间后,可以重新请求。
  19. // "Limit": 5 //在Period的指定时间内,最多请求次数
  20. //}
  21. },
  22. {
  23. "DownstreamPathTemplate": "/api/Default/GetList",
  24. "DownstreamScheme": "http",
  25. "UpstreamPathTemplate": "/api/v1/Teacher/GetList",
  26. "UpstreamHttpMethod": [ "Get" ],
  27. "ServiceName": "Teacher",
  28. "LoadBalancerOptions": {
  29. "Type": "RoundRobin"
  30. },
  31. "UseServiceDiscovery": true
  32. }
  33. ],
  34.  
  35. "GlobalConfiguration": {
  36. "ServiceDiscoveryProvider": {
  37. "Host": "127.0.0.1",
  38. "Port":
  39. }
  40. }
  41. }

四、在Program.cs的CreateHostBuilder中加入

  1. .ConfigureAppConfiguration(conf => {
  2. conf.AddJsonFile("ocelot.json", false, true);
  3. })

五、找到Startup.cs

在ConfigureServices中加入:

  1. services.AddOcelot().AddConsul();

在Configure中加入:

  1. 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. 北京师范大学第十七届程序设计竞赛决赛 G

    传送门:https://ac.nowcoder.com/acm/contest/895/G 题意: \[ 操作 1:L,R,X,Y,对所有L≤i≤R赋值 \\ Ai=min(Ai,(i−L)×Y+X) ...

  2. vue新增属性响应式更新的问题

    根据官方文档定义: 如果在实例创建之后添加新的属性到实例上,它不会触发视图更新. 受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删 ...

  3. linux-iptables匹配条件总结(一)

    指定单个ip,示例如下: iptables -A INPUT -s 192.168.2.85 -j ACCEPT ![](https://img2018.cnblogs.com/blog/189009 ...

  4. $BZOJ$2818 $gcd$ 莫比乌斯反演/欧拉函数

    正解:莫比乌斯反演/欧拉函数 解题报告: 传送门$QwQ$ 一步非常显然的变形,原式=$\sum_{d=1,d\in prim}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd ...

  5. 全网最详细的Ceph14.2.5集群部署及配置文件详解,快来看看吧! -- <2>

    部署Ceph集群 Ceph版本选择 Ceph版本来源介绍 Ceph 社区最新版本是 14,而 Ceph 12 是市面用的最广的稳定版本. 第一个 Ceph 版本是 0.1 ,要回溯到 2008 年 1 ...

  6. 洛谷P1776 宝物筛选 题解 多重背包

    题目链接:https://www.luogu.com.cn/problem/P1776 题目大意: 这道题目是一道 多重背包 的模板题. 首先告诉你 n 件物品和背包的容量 V ,然后分别告诉你 n ...

  7. day4(dict和set)

    dict 内置字典,使用key-value存储,具有极快的查找速度. >>>d = {'michael': 95, 'bob': 75, 'tracy': 85} >>& ...

  8. c++数字和字符之间的转化

    关于C++中数与字符之间的转化 在c++中我们经常遇到需要把一个数变成字符,或者把字符变为一个数,c++中没有直接的转化函数,故我们需要自己去写函数去转化,这里我将介绍两种比较简单的方法: 法一: s ...

  9. Linux Cgroup浅析

    cgroup从2.6.4引入linux内核主线,目前默认已启用该特性.在cgroup出现之前,只能对一个进程做资源限制,比如通过sched_setaffinity设置进程cpu亲和性,使用ulimit ...

  10. Springboot2.1.1下的自定义拦截器而静态资源不能访问的问题

    1.项目结构 2.自定义拦截器 public class LoginHandlerlnterceptor implements HandlerInterceptor { //目标方法执行之前 @Ove ...