Ocelot简易教程(一)之Ocelot是什么

简单的说Ocelot是一个用.NET Core实现并且开源的API网关技术。
可能你又要问了,什么是API网关技术呢?Ocelot又有什么特别呢?我们又该如何集成到我们的asp.net core程序中呢?
下面我会通过一些列通俗易懂的教程来为大家讲解。今天的这篇文档先给大家简述下什么是API网关技术,以及Ocelot是什么,一个Ocelot的整体架构。

API网关是什么?

API网关是系统暴露在外部的一个访问入口。就像一个公司的门卫承担着寻址、限制进入、安全检查、位置引导、等等功能。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理等等。
API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。

Ocelot在API网关实现上有什么优点呢?

首先,上面已经讲述了Ocelot是一个用.NET Core技术实现并且开源的API网关技术。除此之外还有什么优点呢?那就是它强大的功能以及使用上的简单了。它的功能包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器、Service Fabric、Skywalking等的集成。而且这些功能都只需要简单的配置即可完成。
目前,腾讯和微软是Ocelot在官网贴出来的客户。
另外,附上Ocelot的开源地址:https://github.com/ThreeMammals/Ocelot

Ocelot工作流程是怎样的呢?

实际上Ocelot就是一系列按特定顺序排列的中间件。
Ocelot首先通过配置将HttpRequest对象保存到一个指定的状态直到它到达用来创建HttpRequestMessage对象并将创建的HttpRequestMessage对象发送到下游服务中的请求构造中间件。通过中间件来发出请求是Ocelot管道中做的最后一件事。它不会再调用下一个中间件。下游服务的响应会存储在每个请求 scoped repository中,并作为一个请求返回到Ocelot管道中。有一个中间件将HttpResponseMessage映射到HttpResponse对象并返回给客户端。
接下来是你使用Ocelot是可能会使用的配置。

基本集成

640?wx_fmt=jpeg

用一台web service来host Ocelot,在这里有一个json配置文件,里面设置了所有对当前这个网关的配置。它会接收所有的客户端请求,并路由到对应的下游服务器进行处理,再将请求结果返回。而这个上下游请求的对应关系也被称之为路由。

集成 IdentityServer

640?wx_fmt=jpeg

当我们涉及到认证和鉴权的时候,我们可以跟Identity Server进行结合。当网关需要请求认证信息的时候会与Identity Server服务器进行交互来完成。

网关集群配置

640?wx_fmt=jpeg

只有一个网关是很危险的,也就是我们通常所讲的单点,只要它挂了,所有的服务全挂。这显然无法达到高可用,所以我们也可以部署多台Ocelot网关。当然这个时候在多台网关前,你还需要一台负载均衡器。

结合Consul服务发现

640?wx_fmt=jpeg

在Ocelot已经支持简单的负载功能,也就是当下游服务存在多个结点的时候,Ocelot能够承担起负载均衡的作用。但是它不提供健康检查,服务的注册也只能通过手动在配置文件里面添加完成。这不够灵活并且在一定程度下会有风险。这个时候我们就可以用Consul来做服务发现,它能与Ocelot完美结合。

结合Service Fabric

640?wx_fmt=jpeg

总结

本文首先介绍了API网关的概念,进而引出asp.net core中的一个开源的API网关技术Ocelot。并介绍了Ocelot的优点以及工作原理及架构图。接下来会详细介绍Ocelot如何通过简单地配置实现路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器、Service Fabric、Skywalking等等功能。

相关文章:

  • AspNetCore中使用Ocelot之 IdentityServer4

  • Ocelot-基于.NET Core的开源网关实现

  • .NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权

  • Swagger如何访问Ocelot中带权限验证的API

  • Ocelot.JwtAuthorize:一个基于网关的Jwt验证包

  • .NET Core微服务之基于Ocelot实现API网关服务

  • .NET Core微服务之基于Ocelot实现API网关服务(续)

  • .NET微服务体系结构中为什么使用Ocelot实现API网关

原文地址: https://www.cnblogs.com/yilezhu/p/9557375.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P5516-[MtOI2019]小铃的烦恼【期望dp,线性消元】

正题 题目链接:https://www.luogu.com.cn/problem/P5516 题目大意 nnn个字母的一个字符串,每次随机选取两个不同的位置(x,y)(x,y)(x,y)让第xxx个位置的字符变成第yyy个位置的字符。 求期望多少次能够把所有字符变成同一个。 解题思路 因为最终状态很多&#xff0…

如何在你的项目中集成 CAP【手把手视频教程】

前言之前录制过一期关于CAP的视频,但是由于当时是直播时录制的视频,背景音比较杂所以质量有点差。这次的视频没有直播,直接录制的,视频质量会好很多,第一遍录制完成之后发现播放到一半没有声音,所以又重新录…

【Splay】文艺平衡树(金牌导航 Splay-2)

#文艺平衡树 金牌导航 Splay-2 题目大意 给你一个1~n的序列,然后对序列的区间做若干次翻转,问你最后的序列 输入样例 5 3 1 3 1 3 1 4输出样例 4 3 2 1 5数据范围 1⩽n,m⩽105,1⩽l⩽r⩽n1\leqslant n,m\leqslant 10^5,1\leqslant l\leqslant r \l…

[集训队作业2018] 三角形(贪心,堆,线段树合并)

传送门 首先,在结点uuu放上w[u]w[u]w[u]个石子后,出于贪心考虑,下一步一定会把uuu的所有儿子vvv上的石子收回手中。 转换题意: 记cntcntcnt为当下树上的石子数,对每个结点uuu可以执行一次操作: step1. c…

