• 1.Orange是什么鬼?


    一、前言


    咋一看标题包含个Orange,我们不把Orange直接翻译成橙子,就像Spring框架不翻译成春一样 !

    这里的Orange是基于Nginx / OpenResty的API Gateway,OpenResty是什么?API Gateway又是什么?

     

    二、解释


     1.什么是OpenResty

    首先,你可以通过http://www.runoob.com/w3cnote/openresty-intro.html来对OpenResty进行简单的入门;

    但,我们的重点不是OpenResty,而是Orange,所以这里的OpenResty简单描述:

    • OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块
    • OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统

     

    2.什么是Orange

    刚刚上文有提到过,Orange是基于Nginx / OpenResty的API Gateway,那API Gateway又是什么?

    网上对于API Gateway的功能解释,无外乎是以下几种:

    • 负载均衡
    • 减少客户端与服务端的直接调用
    • 容错
    • 服务发现与注册
    • 统一认证
    • 等等…

    现公司对于项目的部署是采用集群方式,以nginx作为api网关,根据权重的配置决定访问的是集群中的某一个项目,这就牵扯到nginx在这里的作用是:

    • ①.负载均衡,多个同一项目在集群中面对高并发的情况下,以横向拓展的方式(增加硬件)缓解了单台项目的压力;
    • ②.客户端不再直接调用服务端,而是通过nginx以代理的方向转发到目标项目接口进行调用;

    像服务发现与注册,我们没有使用微服务,所以和这块牵扯不上;

    统一认证是使用JWT的token认证机制,所以和这块也牵扯不上。

    so,是否对API Gateway比较清晰了?

    我们的重点是微服务下的API Gateway,所以以下是针对跟微服务相关的API Gateway进行阐述:

    • ①.是出现在系统边界上的一个面向API的、串行集中式的强管控服务,这里的边界是微服务系统的边界,主要起到隔离外部访问与内部系统的作用;
    • ②.在微服务流行之前,API网关实体就诞生了,有做过跟银行支付相关调用的就会比较清楚,他们都会提供一个叫前置机的家伙,它也是解决访问认证、报文转换、访问统计等问题的;
    • ③.移动应用、企业互联,使得后台服务支持的对象,从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同,这不仅增加了后台服务的响应量,还增加了后台服务的复杂性,随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件

    所以,对于微服务的API网关功能,总结如下:

    • ①.黑白名单:实现通过IP地址控制禁止访问网关功能,此功能是应用层面控制实现,再往前也可以通过网络传输方面进行控制访问。
    • ②.日志:实现访问日志的记录,可用于分析访问、处理性能指标,同时将分析结果支持其他模块功能应用。
    • ③.协议适配:实现通信协议校验、适配转换的功能。
    • ④.身份认证:负责网关访问身份认证验证,此模块与“访问认证中心”通信,实际认证业务逻辑交移“访问认证中心”处理。
    • ⑤.计流限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则。
    • ⑥.路由:路由是API网关很核心的模块功能,此模块实现根据请求,锁定目标微服务并将请求进行转发。此模块需要与“服务发布管理中心”通信。“服务发布管理中心”实现微服务发布注册管理功能,与其通信获得目标微服务信息。

    所以,Orange是一个基于OpenResty的API Gateway,提供API及自定义规则的监控和管理,如访问统计、流量切分、API重定向、API鉴权、WEB防火墙等功能。Orange可用来替代前置机中广泛使用的Nginx/OpenResty, 在应用服务上无痛前置一个功能丰富的网关系统,它的主要特性:

    • 动态更新Nginx/OpenResty配置而无需重启或reload
    • 通过MySQL存储来简单支持集群部署
    • 支持多种条件匹配和变量提取
    • 支持通过自定义插件方式扩展功能
    • 内置多个通用插件提供Dashboard用于管理内置插件开放API: 所有插件均开放API供第三方使用, 通过这些API可简单灵活得配置插件、查看运行状态、统计数据等。提供Dashboard用于管理内置插件
      • 全局状态统计
      • 自定义监控
      • URL重写
      • URI重定向
      • 访问限速
      • Key based rate limiting
      • HTTP Basic Auth
      • HTTP Key Auth
      • Signature Auth
      • 简单防火墙WAF
      • 代理、ABTesting、分流
      • Shared Dict存取接口
    • 提供Dashboard用于管理内置插件
    • 开放API: 所有插件均开放API供第三方使用, 通过这些API可简单灵活得配置插件、查看运行状态、统计数据等
    • 架构简单,依赖少,许可协议宽松,适合直接二次开发或改造

    这里提供Orange使用文档地址:http://orange.sumory.com/docs/guides/about/,并且后续我们会对它进行测试,最后也会跟之前整理的微服务框架motan进行结合。

     

  • 相关阅读:
    MySQL8安装及使用当中的一些注意事项
    设计模式-观察者模式
    在线教育项目-day12【完善后端整合前端】
    在线教育项目-day12【微信扫码登录】
    在线教育项目-day12【OAuth2】
    在线教育项目-day12【完善登陆页面】
    在线教育项目-day12【整合前端登陆注册页面(2)】
    在线教育项目-day12【整合前端登陆注册页面(1)】
    在线教育项目-day12【解析oken信息】
    在线教育项目-day12【注册接口】
  • 原文地址:https://www.cnblogs.com/Json1208/p/8849774.html
Copyright © 2020-2023  润新知