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对象,然后将其返回给客户端。

2.Ocelot配置

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

2.1基础集成(Basic Implementation)


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

2.2集成IdentityServer(With IdentityServer)


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

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官网

(1)ASP.NET Core3.1 Ocelot介绍的更多相关文章

  1. (8)ASP.NET Core3.1 Ocelot Consul服务注册与发现

    1.服务注册与发现(Service Discovery) ●服务注册:我们通过在每个服务实例写入注册代码,实例在启动的时候会先去注册中心(例如Consul.ZooKeeper.etcd.Eureka) ...

  2. (2)ASP.NET Core3.1 Ocelot路由

    1.路由 前一个章节我们已经介绍过Ocelot,相信大家也了解到,Ocelot的主要功能是接收客户端等传入的HTTP请求,并将其转发到下游服务.Ocelot当前仅以另一个http请求的形式支持此功能( ...

  3. (3)ASP.NET Core3.1 Ocelot认证

    1.认证 当客户端通过Ocelot访问下游服务的时候,为了保护下游资源服务器会进行认证鉴权,这时候需要在Ocelot添加认证服务.添加认证服务后,随后使用Ocelot基于声明的任何功能,例如授权或使用 ...

  4. (5)ASP.NET Core3.1 Ocelot服务质量

    1.服务质量(Quality of Service) 对于微服务来说,熔断就是我们常说的"保险丝",意思是当服务出现某些状况时候,通过切断服务防止应用程序不断地执行可能会失败的操作 ...

  5. (4)ASP.NET Core3.1 Ocelot负载均衡

    1.负载均衡 Ocelot可以在每个路由的可用下游服务中实现负载均衡,这使我们更有效地选择下游服务来处理请求.负载均衡类型:●LeastConnection:根据服务正在处理请求量的情况来决定哪个服务 ...

  6. (7)ASP.NET Core3.1 Ocelot Swagger

    1.前言 前端与后端的联系更多是通过API接口对接,API文档变成了前后端开发人员联系的纽带,开始变得越来越重要,而Swagger就是一款让你更好的书写规范API文档的框架.在Ocelot Swagg ...

  7. 探索Asp net core3中的 项目文件、Program.cs和通用host(译)

    引言 原文地址 在这篇博客中我将探索一些关于Asp.net core 3.0应用的基础功能--.csproj 项目文件和Program源文件.我将会描述他们从asp.net core 2.X在默认模版 ...

  8. 《Asp.Net Core3 + Vue3入坑教程》-Net Core项目搭建与Swagger配置步骤

    简介 <Asp.Net Core3 + Vue3入坑教程> 此教程仅适合新手入门或者前后端分离尝试者.可以根据图文一步一步进操作编码也可以选择直接查看源码.每一篇文章都有对应的源码 教程后 ...

  9. ASP原码加密工具介绍

    ASP原码加密工具介绍 总是会有非常多方法暴露ASP的原程序.造成数据库的password 路径都能够轻易被其它人搞到,所以对ASP程序实行加密处理是个不错的解决方法.以下来介绍一个工具假设大家感兴趣 ...

随机推荐

  1. Django 联合唯一UniqueConstraint

    from django.db import models class UserAttention(models.Model): watcher = models.ForeignKey('user.Us ...

  2. 硬核测试:Pulsar 与 Kafka 在金融场景下的性能分析

    背景 Apache Pulsar 是下一代分布式消息流平台,采用计算存储分层架构,具备多租户.高一致.高性能.百万 topic.数据平滑迁移等诸多优势.越来越多的企业正在使用 Pulsar 或者尝试将 ...

  3. 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符

    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...

  4. Mac安装mongodb并启动

    1.选择自己版本下载,下载完成后进入Finder看下usr文件夹下是否有mongodb2.默认情况下是看不到需要我们输入指令:shift + command +G 输入 /usr/local 进入文件 ...

  5. linux 中 eclipse 开发 c/c++ 多线程程序,添加 libpthread.a 库支持

    导入头文件 在 linux 中开发多线程程序,在使用到 pthread 系列函数的文件中,需要导入头文件: #include <pthread.h> 链接 libpthread.a 在编译 ...

  6. shell-的特殊变量-难点理论

    一:shell的特殊变量-难点理论  1. $*和$@的区别例子     $* 将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"     $@ 将命令行每个参数视为单独 ...

  7. 判断移动还是PC 以及微信环境

    //判断pc还是移动端 function IsPC() {   var userAgentInfo = navigator.userAgent;   var Agents = ["Andro ...

  8. 营口6378.7939(薇)xiaojie:营口哪里有xiaomei

    营口哪里有小姐服务大保健[微信:6378.7939倩儿小妹[营口叫小姐服务√o服务微信:6378.7939倩儿小妹[营口叫小姐服务][十微信:6378.7939倩儿小妹][营口叫小姐包夜服务][十微信 ...

  9. MeteoInfo 新网站

    MeteoInfo特别是MeteoInfoLab的推广需要写大量详细的帮助文档和示例程序,MeteoInfo原先的网站使用最原始的编写.html文件的方式来更新,效率实在太低,最近学习了一下Sphin ...

  10. day64 Pyhton 框架Django 07

    day67 内容回顾 视图 1. CBV 定义 from django.views import View class Addpub(View): def get(self,request): sel ...