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

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 介绍:来自阿里的开源 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镜像,并以容器的形式运行它。

# 拉取最新版的Higress Docker镜像
docker pull higress/higress-gateway:latest# 运行Higress网关容器
docker run -d --name higress-gateway \-p 80:80 -p 443:443 \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"服务,你可以按照以下步骤进行配置:

  1. 获取Higress的管理接口地址:默认情况下,Higress的管理API位于 http://<Higress_IP>:9090/apisix/admin。如果你是在本地机器上直接运行Higress,那么IP应该是 127.0.0.1 或者是 localhost
  1. 创建路由规则
    使用curl命令向Higress发送一个POST请求来添加路由规则。这条命令会告诉Higress把所有根路径 / 上的请求都转到目标URL http://hello-world-service:8080
curl -X POST http://localhost:9090/apisix/admin/routes/1 \-H 'Content-Type: application/json' \-d '{"uri":"/","upstream":{"type":"roundrobin","nodes":{"hello-world-service:8080":1}}}'
步骤 3: 启动Hello World服务

现在让我们创建一个非常简单的“Hello World”应用程序。这里我们将使用Python Flask框架作为例子,但你可以选择任何其他语言和技术栈。

# hello_world.py
from flask import Flask
app = Flask(__name__)@app.route('/')
def hello():return "Hello, world!"if __name__ == '__main__':app.run(host='0.0.0.0', port=8080)

保存文件为 hello_world.py 并在同一目录下创建一个名为 Dockerfile 的文件,内容如下:

FROM python:3.8-slimWORKDIR /appCOPY . /appRUN pip install flaskCMD ["python", "hello_world.py"]

构建并运行你的服务容器:

docker build -t hello-world-service .
docker run -d --name hello-world-app -p 8080:8080 hello-world-service

此时,你应该能够通过浏览器或者curl命令访问 http://localhost/ 来看到 "Hello, world!" 的响应了。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/686.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

头歌——数据库系统原理(数据的简单查询)

文章目录 第1关&#xff1a;基本 SELECT 查询代码 第2关&#xff1a;带限制条件的查询和表达式查询代码 第3关&#xff1a;使用 WHERE 语句进行检索代码 第1关&#xff1a;基本 SELECT 查询 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 如何获取数据表中指…

推荐一款可视化和检查原始数据的工具:RawDigger

RawDigger是一款强大的工具&#xff0c;旨在可视化和检查相机记录的原始数据。它被称为一种“显微镜”&#xff0c;使用户能够深入分析原始图像数据&#xff0c;而不对其进行任何更改。RawDigger并不是一个原始转换器&#xff0c;而是一个帮助用户查看将由转换器使用的数据的工…

计算机毕业设计Python+大模型股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; Python大模型股票预测系统 …

Robot Framwork 介绍与使用

文章目录 Robot Framwork 介绍Robot Framwork的安装安装robotframework-ride建立一个简单的测试用例 Robot Framwork 介绍 Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性&#xff0c;支持关键字驱动&#xff0c;可以同时测试多种类型的客户端或者…

【RabbitMQ】01-RabbitMQ

1. MQ MQ可以有更好的并发性。 2. 安装 docker run \-e RABBITMQ_DEFAULT_USERitheima \-e RABBITMQ_DEFAULT_PASS123321 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hm-net\-d \rabbitmq:3.8-management3. 结构 4. 数据…

最新PHP校园源码系统开发(多客社区校园系统源码全套APP源码附搭建教程)

最新PHP校园源码系统开发、多客社区校园系统源码以及全套APP源码附搭建教程的需求 一、最新PHP校园源码系统开发 技术栈选择&#xff1a; 后端&#xff1a;PHP&#xff08;建议使用PHP 7.2或更高版本&#xff09;数据库&#xff1a;MySQL&#xff08;建议使用MySQL 5.6或更高版…

校招回顾 | “青春不散场,梦想正起航”,极限科技(INFINI Labs)亮相湖北工业大学 2025 秋季校园招聘会

10 月 31 日&#xff0c;极限科技&#xff08;INFINI Labs&#xff09; 受邀参加 湖北工业大学 2025 届秋季校园招聘会&#xff0c;这不仅是一次与满怀激情的青年学子们的深度碰撞&#xff0c;更是一场关于青春与未来的美好邂逅。让我们一起回顾校招现场的精彩瞬间&#xff0c;…

在使用 AMD GPU 的 PyTorch 中实现自动混合精度

Automatic mixed precision in PyTorch using AMD GPUs — ROCm Blogs 随着模型规模的增加&#xff0c;训练它们所需的时间和内存——以及因此而产生的成本——也在增加。因此&#xff0c;采取任何措施来减少训练时间和内存使用都是非常有益的。这就是自动混合精度&#xff08;…

