Ocelot简易教程之Ocelot是什么

2018 年 9 月 15 日 DotNet

(点击上方蓝字,可快速关注我们)


来源:依乐祝

cnblogs.com/yilezhu/p/9557375.html


简单的说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是可能会使用的配置。


基本集成



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


集成 IdentityServer



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


网关集群配置



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


结合Consul服务发现



在Ocelot已经支持简单的负载功能,也就是当下游服务存在多个结点的时候,Ocelot能够承担起负载均衡的作用。


但是它不提供健康检查,服务的注册也只能通过手动在配置文件里面添加完成。这不够灵活并且在一定程度下会有风险。


这个时候我们就可以用Consul来做服务发现,它能与Ocelot完美结合。


结合Service Fabric



总结


本文首先介绍了API网关的概念,进而引出asp.net core中的一个开源的API网关技术Ocelot。并介绍了Ocelot的优点以及工作原理及架构图。


接下来会详细介绍Ocelot如何通过简单地配置实现路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器、Service Fabric、Skywalking等等功能。


相关文章


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


《.NET Core开源API网关 – Ocelot中文文档》


《.NET Core 玩一玩 Ocelot API网关》


看完本文有收获?请转发分享给更多人

关注「DotNet」,提升.Net技能 

登录查看更多
0

相关内容

应用程序接口(简称 API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。
模型优化基础,Sayak Paul,67页ppt
专知会员服务
75+阅读 · 2020年6月8日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
React Native 分包哪家强?看这文就够了!
程序人生
13+阅读 · 2019年1月16日
手把手 | 关于商业部署机器学习,这有一篇详尽指南
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Spark App自动化分析和故障诊断
CSDN大数据
7+阅读 · 2017年6月22日
Arxiv
5+阅读 · 2020年3月26日
Deep Reinforcement Learning: An Overview
Arxiv
17+阅读 · 2018年11月26日
HAQ: Hardware-Aware Automated Quantization
Arxiv
6+阅读 · 2018年11月21日
Arxiv
6+阅读 · 2018年2月7日
VIP会员
相关VIP内容
模型优化基础,Sayak Paul,67页ppt
专知会员服务
75+阅读 · 2020年6月8日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
相关资讯
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
React Native 分包哪家强?看这文就够了!
程序人生
13+阅读 · 2019年1月16日
手把手 | 关于商业部署机器学习,这有一篇详尽指南
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Spark App自动化分析和故障诊断
CSDN大数据
7+阅读 · 2017年6月22日
Top
微信扫码咨询专知VIP会员