前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅说API网关与微服务框架(中)——爷青回!超级马里奥现身

浅说API网关与微服务框架(中)——爷青回!超级马里奥现身

作者头像
用户8289326
发布2022-09-08 15:35:55
2110
发布2022-09-08 15:35:55
举报
文章被收录于专栏:帅云霓的技术小屋

上期说到一个问题

当某个系统(如财务ERP系统负担)过重的时候,我们期望优先保障某些关键业务(如销售管理系统SMS,明天要投标,去ERP申请价格)。

在没有API网关的时候,SMS的应用层,本身是没有办法区分哪些请求来自关键业务,哪些请求来自非关键业务的,除非在程序代码中做修改——

这又增加了大量的开发验证工作量,并且每次变更都需要重新修改验证。程序媛们的发际线又面临着新的危机——

幸好,我们在企业IT系统中引入了API网关,可以将这种限流工作交给API网关来实现,运维同学们只需要在API网关上设置好限流策略,就可以保证关键业务的可用性(Availability)。

如上图所示,finance业务的性能只能扛住1000QPS。而关键业务请求一般不超过400QPS,非关键业务请求的压力有可能到2000QPS以上。为了防止非关键业务请求把finance业务打死,运维同学们可以对非关键业务请求做限流,让这些请求的性能限制到500QPS,给关键业务留下1000-500=500QPS的性能,防止着急投标的时候无法完成申请价格和测算利润等关键动作。

限流功能可以对业务系统提供基本的QoS保障,但功能过于刚性,只要超出了限流的QPS数,就会有一部分用户看到的是http 500或http 502页面。如果某个业务的关键性没有那么强,有没有办法让系统动态调整业务承载能力,实现容纳更多用户呢?

答案是肯定的。API网关可以检查对后端的业务请求是否成功。如果后端出现http 5xx这样的错误信息,说明后端业务忙不过来了,API网关会让它休养生息一会儿——这叫做熔断

如图,假设运维同学在API网关上设定的熔断策略为:

当HTTP 5xx响应超过5%时,对业务进行熔断,3秒钟后恢复。

在某个时刻,有较大的突发访问请求被finance业务的apached前端接收,但后端的tomcat负担过重,无法及时响应来自apached前端的请求。使得apached向API网关返回HTTP 5xx错误。API网关发现,来自finance业务的HTTP 5xx错误率上升到熔断阈值5%,执行熔断策略,对于所有指向finance业务的请求暂时返回HTTP 5xx,从而保护finance的tomcat后端不被彻底打死,得以休养生息。3秒钟的熔断时间过后,finance业务又可以重新营业了。

显然,熔断机制对业务的保护效果是显而易见的。但是,熔断本身是一种简单粗暴的保护,在业务熔断期间,所有用户见到的是这个业务不可用(如HTTP 5xx错误)。有没有颗粒度更细的保护方式呢?

答案是肯定的。

让我们穿越回童年的记忆:电视机偶尔能收到邻居家小霸王学(you)习(xi)机发射的无线信号,但由于房屋结构的遮挡和衰减,画面往往是黑白的……

方老师的青春回来了!

这实际上就是PAL彩色制式的一种服务降级机制:在信噪比恶劣的情况下,牺牲颜色来保障画质的还原。

那么,我们如果引入这种服务降级机制,也可以通过牺牲业务质量,在业务峰值期间让更多用户能够使用基本服务,而不是面对着HTTP 5xx的错误页面不知所措。

开发APP的同学可以利用API网关的性能监控功能,在APP中实现服务降级。API网关本身也可以提供服务降级策略,如直接返回固定数据,或将返回的视频降级为图片等。

当然,实际上API网关不仅限于提供限流、熔断、降级、性能监控、性能告警等QoS相关的功能,还可以提供统一的鉴权功能,保护信息的机密性(Confidentiality)和完整性(Integrity),而不需要每个业务自己去重新实现一遍这些控制逻辑。

那么,微服务与API网关的关系是什么样的呢?请看下集。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
应用性能监控
应用性能监控(Application Performance Management,APM)是一款应用性能管理平台,基于实时多语言应用探针全量采集技术,为您提供分布式性能分析和故障自检能力。APM 协助您在复杂的业务系统里快速定位性能问题,降低 MTTR(平均故障恢复时间),实时了解并追踪应用性能,提升用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档