当前位置: 首页 > news >正文

API网关的作用--为什么微服务需要一个API网关?

微服务网关核心作用就是协议转换、安全隔离和流量控制

微服务架构中,API网关作为系统的入口点,可以统一处理所有客户端请求。

1)协议转换:它能够支持多种通信协议(如HTTP、gRPC等)之间的相互转换,使得使用不同协议的服务可以无障碍地进行交互。例如,一个前端应用可能通过HTTP协议与微服务网关通信,而该网关则可以将请求转换成后端服务所使用的gRPC格式。

2)安全隔离:是另一个重要职责,简单说就是我们总不能把内部服务不加保护的直接对外暴露对吧?。微服务网关充当了外部请求与内部服务之间的一道屏障,确保只有经过认证和授权的流量才能到达指定的服务。这可以通过实现OAuth 2.0或JWT令牌验证来达成,保证了即使某个服务受到攻击,也不会影响到整个系统其他部分的安全性。

3)流量控制:微服务网关能够基于预设规则对访问频率进行限制,防止因突发大量请求导致的服务过载情况发生。比如设置每分钟最大请求数量阈值,一旦超过就自动拒绝额外请求或者将其排队处理,以此来保障系统的稳定运行。此外,还可以根据需要动态调整流量分配策略,实现更高效的资源利用。

微服务网关选型主要要考虑生态兼容、性能、扩展性、以及安全性四个方面

在选择微服务网关时,生态兼容性是一个极其重要的考量因素。这是因为微服务架构往往依赖于一系列的技术栈和工具链来支持其开发、部署及运维工作。一个具有良好生态兼容性的网关能够无缝集成到现有的技术体系中,无论是对Spring Cloud、Kubernetes等流行框架的支持,还是与其他监控、日志收集系统的整合能力,都能极大地简化系统架构复杂度,并降低维护成本。

性能对于微服务网关来说同样至关重要。作为所有外部请求进入内部服务集群的第一道门户,网关承担着流量分发的重要职责。高效处理高并发请求的能力不仅直接影响用户体验(如响应速度),还关系到整个系统的稳定性。因此,在选型过程中需要特别关注候选产品的吞吐量、延迟指标以及它们在高压环境下表现出来的鲁棒性。

扩展性也是评价一款优秀微服务网关不可或缺的标准之一。随着业务规模的增长或需求的变化,企业可能需要频繁调整其服务架构。这时,如果网关具备良好的水平扩展能力,就可以通过简单地增加节点数量来应对日益增长的访问压力;同时,支持灵活配置路由规则、自定义插件等功能也有助于满足个性化场景下的特殊要求。

安全性是任何网络组件都不容忽视的关键特性,尤其对于处于边界位置的微服务网关而言更是如此。它不仅需要提供基本的身份验证与授权机制以确保只有合法用户才能访问受保护资源,还需具备抵御常见攻击模式(如DDoS)的能力,并且能够实现细粒度的安全策略管理,比如基于API级别的访问控制。此外,随着数据隐私法规日益严格,确保传输过程中敏感信息不被泄露也成为了一个重要考量点。

Higress:来自阿里的有多年实战经验的开源微服务网关

Higress 是阿里巴巴基于多年实战经验打造的一款完全开源免费的智能 API 网关。它在生态兼容性方面表现出色,不仅遵循了开源 Ingress 和 Gateway API 标准,还支持 Nacos、Kubernetes Service 等多种注册中心,为用户提供了极大的灵活性。性能上,Higress 面向超大规模路由配置与转发进行了优化,能够处理 10000 个路由且生效时间仅需 3 秒,并且对比 Ingress Nginx,其 CPU 成本节省了 50%,内存成本节省了 90%。扩展性方面,Higress 支持动态配置热更新,并可以通过 Java 编程模型进行进一步的功能扩展,满足不同场景下的定制化需求。安全性方面,Higress 全面支持主流鉴权能力如 key-auth、hmac-auth、jwt-auth 等,确保服务的安全性。综上所述,阿里开源的 Higress 在多个关键维度上展现了强大的竞争力。

Higress具体部署样例(单机版)

前置条件

确保您的机器上已安装了 Docker。如果还未安装,可以参考 Docker 官方文档完成安装:Get Docker | Docker Docs

部署

Higress 仅需一个 Docker 容器即可启动,这为个人开发者提供了便利,既可以在本地学习,也可以用于简易站点搭建。

创建工作目录

首先,创建一个目录作为工作空间,存放 Higress 的配置文件。

mkdir higress
启动 Higress

接下来,通过以下命令运行 Higress,并将宿主机上的 higress 目录映射到容器内的 /data 目录下:

docker run -d --rm --name higress-ai -v ./higress:/data \-p 8001:8001 -p 8080:8080 -p 8443:8443  \higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest

