网关三问:为什么微服务需要网关?什么是微服务网关?网关怎么选型?

文章整体介绍

本文旨在解答关于微服务网关的三个核心问题:

1)为什么需要网关?也即在何种场景下应采用微服务网关以优化系统架构;

2)什么是微服务网关?主要讲构成微服务网关的关键能力,包括但不限于流量管理、安全防护等;

3)怎么选微服务网关? 探讨一下,选择合适微服务网关时可以参考的一系列考量因素,帮助读者根据自身需求做出明智决策。

微服务网关的主要作用

微服务架构中,API网关作为所有客户端请求的单一入口点,简化了外部系统与内部服务之间的交互。

通过集中管理认证和授权逻辑,API网关增强了系统的安全性,比如只允许携带有效令牌的请求访问敏感数据或功能。

它还负责服务发现与路由,自动将客户端请求导向正确的后端服务,例如根据URL路径的不同将流量分发给订单处理、用户管理等不同服务。

此外,微服务API网关能够执行协议转换,使得使用不同通信协议的服务之间可以顺利交流,如将HTTP请求转换为gRPC调用。利用限流、熔断等机制,API网关有助于提高整个系统的稳定性和可靠性,防止因单个服务过载而导致整体性能下降。

最后,通过日志记录与监控功能,微服务API网关便于开发者追踪问题根源及优化用户体验。

微服务网关的核心功能

微服务网关作为连接外部请求与内部微服务的桥梁,具备多种核心功能。

1)协议转换:是其重要能力之一,例如将HTTP请求转化为gRPC调用,使得采用不同通信协议的服务能够无缝协作。

2)安全隔离:也是关键特性,通过提供认证、授权等机制防止未授权访问,比如利用JWT(JSON Web Token)验证用户身份,确保只有合法用户可以访问敏感数据或服务。

3)流量控制:是帮助系统应对高并发场景,如设置限流规则来限制每秒请求数量,避免因短时间内大量请求涌入而导致服务崩溃;同时支持熔断机制,在下游服务出现故障时快速切断请求链路,保护整个系统的稳定性。

这些功能共同作用,使微服务架构更加健壮和高效。

微服务网关选型的主要考虑要素与说明

在选择微服务网关时,有几个关键的要素是第一优先级要考虑的:

1)生态兼容性 : 是一个非常重要的考量因素。这是因为现代软件开发往往基于一系列技术栈和框架,一个能够良好地与现有生态系统集成的网关可以减少迁移成本,比如 如果能默认支持dubbo,那么就不再需要额外开发接口转换协议层了,这就减少了协作成本,促进团队间的协作效率。

2)性能:是评价任何网络组件的关键指标之一,在微服务架构中更是如此。高效处理请求的能力直接影响到用户体验以及整个系统的响应速度。优秀的微服务网关应该具备高吞吐量、低延迟的特点,能够在不牺牲服务质量的前提下支持大规模并发访问,确保应用程序即使在高峰时段也能平稳运行。

3)扩展性:对于构建可成长的应用程序至关重要。随着业务需求的变化和技术的发展,系统需要能够容易地添加新的功能或调整现有的配置以适应不断变化的需求。一个好的微服务网关应提供灵活的插件机制或者开放API接口,使得开发者可以根据实际场景定制化开发特定功能模块,同时也要支持水平扩展,通过增加实例数量来提升整体处理能力。

4)安全性:则是保障数据安全和服务稳定性的基础。在当前日益复杂的网络环境中,保护敏感信息免受未授权访问变得尤为重要。理想的微服务网关应当内置强大的认证授权机制(如OAuth2.0)、流量加密支持(例如TLS/SSL)等安全特性,并且能够有效地抵御常见的网络攻击(如DDoS攻击)。此外,它还需要提供细粒度的访问控制策略,允许管理员根据不同的用户角色设置相应的权限级别。

Higress:来自阿里的开源 微服务网关

Higress 作为阿里开源的智能 API 网关,Higress 源自阿里巴巴多年的实战经验,完全开源免费,是企业构建高效、安全微服务架构的理想选择。

在生态兼容性方面:它遵循 Ingress/Gateway API 标准,还支持 Nacos、Kubernetes Service 等多种注册中心,展现出强大的。

在性能方面:Higress 面向超大规模路由配置与转发,能够在3秒内处理10000个路由,并且相比 Ingress Nginx,CPU 成本节省50%,内存成本节省90%。

扩展性方面:Higress 支持动态配置热更新,并可通过 Java 编程模型进行扩展。安全性方面,Higress 全面支持主流鉴权能力如 key-auth、hmac-auth 和 jwt-auth。此外,。

Higress具体使用样例-基于docker的单机版快速部署

