排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
举报
首页
/
秒杀系统如何设计
秒杀系统如何设计
Alleria Windrunner
2021-10-05
298
上一篇我们分析了秒杀系统要面临的挑战,那在清楚了秒杀系统所面临的挑战,接下来我们就可以考虑如何应对了。所谓知己知彼,百战不殆。在设计系统之前,我们不妨先来看下,一次 HTTP 请求所经过的链路路径:
这是一个比较宏观的图谱,如果我们提供的是一个 HTTP 服务,那么每个客户端请求进来都要经过这些链路,而每个链路节点的作用又是什么呢?我们逐一看下。
DNS:负责域名解析,会将你的域名请求指定一个实际的 IP 来处理(事先配置好处理请求的 IP,DNS 按顺序指定),并且一般客户端浏览器会缓存这个 IP 一段时间,当下次再请求时就直接用这个 IP 来建立连接,当然如果指定的 IP 挂了,DNS 并不会自动剔除,下次依然会使用它。
Nginx:也就是上面的被 DNS 指定来处理请求的 IP,一般都会被用来当做反向代理和负载均衡器使用,因为它具有良好的吞吐性能,所以一般也可以用来做静态资源服务器。当 Nginx 接收到客户端请求后,根据负载均衡算法(默认是轮询)将请求分发给下游的 Web 服务。
Web 服务:这个就是我们都比较熟知的领域了,一般我们写业务接口的地方就是这了,还有我们的 H5 页面,也都可以放到这里,这里是我们做业务聚合的地方,提供页面需要的数据以及元素。
RPC 服务:一般提供支撑业务的基础服务,服务功能相对单一,可灵活、快速部署,复用性高。RPC 服务一般都是公司内部服务,仅供内部服务间调用,不对外开放,安全性高。
在了解了一次请求所经过的链路节点后,接下来我们再看下,在用户的一次抢购过程中,每次和系统的交互都要做什么事情。
结合之前的秒杀业务流程来看,商品详页部分和支付页部分,对于一般平台来说,都是通用板块,而从“点击抢购”开始到“下单成功待支付”,这一段是属于秒杀系统的业务范畴,在这里我们梳理下,有哪几件事情是需要秒杀系统来做的。
提供活动数据:提供参加秒杀活动的商品信息,主要用于商详页判断活动的倒计时、开始、结束等页面展示和抢购入口校验。
提供结算页:如果把秒杀做成一个单独业务模块,可跨平台(安卓、PC、iOS)嵌入,那么就需要提供一整套服务,包括 H5 页面,主要用于展示商品的抢购信息,包括商品名称、价格、抢购数量、地址、支付方式、虚拟资产等等。
提供结算页页面渲染所需数据:包括用户维度的地址、虚拟资产等数据,活动维度的名称、价格等数据。
提供下单:用户结算页下单,提供订单生成或是将下单数据透传给下游(如果平台有通用的订单接入接口)。
当然在这中间,还有个隐形的,但却是非常重要的核心能力,那就是做流量的精细化筛选,尽量确保传给下游接口的流量,都是优质请求。
以上,我们了解了 HTTP 请求所经过的链路,也总结了秒杀系统所需要提供的能力,那么接下来,我们就可以着手做秒杀系统的设计了。
对于系统的设计,有一些基本的原则,比如校验前置、分层过滤,再结合我们上面的链路路径图,效果如下所示:
一般我们会在 DNS 层做一些和网络相关的防攻击措施,公司的网络安全部门有统一的一些配置措施,这层我们无法写业务,但是可以拦截一些攻击请求。
接下来到 Nginx 层。Nginx 不仅可以作为反向代理和负载均衡器,也可以做大流量的 Web 服务器,同时也是一款非常优秀的静态资源服务器。如果把业务校验也放到这里来,就可以实现校验前置的原则了吗?
Nginx+Lua 说,没问题。这时候可能你会有顾虑,Nginx 担负了那么多任务,会被拖垮吗?不会,因为 Nginx 很强大,能力越大,责任越大。那么 Nginx 为什么比 Apache 服务更强大呢?你可以自己先想一想。
接下来就到了 Web 服务了。我们在这里做业务的聚合,提供结算页页面渲染所需要的数据以及下单数据透传,同时也负责流量的筛选与控制,保证下游系统的安全。
最后就是 RPC 服务。它提供基础服务,一般经过上面 3 层的严格把关,到这里的请求,量已经小很多了,我们写业务逻辑,在技术上也有更多的发挥空间。
数据库
文章转载自
Alleria Windrunner
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