(1)ASP.NET Core3.1 Ocelot介绍

1.简介

Ocelot本来设计仅为与.NET Core一块儿使用的,它是一个.NET API网关,做为面向使用.NET运行微型服务/面向服务的体系结构须要统一的系统入口点,即当客户端(Web站点,手机APP)等访问Web API的时候,Ocelot做为统一的入口点会根据请求地址分发到对应的API站点去(寻址)。而Ocelot还集成不少功能,例路由,认证,受权,限速等等功能点,Ocelot官网还建议认证这块最好跟身份验证(IdentityServer4)一块儿使用,承载令牌轻松集成。具体详情你们能够去官网(https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html)了解下。
而查看Ocelot源码,咱们会看到Ocelot是按特定顺序排列的一堆中间件(Middleware)组成的管道。
Ocelot将HttpRequest对象操做到由其配置指定的状态,直到到达请求构建器中间件,在中间件中它建立一个HttpRequestMessage对象,该对象用于向下游服务发出请求。发出请求的中间件是Ocelot管道中的最后一件事。它不会调用下一个中间件。来自下游服务的响应存储在每一个请求范围的存储库中,并在请求返回Ocelot管道时进行检索。有一块中间件将HttpResponseMessage映射到HttpResponse对象,而后将其返回给客户端。html

2.Ocelot配置

根据官网介绍,Ocelot有五种配置:git

2.1基础集成(Basic Implementation)


当客户端访问下游服务站点时候,会统一通过Ocelot网关,Ocelot网关Host主机首先会读取configuration.json配置信息,根据配置文件去寻找对应下游服务站点并返回处理结果给客户端。这一个过程能够称为路由寻址。github

2.2集成IdentityServer(With IdentityServer)


当服务站点涉及认证跟受权的时候,能够经过在Ocelot网关上集成IdentityServer,当客户端访问下游服务站点时候,会先经过IdentityServer认证跟受权后才分发到下游服务站点。json

2.3多个网关实例集群(Multiple Instances)


单个Ocelot网关是比较危险的,若是这个网关挂掉了,全部下游服务站点都将没法访问,这样子是没法作到高可用的。要解决这个问题,能够部署多台Ocelot网关集群,而Ocelot也集成了负载均衡器。缓存

2.4集成Consul服务发现(With Consul)


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

2.5集成Service Fabric(With Service Fabric)


若是您在Service Fabric中部署了服务,则一般将使用命名服务来访问它们。负载均衡

3.总结

Ocelot网关是系统给外部惟一访问入口,就比如公司的门卫承担着寻址、出入限制、安全检查、位置引导等等功能。它还提供了路由,身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理等等功能。Ocelot网关的核心要点是,全部的客户端和消费端都经过统一的网关接入微服务,在网关层处理全部的非业务功能。一般网关也是提供REST/HTTP的访问API,服务端经过网关注册和管理服务。该章节以后,我会继续根据GitHub贡献者开源项目上面Ocelot Demo实例介绍它的功能。Ocelot Demo地址https://github.com/catcherwong-archive/APIGatewayDemo。

参考文献:
Ocelot官网

微服务

相关文章
相关标签/搜索