阿里P8级架构师浅析秒杀架构设计实践思路

一、前言

一提到秒杀,都会想到高性能、高并发、高可用、大流量…。在电商体系中,交易系统占据了环节中的半壁江山。比如里面特别迷人的秒杀系统,那秒杀涉及到什么架构设计?会涉及到什么业务?

泥瓦匠自言自语:秒杀这个东西,一篇文章也说不完。我这一篇起个头,实践系列还在后面,敬请期待。

二、秒杀业务难点

秒杀业务难点,总结为两点

  • 并发多读
  • 并发少写

这不同于一些场景,优惠营销系统,只会是一个用户读多个数据,但也会大流量的读操作。但没有啥写操作。

并发多读,多用户并发读一个数据。比如华为手机只有一个库存,活动秒杀。那可能几千万的人一起抢这个库存数据。还不包含很多肉机在狂刷。很多用户都在读一个商品 + 这个商品库存的数据。

并发少写,少用户并发写一个数据。比如一起抢,如何限流,因为只有少量写请求操作数据层?只有一个人才能抢到,如何解决超卖问题?

例如,12306 抢票,抢红包啥,瞬间流量更大。那这种系统更加难设计

三、秒杀架构理论

想起了架构一些定律:墨菲定律、康威定律等。任何的设计实践肯定来自某些理论和定律。

秒杀的一些架构理论(我认为的):

  • 高并发原则

    • 高可用原则
    • 一致性设计

a、高并发原则

1、服务化

服务化老生常谈,选型也有 Spring Cloud 、阿里开源的 Dubbo 等一整套服务化解决方案。考虑服务隔离、限流、超时、重试、补偿等

2、缓存

层层考虑。常见的考虑三层:用户层、应用层、数据层等。

用户层:DNS 缓存、APP 缓存(图片等)
应用层:静态化页面、MQ、Redis 等
数据层:NoSQL、MySQL 自带 Query Cache

思考:缓存不是万能的,肯定是优化各种请求数据、请求节点、请求依赖等

3、拆分

分久必合、合久必分。各种拆分:

  • 系统维度:根据业务模块。如电商系统中的交易系统、商品系统等
  • 功能维度:根据功能模块。如交易系统中的下单系统、退款系统等
  • 读写维度:根据读写比例。如商品系统中的商品写服务和商品读服务等
  • 模块维度:根据代码特征。如分库分表、项目 moudle、代码分三层架构等

思考:就想 MyCat 等分库分表组件,天然支持了读写分离…

file
4、并发化

串行换并行。具体实践,具体场景分析然后优化。

b、高可用原则

1、降级

用于服务依赖隔离、fallback降级,防止雪崩效应。具体选型:hystrix 等

另外,可以做配置化,开关服务降级。核心功能保证,次功能优化为异步或屏蔽。例如:双十一的时候,会关闭某些评价等功能。

2、限流

防止请求***或者超出系统峰值。具体可以参考一些限流算法 Guava 的 RateLimiter。还写具体手段:恶意流量访问到 Cache 等

3、可回滚

发布版本失败或者有线上问题故障,第一时间会退到上一个稳定版本。思考:那一般运维团队,会有整套的灰度发布、回滚机制。

四、业务设计 & 总结

秒杀业务涉及也得考虑以下几点(重要的):

  • 幂等
  • 防重
  • 数据一致性
  • 数据动静分离
  • 请求削峰
  • 备份

这篇思路整理,起个头。也就是大致几个方向:

  1. 请求数据尽量少,网络 IO 越少越好。包括请求数据 + 返回数据;压缩;数据服务 RT 越少越好,数据连接次数。
  2. 访问路径尽量越短,节点越少,消耗越少
  3. 避免单点故障,要有备份

写在最后:

既然看到这里了,觉得笔者写的还不错的就点个赞,加个关注呗!点关注,不迷路,持续更新!!!

原文地址:https://blog.51cto.com/13754022/2364350

时间: 2024-11-01 21:08:05

阿里P8级架构师浅析秒杀架构设计实践思路的相关文章

读<阿里亿级日活网关通道架构演进>有感

读<阿里亿级日活网关通道架构演进>时对优化方法有些概念不理解,特意搜索了一下,拓展自己的思路. 其中的优化: 优化方法中1,2比较常见,3,4我知道的比较少,很感兴趣.就继续追踪下去: 于是去网上搜索了ecdh和session-ticket及slight-ssl,其中slight-ssl是阿里自建的一套的技术. ecdh:ECC算法和DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH.交换双方可以在不共享任何秘密的情况下协商出一个密钥. session-ticket:在会话ticket复

阿里P7架构师:通往架构师路上的经验总结

