对微信《Scalable Overload Control for Large-scale Microservice Architecture》论文的解读

本文深入解读微信团队的论文《Scalable Overload Control for Large-scale Microservice Architecture》,探讨如何应对微服务架构下的服务过载。文中提出两种准入控制策略:面向业务的准入控制和面向用户的准入控制,以提高系统效率和用户体验。通过设定业务和用户优先级,避免随机拒绝请求导致的资源浪费,实现更智能的过载处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几年微服务大行其道,随之而来也产生了很多新的话题:

  • 服务注册和发现(常见解决方案如Consul, ZK, etcd)
  • 服务过载处理: 熔断和降级 (如Hystrix)

微信《Scalable Overload Control for Large-scale Microservice Architecture》这篇论文就是专门针对服务过载后的处理, 提出了他们的解决方案。

在服务过载时, 一个常见的解决方案是限流。常见的限流方案是比较简单粗暴的: 如果一个服务无法处理所有的请求, 那么就随机抛弃一部分请求。

微信团队认为这种粗暴的处理方式并不能缓解整个系统的负载, 并且浪费了很多计算资源,比如以下场景:

假设api层处理一个客户端请求时,依赖N个下游服务, 而这N个下游服务都处于过载状态, 以p的概率随机拒绝服务, 那么这个客户端请求最后被成功处理的概率就是(1-p)^N。 如果P和N很大, 那么这个请求很可能没有被成功处理,但是却浪费了很多计算资源(比如N-1个服务都处理了这个请求,但是1个服务拒绝了)。

微信是怎么解决这个问题的呢? 主要是以下两点:

  1. 面向业务的准入控制
  2. 面向用户的准入控制

下面就来详细说说这两点分别是什么意思。

面向业务的准入控制

微信根据业务重要性和用户体验,对一些常见的业务定义了优先级:

比如两个同样依赖红包服务的业务:发红包和查看红包历史记录, 他们的业务优先级是不一样的, 发红包明显要高于查看历史记录。 因此,微信在入口服务层通过预定义的hash表ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值