亿级流量架构理论+秒杀实战系列(三)

简介: 亿级流量架构理论+秒杀实战系列(三)

亿级用户的请求分层过滤模型

请求处理模型

直筒型

直筒型请求处理模型,指的是用户请求 1:1 的洞穿到db层,如下图所示。在比较简单的业务中,才会采用这个模型。

传统的低并发、低性能、低可用项目。

直筒型请求处理模型的适用场景:

企业级应用。

特点:

1. 用户规模较小

2. 请求峰值和平均值相差不大

3. 请求峰值不会超过数据层的处理能力

漏斗型

漏斗型业务,指的是,用户的请求,从客户端到 db层,层层递减,递减的程度视业务而定。例如当 10w 人去抢100个物品时,db层的请求在个位数量级 1000以内,这就是比较理想的模型。

693e423dc198cf1cf14d15f9d94af655.png

漏斗型请求处理模型的适用场景:

互联网应用(如秒杀)

特点:

1. 用户规模大

2. 请求峰值和平均值相差巨大

3. 请求峰值远远超出最后一层(数据层)的处理能力

漏斗模型中的请求分层过滤

漏斗型请求处理模型的核心策略,对请求进行分层过滤。

而针对漏斗型请求处理模型(如秒杀场景)一 种核心策略,就是对请求进行分层过滤,从而过滤掉一些无效的请求。

a4fbdae6d5828ac70368fca226ad6086.png

案例:秒杀系统的分层过滤

比如,在秒杀系统中,请求分别经过 CDN、Nginx(商品详情)、微服务(如seckill)和数据库这几层,那么:

1 大部分数据和流量在用户浏览器或者 CDN上获取,这一层可以拦截大部分静态资源的读取;

2、经过第二层 Nginx(商品详情)时,尽量得走 Nginx Cache,过滤一些可以直接访问Nginx缓存的 请求;经过第二层 Nginx(商品详情)时,也可以进行流控,还可以进行黑名单过滤,拦截掉一些无效的流量;

3、再到服务层,进入微服务网关时,可以做用户的授权检验,对系统做好保护和限流,这样数据量和请求就进一步减少;

4、业务层,还可以进行数据的有效性、一致性过滤,这里又减少了一些流量。这样就像漏斗一样,尽量把数据量和请求量一层一层地过滤和减少了。

分层过滤的核心思想是:在不同的层次尽可能地过滤掉无效请求,让“漏斗”最末端的才是有效 请求。而要达到这种效果,我们就必须对数据做分层的校验。

写入操作的流量削峰方案(降级方案)

削峰从本质上来说,就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从【最后落地到数据 库的请求数要尽量少】的原则。

同步的直接调用转换成异步的间接推送

要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直接调用转换成 异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。

消息队列中间件主要解决应用耦合、异步消息、流量削峰等问题。常用的消息队列系统有ActiveMQ、 RabbitMQ、ZeroMQ、Kafka、Me'taMQ和RocketMQ等。

在这里,消息队列就像是水库一样,拦截上游的洪水,削减进下游河道的洪峰流量,从而达到减免洪水灾害的目的。

分层限流:防止系统雪崩的无奈策略

分层限流:接入层、服务层 限流,根据各层的能力,对系统进行保护
相关文章
|
1天前
|
运维 持续交付 API
深入理解并实践微服务架构:从理论到实战
深入理解并实践微服务架构:从理论到实战
10 3
|
2天前
|
存储 缓存 负载均衡
亿级流量架构理论+秒杀实战系列(二)
亿级流量架构理论+秒杀实战系列(二)
|
22天前
|
运维 监控 持续交付
深入浅出:微服务架构的设计与实战
微服务,一个在软件开发领域如雷贯耳的名词,它代表着一种现代软件架构的风格。本文将通过浅显易懂的语言,带领读者从零开始了解微服务的概念、设计原则及其在实际项目中的运用。我们将一起探讨如何将一个庞大的单体应用拆分为灵活、独立、可扩展的微服务,并分享一些实践中的经验和技巧。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
43 3
|
2天前
|
SQL 缓存 运维
亿级流量架构理论+秒杀实战系列(一)
亿级流量架构理论+秒杀实战系列(一)
|
1月前
|
弹性计算 监控 数据挖掘
事件驱动架构的优势与应用:深度解析与实战应用
【8月更文挑战第17天】事件驱动架构以其松耦合、可扩展性、异步处理、实时性和高可靠性等优势,在实时数据处理、复杂业务流程、弹性伸缩和实时通信等多个领域展现出巨大的应用潜力。通过合理应用事件驱动架构,可以构建灵活、可扩展和可维护的系统架构,满足不断变化的业务需求和技术挑战。对于开发者而言,深入理解事件驱动架构的核心概念和优势,将有助于更好地设计和实现高质量的软件系统。
|
1月前
|
XML 存储 Android开发
Android实战经验之Kotlin中快速实现MVI架构
本文介绍MVI(Model-View-Intent)架构模式,强调单向数据流与不可变状态管理,提升Android应用的可维护性和可测试性。MVI分为Model(存储数据)、View(展示UI)、Intent(用户动作)、State(UI状态)与ViewModel(处理逻辑)。通过Kotlin示例展示了MVI的实现过程,包括定义Model、State、Intent及创建ViewModel,并在View中观察状态更新UI。
106 12
|
26天前
|
前端开发 开发者 C#
WPF开发者必读:MVVM模式实战,轻松实现现代桌面应用架构,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离应用程序的逻辑和界面,提高了代码的可维护性和可扩展性。本文介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定和逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种方式,开发者可以构建更加高效和可扩展的桌面应用程序。
53 0
|
1月前
|
资源调度 分布式计算 监控
【揭秘Hadoop YARN背后的奥秘!】从零开始,带你深入了解YARN资源管理框架的核心架构与实战应用!
【8月更文挑战第24天】Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理器,为Hadoop集群上的应用提供统一的资源管理和调度框架。YARN通过ResourceManager、NodeManager和ApplicationMaster三大核心组件实现高效集群资源利用及多框架支持。本文剖析YARN架构及组件工作原理,并通过示例代码展示如何运行简单的MapReduce任务,帮助读者深入了解YARN机制及其在大数据处理中的应用价值。
47 0
|
4天前
|
JSON 监控 安全
探索微服务架构中的API网关模式
【9月更文挑战第22天】在微服务架构的海洋中,API网关如同一位智慧的守门人,不仅管理着服务的进出,还维护着整个系统的秩序。本文将带你一探究竟,看看这位守门人是如何工作的,以及它为何成为现代云原生应用不可或缺的一部分。从流量控制到安全防护,再到服务聚合,我们将一起解锁API网关的秘密。
|
2天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2