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、butterfly tracing等的集成。而且这些功能都只需要简单的配置即可完成。
目前,腾讯和微软是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、butterfly tracing等等功能。