01 INFINI-GATEWAY简介

目录

1 概念

2 特性

 3 集成交互图

4 为什么需要极限网关

5 架构图

​6 名词解释

1 概念

极限网关(INFINI Gateway)是一个面向 Elasticsearch 的高性能应用网关,它包含丰富的特性,使用起来也非常简单。
极限网关工作的方式和普通的反向代理一样,我们一般是将网关部署在 Elasticsearch 集群前面, 将以往直接发送给 Elasticsearch 的请求都发送给网关,再由网关转发给请求到后端的 Elasticsearch 集群。
因为网关位于在用户端和后端 Elasticsearch 之间,所以网关在中间可以做非常多的事情, 比如可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。

2 特性

特性 具体描述
轻量级 极限网关使用 Golang 编写,安装包很小,只有 10MB 左右,没有任何外部环境依赖,部署安装都非常简单,只需要下载对应平台的二进制可执行文件,启动网关程序的二进制程序文件执行即可。
极致性能 极限网关在编写每一行代码的时候,都会考虑如何让其运行在最佳状态,经测试,极限网关比同类主流网关类产品速度快 25% 以上,且针对 Elasticsearch 做了非常细致的优化,能成倍提升写入和查询的速度。
跨版本支持 极限网关针对不同的 Elasticsearch 版本做了兼容和针对性处理,能够让业务代码无缝的进行适配,后端 Elasticsearch 集群版本升级能够做到无缝过渡,降低版本升级和数据迁移的复杂度。
可观测性 极限网关可以动态对 Elasticsearch 运行过程中产生的任何请求进行截获和分析,通过指标和日志来了解整个集群的运行情况,用于提升性能和优化业务。还可以用于审计和慢查询分析。
高可用 极限网关内置多种高可用解决方案,前端请求入口支持基于虚拟 IP 的双机热备,后端集群支持集群拓扑的自动感知,节点上下线能自动发现,自动处理后端故障,自动进行请求的重试和迁移。
灵活可扩展 极限网关的每个模块都可以独立扩展,可灵活对每个请求进行干预和路由,支持路由的智能学习,内置丰富的过滤器,通过配置动态修改每个请求的处理逻辑,也支持通过插件来进行扩展。
无缝集成 极限网关对外提供的接口完全兼容 Elasticsearch 原生的接口,集成起来非常简单,只需将原本指向 Elasticsearch 的配置修改成网关的地址即可。

 3 集成交互图

4 为什么需要极限网关

需求场景 功能
WAF(Web Application Firewall)与安全 极限网关能对来自不同 Web 应用程序客户端的各类请求进行内容检测和验证, 通过执行一系列针对 Elasticsearch 的安全策略来确保其安全性与合法性,对非法的请求予以实时阻断,从而对后端 Elasticsearch 进行有效防护。

集群升级

Elasticsearch 版本迭代的速度是非常快的,可能经常需要处理集群版本升级的事宜,而集群升级势必要考虑到以下几点:

  • 保证最小的停机时间,业务的数据写入和查询不能因为集群的升级而中止,数据要能持续的进行写入,还不能因为后端重启节点而丢失数据
  • 集群流量的切换,新旧集群在什么时候以及如何进行切换,是修改业务代码或者配置文件呢,以及如何回滚恢复呢,是不是需要重新发布一个新的部署包

借助极限网关,您的业务代码完全不用关心后端 Elasticsearch 集群是什么状况,只需要访问网关固定的地址即可,剩下的交给网关就都搞定了。

索引重建 修改了 Mapping 需要重建索引,修改了分词词典需要重建索引,重建过程中还不能停止数据的写入,重建完成之后还要确保数据是一致的,有新增的数据和修改的数据也必须一一处理,自己处理起来貌似还挺麻烦。 而极限网关,可以做到一键索引重建,重建过程中的任何文档修改操作都会被自动记录,新旧索引在重建完成之后会自动无缝的进行切换,对于前端应用来说完全无感知。
限流限速  极限网关可以做到灵活的流量控制,可以做到索引级别的限速规则设置。
查询太慢 极限网关内置缓存功能,能够将最常见的查询进行缓存,还可指定周期性的查询计划来预热特定的查询,保证前端的业务每次都能命中查询,从而提升查询速度,改进业务查询用户体验
索引太慢 极限网关可以将来自不同客户端的众多小批量的 Elasticsearch 索引请求合并成一个大的批次请求,通过精准的分片级别的路由,将索引请求合并封装直接投递到指定分片的指定节点上, 避免后端 Elasticsearch 再次进行请求转发,节省 Elasticsearch 资源和带宽,从而提升整体集群的吞吐和性能。
请求干预 可以在线对指定业务的指定查询进行改写,将查询语句动态修复,无需重新发布应用,方便灵活。能够动态的替换查询结果为新的内容,甚至可以聚合来自其他数据源的数据,如 Hbase、MySQL 等等,融合成需要的 JSON 数据再返回给客户端。
请求分析 全程跟踪,从集群到索引,从索引到查询,从应用到用户

5 架构图

 6 名词解释

(1)Entry 模块主要定义网关的请求入口,极限网关支持 HTTP 和 HTTPS 两种模式,HTTPS 可以自动生成证书。

(2)Router 模块主要定义请求的路由规则,根据 Method 和请求地址来进行路由到指定的 Flow 处理流程里面去。

(3)Flow 模块主要定义数据的处理逻辑,每个请求会经过一系列的 Filter 操作,Flow 用来将这些 Filter 组织起来。

(4)Filter 模块由若干个不同的 Filter 组件构成,每个 Filter 在设计的时候只处理一件事情,通过多个 Filter 组成变成一个 Flow。

(5)Pipeline 模块由若干个不同的 Processor 组件构成,通过多个 Processor 组成一个 Pipeline,Pipeline 和 Flow 相比,更侧重离线任务的处理。

(6)Queue 模块是一个抽象的消息队列,如基于本地磁盘的可靠性消息持久化以及 Redis 和 Kafka 等适配器,根据不同的场景可以设置队列的不同后端适配器。

此外,INFINI Gateway 使用的框架底层还有一些公共的模块,如:API 用来提供对外的编程入口,Elastic 模块用于处理不同版本的 Elasticsearch API 封装等等。

 【说明:此文原理、概念篇根据INFINI官网整理所得:产品概述 | INFINI Gateway

猜你喜欢

转载自blog.csdn.net/lukabruce/article/details/125535484
今日推荐