做者:依乐祝
原文地址:http://www.javashuo.com/article/p-gpeksziu-cg.htmlhtml
Ocelot简易教程(七)之配置文件数据库存储插件源码解析
简单的说Ocelot是一个用.NET Core实现而且开源的API网关技术。
可能你又要问了,什么是API网关技术呢?Ocelot又有什么特别呢?咱们又该如何集成到咱们的asp.net core程序中呢?
下面我会经过一些列通俗易懂的教程来为你们讲解。今天的这篇文档先给你们简述下什么是API网关技术,以及Ocelot是什么,一个Ocelot的总体架构。git
API网关是系统暴露在外部的一个访问入口。就像一个公司的门卫承担着寻址、限制进入、安全检查、位置引导、等等功能。从面向对象设计的角度看,它与外观模式相似。API网关封装了系统内部架构,为每一个客户端提供一个定制的API。它可能还具备其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理等等。
API网关方式的核心要点是,全部的客户端和消费端都经过统一的网关接入微服务,在网关层处理全部的非业务功能。一般,网关也是提供REST/HTTP的访问API。服务端经过API-GW注册和管理服务。github
首先,上面已经讲述了Ocelot是一个用.NET Core技术实现而且开源的API网关技术。除此以外还有什么优势呢?那就是它强大的功能以及使用上的简单了。它的功能包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器、Service Fabric、Skywalking等的集成。并且这些功能都只须要简单的配置便可完成。
目前,腾讯和微软是Ocelot在官网贴出来的客户。
另外,附上Ocelot的开源地址:https://github.com/ThreeMammals/Ocelotweb
实际上Ocelot就是一系列按特定顺序排列的中间件。
Ocelot首先经过配置将HttpRequest对象保存到一个指定的状态直到它到达用来建立HttpRequestMessage对象并将建立的HttpRequestMessage对象发送到下游服务中的请求构造中间件。经过中间件来发出请求是Ocelot管道中作的最后一件事。它不会再调用下一个中间件。下游服务的响应会存储在每一个请求 scoped repository中,并做为一个请求返回到Ocelot管道中。有一个中间件将HttpResponseMessage映射到HttpResponse对象并返回给客户端。
接下来是你使用Ocelot是可能会使用的配置。数据库
用一台web service来host Ocelot,在这里有一个json配置文件,里面设置了全部对当前这个网关的配置。它会接收全部的客户端请求,并路由到对应的下游服务器进行处理,再将请求结果返回。而这个上下游请求的对应关系也被称之为路由。json
当咱们涉及到认证和鉴权的时候,咱们能够跟Identity Server进行结合。当网关须要请求认证信息的时候会与Identity Server服务器进行交互来完成。api
只有一个网关是很危险的,也就是咱们一般所讲的单点,只要它挂了,全部的服务全挂。这显然没法达到高可用,因此咱们也能够部署多台Ocelot网关。固然这个时候在多台网关前,你还须要一台负载均衡器。缓存
在Ocelot已经支持简单的负载功能,也就是当下游服务存在多个结点的时候,Ocelot可以承担起负载均衡的做用。可是它不提供健康检查,服务的注册也只能经过手动在配置文件里面添加完成。这不够灵活而且在必定程度下会有风险。这个时候咱们就能够用Consul来作服务发现,它能与Ocelot完美结合。安全
本文首先介绍了API网关的概念,进而引出asp.net core中的一个开源的API网关技术Ocelot。并介绍了Ocelot的优势以及工做原理及架构图。接下来会详细介绍Ocelot如何经过简单地配置实现路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器、Service Fabric、Skywalking等等功能。服务器