这里使用的端口包括:

  • 8001 端口:用于访问 Higress 控制台;
  • 8080 端口:网关 HTTP 请求入口;
  • 8443 端口:网关 HTTPS 请求入口。

登陆 Higress 控制台进行配置

  1. 打开浏览器,输入地址 http://127.0.0.1:8001 进入控制台。
  1. 首次访问时,需要初始化管理员账号。按照提示设置用户名和密码后,系统会自动跳转至登录页面。请用刚才设定的凭据登录。
  1. 登录后,点击左侧菜单栏中的“服务来源”,再点击右侧的“创建服务来源”。根据以下指导填写表单并提交:
    • 服务类型:选择 DNS域名
    • 服务名称:输入 httpbin
    • 服务端口:设置为 80
    • 域名列表:填写 httpbin.org
  1. 接下来,切换到“路由配置”选项卡,点击“创建路由”。依据下面的参数配置路由规则:
    • 路由名称:自定义,例如 my-route
    • 匹配规则:精确匹配,路径设为 /get
    • 目标服务:从下拉列表中选中 httpbin.dns

测试生效

为了验证上述配置是否成功,您可以尝试在浏览器中打开如下 URL:

http://127.0.0.1:8080/get

若一切正常,您应该能看到来自 httpbin.org 的响应,以 JSON 格式展示了请求的相关信息。

查看本地配置

Higress 支持标准的云原生路由 API(如 Ingress API 和 Gateway API)。上述通过控制台完成的配置会生成对应的 YAML 文件保存在 ./higress/ingresses 目录下。例如,对于上面创建的 my-route 路由,其对应的 my-route.yaml 文件内容大致如下:

annotations:higress.io/destination: httpbin.dnshigress.io/ignore-path-case: "false"
labels:higress.io/resource-definer: higress
rules:
- http:paths:- backend:resource:apiGroup: networking.higress.iokind: McpBridgename: defaultpath: /getpathType: Exact

这个文件定义了路由的基本属性,包括注解、标签以及具体的匹配规则等。

小结

至此,您已经完成了 Higress 的基本安装与初步配置。此方案非常适合开发环境下的快速试用或小型项目部署。当然,Higress 也支持使用 K8s 等方式进行更加复杂环境下的部署和集成,更多相关信息,请访问 Higress 官网查阅相关文档。

相关文章:

API网关的作用--为什么微服务需要一个API网关?

微服务网关核心作用就是协议转换、安全隔离和流量控制 微服务架构中,API网关作为系统的入口点,可以统一处理所有客户端请求。 1)协议转换:它能够支持多种通信协议(如HTTP、gRPC等)之间的相互转换&#xff…...

[0154].第5节:IDEA中创建Java Web工程

我的后端学习大纲 IDEA大纲 1.1.IDEA中配置Tomcat: 1.找打setting: 2.配置Tomcat Server的位置: 3.这里配置Tomcat的名称以及配置应用服务器的位置。根据自己Tomcat的安装位置决定 4.配置好后,如下图所示 1.2.创建Web工程: 1.建…...

React03 组件 Props

组件 & Props React 组件函数( Function )组件类( Class )组件 Props将 props 传递给子组件在子组件中读取 props给 prop 指定一个默认值使用 JSX 展开语法传递 props React 组件 组件本质上就是类和函数,但是与常…...

多线程——线程安全的集合类

目录 前言 一、多线程环境使用 ArrayList 1.进行加锁 2.使用 SynchronizedList 类 3.使用 CopyOnWriteArrayList 类 二、多线程环境使用队列 1.进行加锁 2.使用阻塞队列 三、多线程环境使用哈希表 1.Hashtable 2.ConcurrentHashMap (1)缩小锁…...

自动化数据库管理:如何通过存储过程动态创建 MySQL 对象

在当今数据驱动的世界中,高效的数据库管理至关重要。本文将展示如何通过存储过程自动化地创建各种 MySQL 数据库对象,包括数据表、视图、字段、索引、约束、存储过程、定时器和事件。通过这些方法,我们可以快速响应业务需求,提高数…...

480p 720p 1080p 2k 4k 8k 12k分辨率视频分别占用多大带宽?

技术背景 好多开发者,在设置视频编码参数的时候,对不同分辨率的带宽设置,缺乏相关的经验,实际上,视频分辨率与所需带宽之间的关系受到多个因素的影响,包括视频编码方式、帧率、视频内容的动态程度等。下面…...

unity中GameObject介绍

在 Unity 中,Cube和Sphere等基本几何体是 Unity 引擎的内置预制体(Prefabs),它们属于 Unity 中的GameObject 系统,可以在 Unity 的 Hierarchy 视图或 Scene 视图中右键点击,然后在弹出的菜单中选择 3D Obje…...

洛谷——P8468 [Aya Round 1 C] 文文的构造游戏(01构造问题)