P3527-[POI2011]MET-Meteors【整体二分,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P3527 题目大意 mmm个格子形成的环,有nnn个集合,第iii个格子属于第oio_ioi​个集合,kkk次让环上一段的格子加上一个权值。 对于每个iii求出第iii个集合在多少次的时候它集合中的所有格子权…

.net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

前言本篇会继续讲解Sikiro.SMS.Job服务的实现,在我写第一篇的时候,我就发现我当时设计的架构里Sikiro.SMS.Job这个可以选择不需要,而使用MQ代替。但是为了说明调度任务使用实现也坚持写了下。后面会一篇针对架构、实现优化的讲解。源码地址&a…

Drainage Ditches POJ1273

Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 93263 Accepted: 36174试题链接 文章目录Description题意:题解:代码:Dinic做法EK做法Description Every time it rains on Farmer John’s fields, a pond forms over Bessie’…

【主席树】可持久化数组(金牌导航 可持久化数据结构-3)

可持久化数组 金牌导航 可持久化数据结构-3 题目大意 给出一个序列a,让你执行若干操作,操作分为两种: 1.继承第v次操作后把第x个数改成y 2.查询第v次操作的第x个数的值 输入样例 5 10 59 46 14 87 41 0 2 1 0 1 1 14 0 1 1 57 0 1 1 88 …

[集训队作业2018] 复读机(生成函数,单位根反演)

传送门 subtask 1:d1d1d1 答案为knk^nkn。 subtask 2:n≤1000,k≤100n\leq1000,k\leq 100n≤1000,k≤100 设f[i][j]f[i][j]f[i][j]表示由iii个复读机来分jjj个时间点的方案数。 可以得到递推式: f[i][j]∑p0j[d∣p]Cjpf[i−1][j−p]f[i][j…

jzoj5097-[GDOI2017day1]取石子游戏【并查集,LCA】

正题 题目链接:https://gmoj.net/senior/#main/show/5097 题目大意 nnn个点的一棵树,每个节点有权值。对于每个点求树上所有权值去除掉他的子树的权值后的mexmexmex值。 解题思路 对于一个权值www,权值为www的所有点的LCALCALCA到根节点的路径上都不会…

P2756 飞行员配对方案问题【网络流24题】

P2756 飞行员配对方案问题 文章目录题目背景题解:代码:题目背景 第二次世界大战期间,英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的两名飞行员,其中一名是英国…

大数据分析中使用关系型数据库的关键点

相当一部分大数据分析处理的原始数据来自关系型数据库,处理结果也存放在关系型数据库中。原因在于超过99%的软件系统采用传统的关系型数据库,大家对它们很熟悉,用起来得心应手。在我们正式的大数据团队,数仓(数据仓库H…

【FHQ treap】维护书架(金牌导航 无旋式treap-1)

维护书架 金牌导航 无旋式treap-1 题目大意 给出一个序列a,编号为1~n,让你做若干操作,操作有五种: 1.把第x个数放在最前面 2.把第x个数放在最后面 3.把第x个数和第x1x\pm 1x1个数交换 4.查询编号为i的数前面有多少个数 5.查询第…

P5488-差分与前缀和【NTT,生成函数】

正题 题目链接:https://www.luogu.com.cn/problem/P5488 题目大意 求一个长度为nnn的序列的kkk阶差分/前缀和。 解题思路 先考虑前缀和怎么做 搞出来生成函数就是(∑i0naixi)∗(∑i0∞xi)k(\sum_{i0}^na_ix^i)*(\sum_{i0}^{\infty}x^i)^k(i0∑n​ai​xi)∗(i0∑∞​xi)k 然…

图论复习——最小生成树MST

知识点 MST的构造 Boruvka算法常用于解决这类问题:给你n个点,每个点有点权,任意两个点之间有边权,边权为两个点权用过某种计算方式得出,求最小生成树。动图 MST上的确定性和存在性问题 最小生成树的两个性质&#xf…

Ocelot简易教程(二)之快速开始1

Ocelot是为.net core量身定做的,目前是基于 netstandard2.0进行构建的。.NET Core 2.1中如何使用呢?安装NuGet package使用nuget安装Ocelot及其依赖项。您需要创建一个netstandard2.0项目并将其Package安装到项目中。然后按照下面的“启动”和“ 配置”节…

【树链剖分】【线段树】树的统计(金牌导航 树链剖分-1)

树的统计 金牌导航 树链剖分-1 题目大意 给出一棵树,让你做若干操作,操作如下: 1.修改一个节点的值 2.查询两个节点之间路径的最大值 3.查询两个节点之间路径的和 输入样例 4 1 2 2 3 4 1 4 2 1 3 12 QMAX 3 4 QMAX 3 3 QMAX 3 2 QMAX 2…

P2761 软件补丁问题

文章目录题目描述题解:代码:添加链接描述题目描述 T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放了一批共 m 个补丁程序。每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些…

P4091-[HEOI2016/TJOI2016]求和【斯特林数,NTT】

正题 题目链接:https://www.luogu.com.cn/problem/P4091 题目大意 给出nnn,求 ∑i0n∑j0i{ij}2jj!\sum_{i0}^n\sum_{j0}^i\begin{Bmatrix}i\\j\end{Bmatrix}2^jj!i0∑n​j0∑i​{ij​}2jj! 解题思路 看题解才知道2jj!2^jj!2jj!对这nlog⁡nn\log nnlogn做法没有任…

Xamarin中国技术社区及BXUG官网上线啦

Xamarin中国技术社区及BXUG官网为.NET开发者提供移动跨平台技术学习的园地,为Xamarin及.NET技术达人提供展示分享的舞台, 为企业CTO等技术负责人提供跨平台移动应用解决方案的交流平台!网址链接:http://bxug.bopoda.cn/Xamarin中国…