以下将详细介绍如何利用Docker容器完成Higress的单机版快速部署,并通过一个简单的“Hello World”示例来验证安装与配置是否成功。整个过程包括了创建必要的网络服务、启动Higress核心组件以及设置基本路由规则等步骤。

前置条件

确保本机已安装好Docker。如果还未安装,请参考官方指南进行安装:Docker 安装指南。

部署步骤

  1. 创建工作目录:首先,在您的文件系统中创建一个新目录用于存放Higress相关的配置文件。
mkdir higress
  1. 拉取并运行Higress镜像:接下来,使用下面提供的命令从阿里云镜像仓库拉取最新的Higress全功能版本镜像,并将其作为Docker容器启动。此命令同时会将宿主机上的8001、8080和8443端口映射至容器内对应的服务端口。
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 UI控制台。
    • 8080端口:为HTTP请求入口。
    • 8443端口:则负责处理HTTPS协议下的通信。
  1. 登录到Higress控制台:打开浏览器输入http://127.0.0.1:8001地址访问Higress管理界面。首次访问时需要先初始化管理员账户信息。按照提示完成账号初始化流程后即可登录进入主控面板。
  1. 配置服务来源及域名
    • 在控制台左侧菜单栏找到“服务来源”,点击右侧的“创建服务来源”按钮,选择DNS域名类型,并填写相关信息如服务名、端口号等。
    • 接着切换到“域名管理”页面,添加一个新的域名记录,例如example.com
  1. 创建路由规则
    • 切换到“路由管理”视图,点击“创建路由”开始定义新的路由策略。这里可以指定匹配路径(比如/hello)、目标服务以及其他高级选项。
    • 对于“Hello World”测试案例来说,您可以简单地将该路由指向之前设定好的服务源之一。
  1. 验证部署结果:最后一步是检查一切是否按预期工作。尝试通过curl命令向刚配置好的路由发送请求以确认是否能正确接收到响应。
curl http://127.0.0.1:8080/hello -H 'host: example.com'

如果一切正常的话,你应该能看到类似“Hello, world!”的消息返回。

总结

通过上述步骤,我们已经成功实现了Higress基于Docker容器化的快速部署,并且验证了一个简单的Web应用接入场景。这只是一个起点,实际上Higress提供了更多强大的特性等待您去探索,比如支持多种注册中心、丰富的安全防护机制等等。另外,值得注意的是,除了当前介绍的独立运行模式外,Higress也支持使用Kubernetes等方式来做更复杂的集群部署与集成,具体详情可访问Higress官网查阅相关文档。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

008:光盘映像文件处理工具UltraISO安装教程

摘要:本文详细介绍光盘映像文件处理工具UltraISO的安装流程。 一、软件介绍 UltraISO是一款功能强大的光盘映像文件处理工具,支持ISO文件的制作、编辑、转换、压缩、刻录以及启动盘制作,广泛应用于数据备份、软件分发和系统安装等领域。 二…

从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

引言 在OpenAI DevDay发布会上,OpenAI再次震撼整个人工智能行业,为AI领域带来了重大的更新。CEO Sam Altman宣布推出了定制版本的ChatGPT,这意味着用户现在可以根据自己的需求打造个性化的GPT,并分享至GPT Store。这一消息对于受…

神经架构搜索:自动化设计神经网络的方法

在人工智能(AI)和深度学习(Deep Learning)快速发展的背景下,神经网络架构的设计已成为一个日益复杂而关键的任务。传统上,研究人员和工程师需要通过经验和反复试验来手动设计神经网络,耗费大量时…

【MySQL】日志

1. 日志基本了解 常见的MySQL Server日志类型,以及记录的日志信息(场景通俗理解) 错误日志 记录的主要信息由服务器关闭、启动、崩溃事件;MySQL运行过程中出现的错误、警告和严重事件以及与权限、配置相关的问题使用场景 诊断MyS…

【Linux】【xmake】安装 + C/C++常用项目配置

文章目录 0. 环境准备1. 子命令create - 快速创建项目build - 构建程序config - 配置编译需要的参数show - 查看当前工程基本信息update - 程序自更新 2. C/C 项目常用配置2.1 项目目标类型2.2 添加宏定义2.3 头文件路径和链接库配置2.4 设置语言标准2.5 设置编译优化2.6 添加源…

光伏MPPT追踪的仿真设计

利用Simulink可实现如下功能:改变光照时有MPPT追踪并低电压穿越的能力。 MPPT控制器的全称为“最大功率点跟踪”(Maximum Power Point Tracking)太阳能控制器,检测主回路直流电压及输出电流,计算出太阳能阵列的输出功…

5.15 加载内核映像文件(1)

首先是 连接脚本与 实际的内核映像大小的关系: 关于ELF 格式的了解: 如何通过 ELF 头, 找到各个段。 网上的关于elf 的截图: 那么 segment 与 section 有什么区别呢? 也就是说, section值得是 单个C文件的…

021、深入解析前端请求拦截器

目录 深入解析前端请求拦截器: 1. 引言 2. 核心实现与基础概念 2.1 基础拦截器实现 2.2 响应拦截器配置 3. 实际应用场景 3.1 完整的用户认证系统 3.2 文件上传系统 3.3 API请求缓存系统 3.4 请求重试机制 3.5 国际化处理 4. 性能优化实践 4.1 请求合并…

VisionPro - 高级 - 保存模式以备后用 - 中心圆的查找配置

前言: 在基础篇, VisionPro Basic - 01- 有关应用和作业-CSDN博客 我们提到了应用和作业的保存,那么这些都是vpp的保存格式。 我们知道,在模式工具的配置中,如果我们做好了很多的调试,最后配置好参数后,也有一个保存模式的选项。我们在保存的时候,一定要添加前缀或…

GIT使用list

清空当前commit区 方法 1:软重置到初始状态 如果希望保留文件内容,但清空所有 commit 历史,可以使用以下命令: git reset --soft $(git rev-list --max-parents0 HEAD)解释: --soft 表示重置 commit 历史&#xff…

【机器学习】任务九:卷积神经网络(基于 Cifar-10 数据集的彩色图像识别分类、基于 CNN 的手写数字识别的实验)

1.卷积神经网络 卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理数据网格结构(如图像、视频等)的深度学习模型,在计算机视觉任务中被广泛应用,如图像分类、目标检测、图像分割等。以下…

[手机Linux PostmarketOS]七, Linux使用selenium爬虫

一,selenium安装 # 用pip 安装 selenium pip3 install selenium --break-system-packages 二,安装浏览器Chrome Alpine Linux 环境中没有google Chrome, 使用 Chromium 浏览器作为 Chrome 的替代品,Chromium 是 Chrome 的开源版本…

在GeoTools中的Shapefile属性表读取效率之Shp与Dbf对比

目录 前言 一、POI测试数据简介 1、选用的POI数据 2、关于数据的属性数据 二、属性数据读取的两种方式实现 1、基于DbaseFileReader的读取 2、基于SimpleFeatureSource的读取 三、实际运行对比 1、内存和CPU占用情况 2、运行耗时情况 四、总结 前言 众所周知&#x…

Unity3D 开发技巧

视频教程: Unity3D 开发技巧分享,你可能不知道的小知识 Unity中文课堂教程地址: Unity3D开发-你可能不知道的知识 | Unity 中文课堂 Start 函数可以用协程 默认协同函数 Start 可将 void 改为IEnumerator 作为协程启动 using System.Colle…

多层感知机的从零实现与softmax的从零实现(真·0000零基础)

今天再读zh.d2l书(4.2. 多层感知机的从零开始实现 — 动手学深度学习 2.0.0 documentation), 看了关于多层感知机的从零实现与softmax的从零实现 目录 mlp从零实现, 点击“paddle”的代码 点击“torch”的代码 训练 参数解…

DataSophon集成ApacheImpala的过程

注意: 本次安装操作系统环境为Anolis8.9(Centos7和Centos8应该也一样) DataSophon版本为DDP-1.2.1 整合的安装包我放网盘了: 通过网盘分享的文件:impala-4.4.1.tar.gz等2个文件 链接: https://pan.baidu.com/s/18KfkO_BEFa5gVcc16I-Yew?pwdza4k 提取码: za4k 1…

C#与C++交互开发系列(十二):托管和非托管内存管理策略

前言 在进行C#与C互操作开发时,内存管理是一个非常重要的环节。由于C#采用托管内存管理(由垃圾回收机制GC控制),而C则使用手动内存管理(需要开发者负责分配和释放内存),因此跨语言调用时&#…

光耦的应用

什么是光耦 光耦是一种实现信号隔离的元器件,通常用于各部分电路之间,使其不互相受到影响。 工作原理 光耦是由一个发光二极管和一个光敏三极管封装而成的。其使用原理为: 当发光二极管有信号输入时,则会被点亮,此时…

PHP-FPM 性能配置优化

4 核 8 G 服务器大约可以开启 500 个 PHP-FPM,极限吞吐量在 580 qps (Query Per Second 每秒查询数)左右。 Nginx php-fpm 是怎么工作的? php-fpm 全称是 PHP FastCGI Process Manager 的简称,从名字可得知&#xff…

基于SSM的“众优”大学生家教平台的设计与实现

前言 对于当今社会的人们来说,互联网技术是必不可少的,随着经济和技术的不断发展,计算机已经深入到各个领域。“众优”大学生家教平台将人们的时间需求与计算机技术结合起来,架起一座桥梁,使用在线查看“众优”大学生…