安卓设备adb执行AT指令控制电话卡

文章目录 AT指令起源与发展&#xff1a;基本格式&#xff1a;常见应用领域及功能&#xff1a;不同设备中的应用&#xff1a; 安卓获取modem设备输入符入口安卓设备输入AT指令 AT指令 AT 指令是 Attention 的缩写&#xff0c;是一种用于控制调制解调器等通信设备的指令集。 起…

RSTP的工作过程

RSTP简介&#xff1a; 生成树协议&#xff08;STP&#xff09;用于在网络中防止环路产生&#xff0c;但 STP 的收敛速度较慢。 RSTP&#xff08;Rapid Spanning Tree Protocol &#xff09;快速生成树协议&#xff1a;RSTP 是对 STP 的改进&#xff0c;它能在网络拓扑发生变化…

Django-生成csv文件

定义&#xff1a; python中生成csv文件&#xff1a; csv文件下载&#xff1a; 事例&#xff1a; 例子&#xff1a; urls: from django.urls import path from . import views urlpatterns [path(test_csv,views.test_csv), ] views: def test_csv(request):response Htt…

使用 RabbitMQ 有什么好处?

大家好&#xff0c;我是锋哥。今天分享关于【使用 RabbitMQ 有什么好处&#xff1f;】面试题。希望对大家有帮助&#xff1b; 使用 RabbitMQ 有什么好处&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ 是一种流行的开源消息代理&#xff0c;广…

go 聊天系统项目-1

1、登录界面 说明&#xff1a;这一节的内容采用 go mod 管理【GO111MODULE‘’】的模块&#xff0c;从第二节开始使用【GO111MODULE‘off’】GOPATH 管理模块。具体参见 go 包相关知识 1.1登录界面代码目录结构 代码所在目录/Users/zld/Go-project/day8/chatroom/ 1.2登录…

Kimi出考题,考题提示词Prompt附上,培训机构试题、期中考试、人事入职试题全搞定

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI工具集1&#xff1a;大厂AI工具【共23款…

蓝牙资讯|苹果AirPods Pro 2推出听力测试、助听器和听力保护等功能

苹果推送iOS 18.1 系统版本更新&#xff0c;AirPods Pro 2 用户也在 iOS 18.1 中获得了强大的新功能。 运行固件 7B19 的 AirPods Pro 2 用户&#xff0c;搭配 iOS 18.1 系统的 iPhone&#xff0c;将获得三项强大的听力健康功能&#xff1a;听力测试、助听器和听力保护。 听力…

【unique_str 源码学习】

文章目录 &#xff11;&#xff0e;删除器定义2. operator->() 运算符重载3. add_lvalue_reference<element_type>::type 使用 基本原理这篇博主写的很详细 https://yngzmiao.blog.csdn.net/article/details/105725663 &#xff11;&#xff0e;删除器定义 deleter_…

计算机网络:网络层 —— 多播路由选择协议

文章目录 多播路由选择协议多播转发树构建多播转发树基于源树的多播路由选择建立广播转发树建立多播转发树 组共享树的多播路由选择基于核心的生成树的建立过程 因特网的多播路由选择协议 多播路由选择协议 仅使用 IGMP 并不能在因特网上进行IP多播。连接在局域网上的多播路由…

【力扣打卡系列】删除链表重复节点

坚持按题型打卡&刷&梳理力扣算法题系列&#xff0c;语言为go&#xff0c;Day14 删除链表中的节点 题目描述 解题思路 删除指定节点&#xff08;只知道Node&#xff0c;不知道Node上一个节点的情况下&#xff09;将该节点&#xff08;node&#xff09;的后一个节点的值…

【大模型LLM面试合集】大语言模型架构_tokenize分词

tokenize分词 0.总览 分词方法特点被提出的时间典型模型BPE采用合并规则&#xff0c;可以适应未知词2016年GPT-2、RoBERTaWordPiece采用逐步拆分的方法&#xff0c;可以适应未知词2016年BERTUnigram LM采用无序语言模型&#xff0c;训练速度快2018年XLMSentencePiece采用汉字、…

opencv - py_imgproc - py_grabcut GrabCut 算法提取前景

文章目录 使用 GrabCut 算法进行交互式前景提取目标理论演示 使用 GrabCut 算法进行交互式前景提取 目标 在本章中 我们将了解 GrabCut 算法如何提取图像中的前景我们将为此创建一个交互式应用程序。 理论 GrabCut 算法由英国剑桥微软研究院的 Carsten Rother、Vladimir K…