P8468 [Aya Round 1 C] 文文的构造游戏 题目描述 [Aya Round 1 C] 文文的构造游戏 - 洛谷 运行代码&#xff08;暴力枚举&#xff09;——超时 #include <stdio.h> #define ll long long const int N 1e6 5; // 计算数组元素的异或和 ll xorSum(ll arr[], int n) {l…...

双击热备和负载均衡的区别

区别&#xff1a; 双机热备 (heartbeat)&#xff1a;对同一应用来讲&#xff0c;永远是主机应用启动&#xff0c;备机应用停止的一主一备模式(两台通常叫双击热备&#xff0c;多台称为高可用) 负载均衡&#xff1a;两台/多台服务器 上同一个应用系统同时工作&#xff0c;分担负…...

如何使用 cPanel 部署 WordPress临时网站

对于依赖WordPress站点或WooCommerce商店的企业来说&#xff0c;在生产环境中直接修改站点风险很大。而WordPress的临时网站是一个更安全的选择&#xff0c;可以通过使用临时网站进行编辑来规避风险。 在本文中&#xff0c;我们将详细介绍WordPress临时网站的相关知识、使用临时…...

Android 自定义 Dialog 实现列表 单选,多选,搜索

前言 在Android开发中&#xff0c;通过对话框让用户选择&#xff0c;筛选信息是很方便也很常见的操作。本文详细介绍了如何使用自定义 Dialog、RecyclerView 以及自定义搜索框 来实现选中状态和用户交互&#xff0c;文中大本分代码都有明确注释&#xff0c;主打一个简单明了&a…...

下载地址合辑(持续更新)

下载地址合辑 汇总OSG相关地址Visual Studio Qt 地址qt插件安装失败 Boost库boost库编译步骤 FFmpeg 地址osg编译库 常用的下载地址&#xff1a; 汇总 vlc 地址&#xff1a; https://www.videolan.org/vlc/index.zh_CN.html visual 地址&#xff1a;https://my.visualstudio.…...

Android Kotlin 高阶函数详解及其在协程中的应用

文章目录 1. 引言2. 什么是高阶函数&#xff1f;3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda 表达式3.3 匿名函数3.4 返回函数 4. 高阶函数的深入用法4.1 函数组合4.2 内联函数4.3 高阶扩展函数 5. Kotlin 高阶函数的对比优势5.1 与 Java 的对比5.2 与 JavaScript 的…...

CSS基础—网页布局(重点!)

1、两列布局 &#xff08;1&#xff09;概念 经典两列布局是指一种网页布局方式&#xff0c;其中一列宽度固定&#xff0c;另一列宽度自适应。‌ 这种布局方式在网页设计中非常常见&#xff0c;因为它能够提供良好的视觉效果和用户体验。 如图所示&#xff1a; 页面顶部放置一…...

【Fargo】17:vs工程转qt构建:QT6 不支持32bit转向qt5.15.2

vs2022的console 工程加入qt支持后使用qt15.2 的vs2019 库,变为一个qt界面程序。最终效果 一些参考 qt5的项目搭建 qt5 最多支持到vs2019 qt6 最新 已经支持vs2022 国内还是以qt5.15为主 升级qt的vstools...

​智能电表蓝牙芯片方案

RAMSUN基于自研射频技术和基带算法提供蓝牙MCU。蓝牙MCU配套成熟的网络协议栈和丰富的示例代码及多平台APP工具。部分芯片型号无需二次开发&#xff0c;即连即用&#xff1b;提供特色蓝牙/串口/USB三通芯片&#xff0c;为更多复杂无线应用赋能。 应用案例说明: BLE方便用户直接…...

miRNA分析流程学习(一)/TCGAmiRNA数据下载

miRNA&#xff08;microRNA&#xff09; 是一种小的非编码 RNA 分子&#xff0c;通常由 20 到 24 个核苷酸组成。miRNA 主要存在于动植物中&#xff0c;并在基因表达调控中起到关键作用。它们通过与特定的信使 RNA&#xff08;mRNA&#xff09;分子结合来抑制基因表达&#xff…...

西南大学软件专硕考研难度分析!

C哥专业提供——计软考研院校选择分析专业课备考指南规划 西南大学软件工程学硕近三年呈现出招生规模稳定、复试线稳中有升的特点。2024届实际录取8人&#xff0c;复试分数线305分&#xff0c;复试录取率67%&#xff0c;相比去年复试线略有下降但仍高于2022届&#xff0c;显示出…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21目录1. The Fair Language Model Paradox摘要研究背景问题与挑战如何解决创新点算法模型实验效果重要数据与结论推荐阅读指数&…...

安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)

文章目录 目的资料索引硬件电路软件框架介绍数据存储框架移植框架使用 使用示例示例地址与硬件连接通讯测试功能测试 总结 目的 OPTIGA TRUST M 是英飞凌推出的安全芯片&#xff0c;芯片通提供了很多 slot &#xff0c;用于存放各类安全证书、密钥、用户数据等&#xff0c;内置…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...