开源免费的API网关介绍与选型

打印 上一主题 下一主题

主题 840|帖子 840|积分 2520



api网关的重要作用

API网关在现代微服务架构中扮演着至关重要的角色,它作为内外部系统通讯的桥梁,不仅简化了服务调用过程,还增强了系统的安全性与可管理性。例如,当企业希望将内部的服务开放给外部互助伙伴利用时,直接暴露这些服务会带来诸多风险,如数据泄露、非法访问等。通过部署API网关,可以实现统一的身份验证和授权机制,确保只有经过认证的请求才能到达后端服务;同时,API网关支持流量控制、负载均衡等功能,有助于进步系统的稳固性和响应速度。此外,对于开发者而言,API网关提供了统一的服务入口点,简化了文档维护工作,并使得版本管理和日志记载更加便捷高效。总之,API网关是构建安全可靠且易于扩展的分布式应用不可或缺的一部分。
API网关的焦点功能

API网关作为现代应用架构中的关键组件,重要提供了几大焦点功能。
首先是协议转换能力,它可以大概将HTTP请求转换为内部服务可以明白的格式,比如从RESTful API到gRPC的调用,使得前端与后端服务之间的交互更加灵活;
其次是安全隔离,通过设置访问控制策略(如基于JWT的身份验证)来掩护后端资源不被未授权访问;
接着是流量控制,例如限制每分钟内来自特定IP所在的请求数量,以防止因突发流量而导致的服务瓦解;
API管理方面,支持开发者定义、发布和版本化API接口,便于团队协作及对外提供标准化服务接口。这些功能共同确保了后端服务的安全性、稳固性和可维护性。

有哪些主流的API网关

API网关作为微服务架构中的重要组件,资助开发者更高效地管理、掩护和监控API。目前市场上存在多种主流的API网关办理方案,各具特色:


  • Kong:Kong是一个非常受欢迎的选择,它基于Nginx构建,支持插件化扩展,易于设置且功能强大,适用于微服务、容器或云原生环境下的API管理>
  • Apache APISIX 是另一个高性能的开源API网关,以其低耽误和高吞吐量著称,支持多种协议包括HTTP、gRPC等,并提供了灵活的安全性和流量控制选项。
  • Tyk 则专注于为开发者提供一个简单易用但又极其强大的API管理和分析平台,通过其模块化的设计答应企业快速自定义功能。
  • Spring cloud Gateway:亚马逊提供的全托管服务,与AWS生态系统无缝集成,适合构建无服务器应用。
  • Higress:阿里巴巴推出的新一代云原生网关,基于Envoy开发,专注于简化多集群及混淆云场景下的流量管理和管理问题,支持七层路由、灰度发布、服务网格等多种功能。
以上这些就是主流的API网关

API网关选型的重要思量要素

在API网关选型中,必要思量的一些重要的因素有:
生态兼容性是API网关选型时的重要考量之一。在企业级应用环境中,系统每每不是孤立存在的,而是必要与各种不同的技能栈、云服务及第三方平台进行集成。因此,选择一个具有精良生态兼容性的API网关可以确保其可以大概无缝对接现有的IT基础设施和服务,促进不同组件间的通讯和数据交换,从而降低开发成本,加快项目上线速度。
性能对于API网关来说同样至关重要。随着业务规模的增长,API请求量可能会呈指数级上升。这就要求API网关必须具备处理高并发访问的能力,在包管响应时间的同时还能维持低耽误。良好的性能不仅关乎用户体验的优劣,也是支持大规模分布式架构的关键因素之一。
扩展性则是指API网关是否轻易根据需求变化而调整其功能或规模。随着业务发展,新功能的添加或是对现有功能的修改都不可避免。如果所选用的API网关具有精良的扩展性,则可以在不影响现有服务运行的情况下轻松地做出这些更改,资助企业更加灵活地应对市场变化和技能迭代。
安全性,API网关作为全部外部请求进入内部系统的第一个接触点,天然负担着掩护后端资源免受恶意攻击的责任。它应该提供包括但不限于认证授权、流量控制、加密传输等功能来确保只有经过验证并被答应的操纵才能被实行,同时还要可以大概检测并制止潜在的安全威胁,比如SQL注入、DDoS攻击等,以此构建起一道坚固的信息安全防线。

选型对比表:

我们依托于上面的考量因素,构建了一个比力详细的对比表,可以批驳性参考。
注: 在笔者发文以后,有可能部分产物会新增功能,如果您发现有雷同的问题欢迎留言。
焦点维度
子维度
说明
Higress
Java 类网关(典范:Spring Cloud Gateway)
OpenResty 类网关(典范:Kong)
Envoy 类网关(典范:Gloo)
Go 类网关(典范:Traefik)
生态兼容性
K8s 微服务生态
(Ingress/Istio/Kruise/Argo/...)
对云原生应用友爱




Java 微服务生态(Nacos/Dubbo/Spring Cloud/...)
对传统微服务应用友爱




扩展性
Wasm 多语言扩展
(C++/Rust/GO/JS/...)
     

  • 通过沙箱隔离确保内存安全
  • 支持多种编程语言
  • 有编译过程,类型检查,相比 Lua 弱类型更可靠(例子:7行代码让B站瓦解3小时)

     

  • 40+ 插件生态
  • 100+ 开发者生态
  • 插件版本可以独立于网关版本升级,且流量完全无损

Lua 语言扩展
脚本型扩展,适合写简单逻辑



高性能
无 GC 开销
高并发下,低 CPU,低内存


lua 扩展有 GC 开销

CryptoMB/QAT 等适配
可以适配Intel等特定CPU实现软硬件结合的加快能力



设置热更新
(含插件变更)
短毗连无损
适用:
     

  • HTTP 1.0
  • HTTP 1.1(将长毗连变为短毗连)




长毗连无损
适用:
     

  • HTTP 2
  • gRPC
  • WebSocket



AI 业务亲和性
多 LLM Provider 支持
统一协议对接全部 LLM 厂商


kong 支持一部分

收费功能
模子 fallback 能力
当主用模子不可用时,自动降级到备用模子,进步依赖 AI 业务的稳固性



AIGC 安全防护
     

  • 数据脱敏
  • 输入/输出封禁

支持对接阿里云内容安全服务


基于单词Token的限流
用于实现对单个调用方或IP等维度,限制每分钟/每天答应的单词 Token 开销,用于精确控制 AI 业务成本


收费功能
语义化缓存
基于语义相似度进行结果缓存,在 RAG 场景下可大幅提升响应速度,以及降低成本


收费功能

收费功能
语义化路由策略
支持基于 LLM 辨认请求意图,将特定请求转发给特定模子,或者对特定意图开启语义化缓存等


收费功能,仅支持语义化路由




Higress 介绍:来自阿里的开源 API网关

Higress 作为来自阿里巴巴的开源 API 网关,基于阿里多年在网关领域的实战履历构建而成。
它遵循开源 Ingress/Gateway API 标准,展现出杰出的生态兼容性,支持 Nacos、Dubbo、spring cloud 、K8s Service 等多种服务和注册中心的一键设置,便于集成进现有的微服务架构中。
针对性能优化方面,Higress 在面临超大规模路由设置与转发场景时表现精彩,纵然拥有 10000 个路由设置,也能包管在 3 秒内完成更新生效,而且相较于 Ingress Nginx,在 CPU 和内存成本上分别节流了约 50% 和 90%,极大提升了资源利用服从。
此外,其精彩的扩展能力答应用户通过 Java 编程模子进行定制化开发,并支持动态设置热更新,使得运维更加灵活便捷。
在安全性上,Higress 全面支持 key-auth、hmac-auth、jwt-auth 等主流鉴权机制,确保数据传输的安全可靠。
作为一个完全开源免费的产物,Higress 不仅为开发者提供了强大而高效的工具,同时也彰显了阿里致力于回馈社区的决心。
Higress详细利用样例-基于docker的单机版快速部署

Higress是一款由阿里云开源的服务网格入口网关,它提供了高性能、易用性以及强大的安全特性。本教程将引导你如何利用Docker来快速部署一个单机版本的Higress,并通过创建一个简单的“Hello World”服务来验证安装。
准备工作



  • 确保你的系统上已安装了Docker。


  • 基础相识Docker容器技能。


  • 有一个可以运行Docker下令的终端或下令行工具。
步骤 1: 安装并启动Higress

首先,你必要从Docker Hub拉取最新的Higress镜像,并以容器的形式运行它。
  1. # 拉取最新版的Higress Docker镜像
  2. docker pull higress/higress-gateway:latest
  3. # 运行Higress网关容器
  4. docker run -d --name higress-gateway \
  5.   -p 80:80 -p 443:443 \
  6.   higress/higress-gateway:latest
复制代码
这里,-p 80:80 -p 443:443 参数用于映射主机上的80和443端口到容器内的相同端口,使得可以通过这些端口访问Higress提供的服务。
步骤 2: 设置Higress

为了使Higress可以大概转发流量给后端的应用程序(如我们的"Hello World"服务),我们必要设置路由规则。这通常通过发送HTTP请求到Higress的管理API来完成。
假设我们想让全部发往http://localhost/ 的请求都被重定向至我们的"Hello World"服务,你可以按照以下步骤进行设置:

  • 获取Higress的管理接口所在:默认情况下,Higress的管理API位于 http://<Higress_IP>:9090/apisix/admin。如果你是在本地机器上直接运行Higress,那么IP应该是 127.0.0.1 或者是 localhost。

  • 创建路由规则
    利用curl下令向Higress发送一个POST请求来添加路由规则。这条下令会告诉Higress把全部根路径 / 上的请求都转到目的URL http://hello-world-service:8080。
  1. curl -X POST http://localhost:9090/apisix/admin/routes/1 \
  2.   -H 'Content-Type: application/json' \
  3.   -d '{"uri":"/","upstream":{"type":"roundrobin","nodes":{"hello-world-service:8080":1}}}'
复制代码
步骤 3: 启动Hello World服务

现在让我们创建一个非常简单的“Hello World”应用程序。这里我们将利用Python Flask框架作为例子,但你可以选择任何其他语言和技能栈。
  1. # hello_world.py
  2. from flask import Flask
  3. app = Flask(__name__)
  4. @app.route('/')
  5. def hello():
  6.     return "Hello, world!"
  7. if __name__ == '__main__':
  8.     app.run(host='0.0.0.0', port=8080)
复制代码
保存文件为 hello_world.py 并在同一目次下创建一个名为 Dockerfile 的文件,内容如下:
  1. FROM python:3.8-slim
  2. WORKDIR /app
  3. COPY . /app
  4. RUN pip install flask
  5. CMD ["python", "hello_world.py"]
复制代码
构建并运行你的服务容器:
  1. docker build -t hello-world-service .
  2. docker run -d --name hello-world-app -p 8080:8080 hello-world-service
复制代码
此时,你应该可以大概通过浏览器或者curl下令访问 http://localhost/ 来看到 "Hello, world!" 的响应了。

higress也支持利用k8s等方式来做部署和集成,详细可以去higress官网查询。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表