困扰架构师日常问题 架构师应不应该写代码为什么别人的系统总是那么烂成为架构师最困难的门槛是什么?如何更高效的学习?面对目前流行的技术不知如何下手?一家公司待久了,过得很安逸,但跳槽时面试碰壁?觉得现在的技术基础感觉到很扎实,但就是自己的技术提升不上?觉得自己很牛B,一般需求都能搞定,但是所学的知识点没有系统化,很难在技术领域继续突破?现在觉得自己技术还可以,但就是薪资涨不上去? 以上这几点,做为开发人员的你们,有遇到过么?有为自己想过么?有细心仔细的去解决过这些问题么?有深刻的想过么?虽然这几个

向架构师进军---&gt;系统架构设计基础知识

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在讲解系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师和架构设计等相关的概念以及关系.这是系统架构设计的基础,只有具备了此方面的知识之后,我们才能进一步了解架构师在软件开发过程中扮演的角色,架构师如何编写架构文档来满足不同利益相关者的需求等相关内容. 现在我们通过定义的概念来了解架构设计中的一些相关术语. 架构:架构是体现在它的组件中的一个系统的基本组织.它们彼

Android架构师之路-架构师的决策

android架构师之路-架构师的决策 内涵+造型:可能大部分人对这个内涵和造型不是很理解,在这里我可以给大家举个生动的例子:相信很多人都有自己的汽车, 我们总结汽车有哪些属性和功能,这些都是内涵,大自然中的每个对象都有自己的内涵(人有手有脚,还可以跑),然后我们 将这些内涵放入指定的造型中,类似模版,比如java语言如果定义一个class的时候,必须在作用域(大括号内部)指定属性和 函数,这个class的定义规范就是一个造型,然后我们将汽车这个内涵按照class的规范定义一个汽车class,那

架构师之路-&gt;架构师思维的培养

公司的CMS(综合赋码管理系统)是WINFORM的CS架构.这套系统的架构师换了3届,到现在已经几年没有架构师了.本来入职时,岗位目标就是这个“自动化架构师”. 后来和领导达成共识先争取成为储备架构师,因为架构首先是为业务服务的,而工控行业有许多特别的地方,不是普通的软件技术堆叠就能做出优秀的工控软件的.原来以为已经有十多年经验了,CS没有啥搞头了.实际上最近近半年的学习,发现真的是需要活到老学到老:不要轻易以为小领域就容易成为专家,其实是经常遇到瓶颈的.拿自己来说十几年做了无数项目,未必每次技

资深首席架构师眼中的架构应该是怎样的?

“架构的视角每个人都不一样,这位在eBay.携程.唯品会等平台型互联网公司都工作过的老司机就以平台架构视角和大家分享架构心得体会.一家之言,欢迎讨论. 本文首发于InfoQ垂直公众号「聊聊架构」,ID:archtime. 我对架构定义的理解 大概在7~8年前,我曾经有一个美国对口的架构师导师,他对我讲架构其实是发现利益相关者(stakeholder),然后解决他们的关注点(concerns),后来我读到一本书<软件系统架构:使用视点和视角与利益相关者合作>,里面提到的理念也是这样说:系统架构的

架构师如何才能够设计一个安全的架构

架构师不可能做到全知全能,但是仍然担负着成功交付可用的解决方案的任务.满足安全需求常常是其中不可或缺的一环,而且这一点常常没有明确指出.下面我们从整体上讨论架构的安全性,比如如何撰写安全的代码.部署中的安全.架构层的物理隔离.加密.证书的使用等等方面.推荐学习相关系统架构教程. 用户或者SQL的攻击注入时,怎么样做到安全? 很多英国的公司从安全的角度讲,做得很烂,因为团队不知道安全到底意味着什么.可能在网上随便问一些人到底该怎样做. 作为架构师要分析需求的话,并不是说做大型的前端设计,而是做一些

图解:在资深架构师眼中的架构应该是怎样的?

我对架构定义的理解 大概在7~8年前,我曾经有一个美国对口的架构师导师,他对我讲架构其实是发现利益相关者(stakeholder),然后解决他们的关注点(concerns),后来我读到一本书<软件系统架构:使用视点和视角与利益相关者合作>,里面提到的理念也是这样说:系统架构的目标是解决利益相关者的关注点. 这是从那本书里头的一张截图,我之前公司分享架构定义常常用这张图,架构是这样定义的: 每个系统都有一个架构 架构由架构元素以及相互之间的关系构成 系统是为了满足利益相关者(stakeholde

Android架构师之路-架构到代码的演练

从EIT造型-->code 架构师的工作: 主要任务:架构师(强龙)遵循EIT造型,分出E .I .T三个要素 强龙掌控:--成产面,强龙掌控I,外包就不会失控 --系统面,E为控制点,通过I来驱动T. 套用商业用词:框架和插件,通过不同的术语表达同样的意思. E是控制点,通过I来驱动T E+I = 框架(Framework) T = 插件(Plugin) 分工模式: 架构师做EIT设计,强龙做框架,地头蛇配插件. 区分插件和配件: