为什么微服务一定要有API网关?

微服务为什么要用到 API 网关? 微服务架构(通常简称为微服务)是指开发应用所用的一种架构形式。通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应。微服务是互联网业务发展的结果,互联网业务的飞速发展导致系统的架构也在不断地发生变化,总体来说,系统的架构大致经历了:单体应用架构—> SOA 架构—>微服务架构的演变,具体发展历程和各自的优缺点如下表所示。架构类型简介优点缺点单体应用架构将所有的功能代码打包成一个服务。 阅读详情

微服务不能没有网关,就如同 Java 程序员不能没有IDEA、Eclipse。为什么呢?

之所以网关对微服务这么重要,主要有以下几点原因:

1. 解决 API 放哪里的问题

要知道,采用微服务架构的系统本身是由很多的独立服务单元组合起来的。而客户端要调用系统,则必须通过系统提供的各种对外开放的功能 API 来实现。

问题来了,这些 API 要放在哪里呢?直接放在组成系统的服务单元上行不行?

比如,在一套电商系统上,关于订单相关的 API ,放在组成订单服务的服务单元上;风控服务的 API ,放在组成风控服务的服务单元上。

好,咱们假设有这么一个场景,有一位用户想在这套电商系统上查看下商品详情。那么,这个查看商品详情的操作,就可能:

  • 调用商品服务的 API 获取商品描述
  • 调用评价服务的 API 获取相关评价
  • 调用商家服务的 API 获取商家信息
  • 调用礼券服务的 API 获取相关礼券
  • ……

可以看到,就这么一个商品查看操作,就可能会调用许多服务的 API。

那这些 API 如果全部分散到各个服务单元上,供客户端调用,像查看商品这么简单的一次操作,客户端就可能需要远程访问好几次甚至十几次服务器。

微服务员自己有讲究把 API 的粒度划分得很细,也就是说,可能从商品服务上调用商品信息,不止是调用一次商品服务就够了,很可能需要多次对商品服务的不同 API 进行调用,才能获取到足够的数据。

这样一来,客户端需要访问服务器的次数就更多了,可能十几次都不够,得几十次。

这种多次访问服务器的行为,会极大延迟客户端的界面响应时间,很不现实。

所以,把 API 放到各个业务相关的服务单元上,看上去问题很大。

那为什么引入网关就能解决这个问题呢?

因为引入网关,就相当于在客户端和微服务之间加了一层隔离。通常,网关本身会和各个服务单元处于同一个机房,这样,客户端做业务操作的时候,只需要访问一次网关。然后剩下的事情,再由网关分别访问同在一个机房的不同的服务,再把拿到的数据统一在网关封装好,返回给客户端就好。

2. 解决边缘功能集成的问题

在一套微服务组成的系统里,除了必须的业务功能以外,还有为了系统自身的健壮与安全,以及微服务本身的管理,而必须引入的一些非业务功能。对于这些非业务又很重要的功能,我们统称为边缘功能。

还是拿电商系统为例,我们来看一些重要的边缘功能。

假设因为我们做了一次非常大的促销活动,导致流量过大,系统承载不了了。此时,为了保证系统本身的稳定,我们就需要把一些承载不了的流量给通过各种手段消化掉,一般的做法有三种:

  • 限流:通过令牌桶等算法,把一些额外的流量挡在系统外面,不让其访问。
  • 降级:由于系统可能已经过载了,此时,我们就放弃处理一些服务和页面的请求或者进行简单处理,比如直接返回一个报错。
  • 熔断:有些时候,系统过载过度或者上线出了问题 bug,降级都解决不了问题。比如,缓存失效了,导致大量请求频繁访问了数据库,而这种频繁访问数据库可能造成了大量的 IO 操作,结果又影响了数据库所在的操作系统,同时,这个操作系统上又有着别的重要服务,直接也被影响了。对于这种连锁反应,我们称之为雪崩。而为了防止雪崩,我们就会坚决把缓存失效导致数据库被频繁访问的服务给停掉,这就是熔断。

可以看到,像限流、降级、熔断这些系统保障策略,最合适的地方应该是有一个集中的请求入口点,就像古时候,老百姓进城需要过城门那样。

当系统出现问题的时候,直接就在这个入口点做相应的操作即可。

  • 限流,就直接在这个入口点限制后续请求。
  • 降级,就直接在这个入口点判断请求想要访问的服务或者页面,直接报错返回。
  • 熔断,就直接在这个入口点,断开所有访问特定服务的请求连接,然后再把后继对特定服务的访问,也统统拦在门外。

在电商系统里,有很多特殊场景的接口,需要受到严格的限制。

比如,支付接口,访问它就需要认证和权限控制。又比如,对于系统的访问,有时候不能让国外的人去访问国内的网站,这就需要限制客户端的访问 IP,所以系统还需要认证和授权功能。

那这种认证和授权也是最合适放在请求的一个集中入口点,统一实现。

还记得上面咱们说过的网关的 API 统一存放吗?我们只需要对这些 API 做对应的权限设置,当请求访问特殊场景接口的时候,必定会通过 API 访问。所以,限制接口的访问,本质上就是对特定 API 的限制,那么,放在网关再合适不过了。

现实里,我们有时候需要把线上的流量镜像出来,转发到灰度环境,利用这些镜像出来的流量既可以用于小范围测试,又可以更好的评估系统所能承载的最大吞吐量,也因此,系统需要有一个统一入口做分流。

可以看到,无论是系统需要的保障策略,认证授权,还是流量分流等功能,都应该放到一个统一的请求入口处才能得到最好的实现。网关恰好就承担了这么个统一请求入口的角色。

所以,对于微服务中,林林总总的边缘功能,往往会通过插件的形式,集成在 API 网关中。

3. 解耦了客户端和后端微服务

一套项目,在使用微服务模式的初期,往往后端变化是十分频繁的。

频繁变化的原因有很多,像业务领域划分不合适啊,像某个业务模块急速膨胀啊,都可能导致后端微服务的剧烈变化。

在这种情况下,如果没有网关,很可能就会出现客户端需要被迫随着后端的变化而变化的情况。

比如,在电商系统里,初期我们很可能会把风控服务做得非常小。随着业务的发展,风控服务越来越庞大,此时,风控服务就可能被分解为决策引擎和分析中心等更多更细的服务。

在电商里,风控往往是下单、支付等操作的必要前置操作。如果没有网关去分隔开客户端和微服务,客户端直接和风控服务打交道,那么风控服务拆分,API 必然不会稳定,API 的变化,自然会引发调用 API 客户端代码的变化。

有了网关之后,情况就好了很多了。当风控服务本身频繁变化的时候,我们只需要改动网关的代码就好。而服务器代码的升级可是远远要比客户端代码的升级容易太多了。

原文链接:
https://mp.weixin.qq.com/s?__biz=MzU3MTg3NDYwNg==&mid=2247487570&idx=1&sn=09618debb915121f13ca8f60e4

【数据中台】09(二) | 数据服务难道就是对外提供个API吗? 在上一讲中,我为你介绍了为什么必须要有数据服务,你可以看到,数据服务在数据建设中发挥着重要的作用。那有的人可能会好奇了,数据服务到底长什么样子呢? 是不是只对外提供一个 API? 真的有这么简单吗?接下来,我们就带着这些问题,学习今天的内容。而我希望你能在学完这部分内容之后,真正掌握数据服务的产品功能设计和系统架构设计。因为这会对你设计一个数据服务,或者选择一个商业化产品,有很大的帮助。我认为,数据服务应该具备八个功能,只有具备这些功能,才能解决我们在上一讲提到的问题。比如,数据接入方式多样,接入效率低;数 阅读详情

相关推荐

为什么微服务需要 API 网关?

讲解为什么微服务需要 API 网关 对网关我们并不陌生,网关的概念来源于计算机网络,表示不同网络之间的关口。在系统设计中,网关也是一个重要的角色,其中最典型的是各大公司的开放平台,开放平台类网关是企业内部系统对外的统一入口,承担了很多业务,比如内外部数据交互、数据安全、监控统计等功能。 在微服务架构中,API 网关的作用和开放平台等传统网关又有一些不同,下面一起来看一下微服务中 API 网关的相关知识。 为什么需要网关 在微服务架构中,一个大应用被拆分成多个小的服务,这些微服务自成体系,可以独立部署和提供对

1001

为什么微服务一定要有网关?

一听到“网关”这个词儿,你第一个想到的一定是 Nginx。没错,Nginx 作为网关领域的一哥,在大中小厂里的应用面那可不是一般的广泛。那究竟是 Nginx 过气了,还是 Spring Cloud Gateway 太牛了,以至于我们要引入一个新的网关组件呢?其实都不是,Gateway 并没有抢 Nginx 的地盘,此网关非彼网关,Nginx 和 Gateway 在微服务体系中的分工是不一样的。Gateway 作为更底层的微服务网关,通常是作为外部 Nginx 网关和内部微服务系统之间的桥梁。

李文慧 中国开源充电桩平台第一人;李文慧 国内知名开源工作者 全栈工程师 华为云最具价值专家 1545

【COMSOL】将一个面上数据导出CSV或txt格式的方法

在COMSOL中参数化扫描后,把一个面上或体里的数据按照CSV或TXT格式导出的方法。

dave496206的博客 2994

微服务架构中为何要有网关

一、什么是微服务网关 网关是微服务架构中的一个关键的角色,用来保护、增强和控制对于微服务的访问。 网关是一个处于应用程序或服务之前的系统,用来管理授权、访问控制和流量限制等,这样微服务就会被微服务网关保护起来,对所有的调用者透明。因此,隐藏在微服务网关后面的业务系统就可以更加专注于业务本身。同时,微服务网关还可以为服务提供和沉淀更多附加功能。 二、微服务网关作用 三、微服务网关需要包含的功能 微服务网关作为微服务后端服务的统一入口(Entry Point),它可以统筹管理后端服务,主要分为数据平面(Dat

敲代码的小小酥的博客 6336

BERTopic模型入门教程(附代码+参数调节)

BERTopic 是一种用于从文本数据中提取主题模型的新型方法。通过结合 BERT嵌入和传统的主题模型来生成语义丰富的主题。传统的主题模型(如LDA)主要依赖于词频矩阵,而 BERTopic 通过预训练语言模型生成高维语义嵌入来捕捉词语间的复杂关系,因此可以更好地处理上下文信息。BERTopic模型可以看作是创建其主题表示的一系列步骤。核心原理如下:就本质而言,BERTopic就是一个拼装框架,可以把每部分都替换成其他模型,只要完成任务即可。

m0_52069102的博客 1万+

昇腾910B多卡环境下hccl-test性能调优实战

本文详细介绍了昇腾910B多卡环境下hccl-test性能调优的实战经验,包括环境搭建、CANN工具链配置、性能测试与高级调优技巧。通过优化缓冲区、PCIe拓扑和中断亲和性设置,显著提升多卡通信效率,为AI训练提供稳定高效的计算支持。

weixin_29216049的博客 852

为什么我们的微服务中需要网关?

说起 Spring Cloud Gateway 的使用场景,我相信很多小伙伴都能够脱口而出认证二字,确实,在网关中完成认证操作,确实是 Gateway 的重要使用场景之一,然而并不是唯一的使用场景。在微服务中使用网关的好处可太多了,今天我们就来逐一分析一下。

m0_53157173的博客 919

告别AT串口线!用STM32F407的USB FS口直连EC800M进行物联网通信

本文介绍了一种创新的物联网通信方案,利用STM32F407的USB FS接口直连EC800M模块,替代传统的AT串口线连接。通过详细的硬件对比、STM32CubeMX配置和USB驱动调试步骤,展示了如何实现更高效的AT指令通信,同时降低硬件复杂度和功耗。

weixin_29189987的博客 707

为什么微服务需要API网关

为什么微服务需要API网关 (一)转自 拉勾教育 分布式技术原理与实战45讲 - 邴越 (二)为什么微服务需要API网关 对网关我们并不陌生,网关的概念来源于计算机网络,表示不同网络之间的关口。在系统设计中,网关也是一个重要的角色,其中最典型的是各大公司的开放平台,开放平台类网关是企业内部系统对外的统一入口,承担了很多业务,比如内外部数据交互、数据安全、监控统计等功能。 在微服务架构中,API 网关的作用和开放平台等传统网关又有一些不同,下面一起来看一下微服务中 API 网关的相关知识。 ****为什么需要

张俊杰 的博客 732

【软件使用】Calibre部分提参的实用技巧与常见问题解析

本文深入解析Calibre部分提参功能的实用技巧与常见问题,重点介绍hcell和xcell文件的配置方法、PEX命令的进阶使用技巧,以及时钟失真等典型问题的排查指南。通过精准控制寄生参数提取范围,显著提升复杂芯片设计的效率与准确性。

weixin_30836759的博客 119

什么是 SAP Build Process Automation?

SAP Build Process Automation 是一款综合性的低代码工具,允许企业用户快速开发和自动化端到端业务流程。它整合了工作流管理、任务自动化和人工智能技术,提供了一个易于使用的平台,帮助企业更好地应对现代商业挑战。通过该工具,用户无需具备深厚的编程技能即可创建复杂的业务流程。例如,用户可以使用直观的拖放式界面设计流程、设置触发条件、定义任务分配规则,并通过内置的分析功能对流程效率进行评估。流程建模与设计:提供图形化界面,帮助用户直观地设计业务流程。任务自动化。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1260

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

微服务架构中的API网关作为系统的入口,主要负责统一处理所有客户端请求。其主要作用包括协议转换、安全隔离和流量控制。API网关支持多种通信协议如HTTP与gRPC之间的转换,确保不同协议的服务能自由交互。同时,它还充当外部请求与内部服务之间的屏障,实施认证和授权,提升系统安全性。此外,网关能够限制访问频率,防止服务过载。选型时需考虑生态兼容性、性能、扩展性和安全性。良好的兼容性确保与现有技术栈无缝集成,性能则直接影响用户体验和系统稳定性。扩展性使网关能够灵活应对业务增长的需求,而安全性则保障合法用户访问

whisperzzza的博客 1716

【人工智能之深度学习】18. 金融风控实战:TCN时序卷积网络构建信用卡欺诈实时检测系统

摘要:信用卡欺诈交易识别是金融风控的核心环节,其面临欺诈样本占比低(仅0.1%)、实时响应要求高(毫秒级)等挑战。本文基于IEEE-CIS公开数据集,构建基于时序卷积网络(TCN)的欺诈检测系统,通过捕捉用户交易行为的时序模式识别异常。详细阐述全流程:从数据预处理(构造交易序列特征)、TCN模型设计(轻量级架构适配实时场景),到实时检测部署(异步处理确保低延迟)。实验显示,该系统精确率达63%、召回率89%,误杀率仅0.2%,推理延迟8ms,较XGBoost等传统模型性能显著提升。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1136

为什么微服务一定要有 API 网关?

微服务不能没有网关,就如同 Java 程序员不能没有 IDEA、Eclipse。为什么呢? 之所以网关对微服务这么重要,主要有以下几点原因: 1. 解决 API 放哪里的问题 要知道,采用微服务架构的系统本身是由很多的独立服务单元组合起来的。而客户端要调用系统,则必须通过系统提供的各种对外开放的 API 来实现。 问题来了,这些 API 要放在哪里呢?直接放在组成系统的服务单元上行不行? 比如,在一套电商系统上,关于订单相关的 API ,放在组成订单服务的服务单元上;风控服务的 API ,放在组成

xupeiyan的博客 210

代谢组数据分析(一):生成代谢组数据SummarizedExperiment对象

本文介绍了基于Zeybel 2022年发布的多组学数据集的分析脚本,该数据集包含微生物组、宿主人体学指标、临床学指标、血浆代谢组和免疫因子等多维度数据,涵盖56位患者的横截面数据和22位患者的纵向时间序列数据。脚本旨在生成适用于下游分析的数据对象,主要包括phyloseq和SummarizedExperiment两类。phyloseq对象用于整合微生物群落数据,支持多数据整合、可视化、丰富分析功能和便捷的数据处理;SummarizedExperiment对象则广泛应用于基因组学和转录组学研究,便于数据整合、

专注生信领域 2997

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

微服务-微服务为什么要用到 API 网关

微服务架构(通常简称为微服务)是指开发应用所用的一种架构形式。通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应。微服务是互联网业务发展的结果,互联网业务的飞速发展导致系统的架构也在不断地发生变化,总体来说,系统的架构大致经历了:单体应用架构—>SOA 架构—>微服务架构 的演变,具体发展历程和各自的优缺点如下表所示。因此,微服务是互联网发展的必然结果,很多传统公司的系统架构也在逐步微服务化。

Ch3nnn的博客 1844

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

为什么微服务一定要有API网关

今天我们来聊一聊有关微服务网关的话题吧。 微服务不能没有网关,就如同 Java 程序员不能没有IDEA、Eclipse。为什么呢? 之所以网关对微服务这么重要,主要有以下几点原因: 1.解决 API 放哪里的问题 要知道,采用微服务架构的系统本身是由很多的独立服务单元组合起来的。而客户端要调用系统,则必须通过系统提供的各种对外开放的 API 来实现。 问题来了,这些 API 要放在哪里呢?直接放在组成系统的服务单元上行不行? 比如,在一套电商系统上,关于订单相关的 API ,放在组成订单服务的服务单元上;风

java爱好者 441

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: Java Record可以完全取代Lombok吗?
下一篇: JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么
程序员职业指南
博客等级 码龄4年 2138粉丝 960原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值