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 控制台进行配置
- 打开浏览器,输入地址 http://127.0.0.1:8001 进入控制台。
- 首次访问时,需要初始化管理员账号。按照提示设置用户名和密码后,系统会自动跳转至登录页面。请用刚才设定的凭据登录。
- 登录后,点击左侧菜单栏中的“服务来源”,再点击右侧的“创建服务来源”。根据以下指导填写表单并提交:
-
- 服务类型:选择 DNS域名
-
- 服务名称:输入
httpbin
- 服务名称:输入
-
- 服务端口:设置为
80
- 服务端口:设置为
-
- 域名列表:填写
httpbin.org
- 域名列表:填写
- 接下来,切换到“路由配置”选项卡,点击“创建路由”。依据下面的参数配置路由规则:
-
- 路由名称:自定义,例如
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等)之间的相互转换ÿ…...
[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] 文文的构造游戏 - 洛谷 运行代码(暴力枚举)——超时 #include <stdio.h> #define ll long long const int N 1e6 5; // 计算数组元素的异或和 ll xorSum(ll arr[], int n) {l…...
双击热备和负载均衡的区别
区别: 双机热备 (heartbeat):对同一应用来讲,永远是主机应用启动,备机应用停止的一主一备模式(两台通常叫双击热备,多台称为高可用) 负载均衡:两台/多台服务器 上同一个应用系统同时工作,分担负…...
如何使用 cPanel 部署 WordPress临时网站
对于依赖WordPress站点或WooCommerce商店的企业来说,在生产环境中直接修改站点风险很大。而WordPress的临时网站是一个更安全的选择,可以通过使用临时网站进行编辑来规避风险。 在本文中,我们将详细介绍WordPress临时网站的相关知识、使用临时…...
Android 自定义 Dialog 实现列表 单选,多选,搜索
前言 在Android开发中,通过对话框让用户选择,筛选信息是很方便也很常见的操作。本文详细介绍了如何使用自定义 Dialog、RecyclerView 以及自定义搜索框 来实现选中状态和用户交互,文中大本分代码都有明确注释,主打一个简单明了&a…...
下载地址合辑(持续更新)
下载地址合辑 汇总OSG相关地址Visual Studio Qt 地址qt插件安装失败 Boost库boost库编译步骤 FFmpeg 地址osg编译库 常用的下载地址: 汇总 vlc 地址: https://www.videolan.org/vlc/index.zh_CN.html visual 地址:https://my.visualstudio.…...
Android Kotlin 高阶函数详解及其在协程中的应用
文章目录 1. 引言2. 什么是高阶函数?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、两列布局 (1)概念 经典两列布局是指一种网页布局方式,其中一列宽度固定,另一列宽度自适应。 这种布局方式在网页设计中非常常见,因为它能够提供良好的视觉效果和用户体验。 如图所示: 页面顶部放置一…...
【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工具。部分芯片型号无需二次开发,即连即用;提供特色蓝牙/串口/USB三通芯片,为更多复杂无线应用赋能。 应用案例说明: BLE方便用户直接…...
miRNA分析流程学习(一)/TCGAmiRNA数据下载
miRNA(microRNA) 是一种小的非编码 RNA 分子,通常由 20 到 24 个核苷酸组成。miRNA 主要存在于动植物中,并在基因表达调控中起到关键作用。它们通过与特定的信使 RNA(mRNA)分子结合来抑制基因表达ÿ…...
西南大学软件专硕考研难度分析!
C哥专业提供——计软考研院校选择分析专业课备考指南规划 西南大学软件工程学硕近三年呈现出招生规模稳定、复试线稳中有升的特点。2024届实际录取8人,复试分数线305分,复试录取率67%,相比去年复试线略有下降但仍高于2022届,显示出…...
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21目录1. The Fair Language Model Paradox摘要研究背景问题与挑战如何解决创新点算法模型实验效果重要数据与结论推荐阅读指数&…...
安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)
文章目录 目的资料索引硬件电路软件框架介绍数据存储框架移植框架使用 使用示例示例地址与硬件连接通讯测试功能测试 总结 目的 OPTIGA TRUST M 是英飞凌推出的安全芯片,芯片通提供了很多 slot ,用于存放各类安全证书、密钥、用户数据等,内置…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
