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. IDEA配置jQuery,$符号不再显示黄色波浪线

    在使用IDEA搭建Maven的Web环境时,编写的JQuery入口函数时,遇到了未知符号的提示,并且在前端页面js的console里报错. 以下是错误信息:  解决方案:  继续看图: 配置成功生效: ...

  2. IdentityServer4系列 | 初识基础知识点

    前言 我们现在日常生活中,会使用各式各样的应用程序,层出不穷,其中有基于网页浏览方式的应用,有基于手机端的App,甚至有基于流行的公众号和小程序等等,这些应用,我们不仅要实现各个应用的功能之外,还要考 ...

  3. c++中的GetModuleFileName函数的用法以及作用

    参考: 1. http://blog.sina.com.cn/s/blog_b078a1cb0101fw48.html 2. https://www.cnblogs.com/Satu/p/820393 ...

  4. Jmeter之连接数据库

    1.下载mysql驱动文件 2.移动到Jmeter目录下的lib中 3.在配置文件中使用 jdbc:mysql://127.0.0.1:3306/fns_test_bak?useUnicode=tru ...

  5. winfrom加载自定义控件、窗口pannel后闪烁问题

    我用一个panel当容器,里面有好多控件,加载的时候一直闪烁. 借鉴网友的思路: 窗口初始化界面加入代码 this.DoubleBuffered = true;//设置本窗体   SetStyle(C ...

  6. DM8数据库备份还原的原理及应用

    (本文部分内容摘自DM产品技术支持培训文档,如需要更详细的文档,请查询官方操作手册,谢谢) 一.原理 1.DM8备份还原简介 1.1.基本概念 (1)表空间与数据文件 ▷ DM8表空间类型: ▷ SY ...

  7. PHP代码审计03之实例化任意对象漏洞

    前言 根据红日安全写的文章,学习PHP代码审计的第三节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完相关知识点,会用一道CTF题目来加深巩固.之前分别学习讲解了in_arr ...

  8. jmeter 相关

    Don't use GUI mode for load testing !, only for Test creation and Test debugging. For load testing, ...

  9. CentOS 7的安装与部署 01

    01 虚拟软件的安装与配置 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统.在实体计算机中能够完成的工作在虚拟机中都能够实现. ...

  10. JetBrains-CLion永久激活教程

    前言 JetBrains Clion 是一款专为 C/C++ 开发所设计的跨平台 IDE.本文适用 JetBrains CLion v2019.3/3.1/3.2/3.3 永久激活,附破解补丁和激活码 ...