您当前的位置: > 新闻资讯

临沂网站优化 Java Internet体系结构-企业级实战尖峰系统优化方案和应用思路

小朱博客 2021-03-24 0 人已围观

简介 那我们怎么优化秒杀业务的架构呢?好,后续讲讲怎么个“将请求尽量拦截在系统上游”法,以及怎么个“缓存”法,讲讲细节。当然,还有业务规则上的一些优化。来的,我之前分享过一个观点“一切脱离业务的架构设计都是耍流氓”架构的优化也要针对业务。到这里,企业级实战秒杀系统优化方案与应用思路就结束了,,不足之处还望大家多多包涵!简化编程,加快速度,代码风骚,在你完成编码后,应回头并且优化它。

一,秒杀业务分析

正常的电子商务流程

([1)查询商品; [2)创建订单;(3)扣除库存;(4)更新订单;(5)付款;(6)卖方]

秒杀业务的特征

([1)低成本价格; [2)大大提高;(3)瞬时售罄;(4)通常安排在货架上;(5)短时间且高瞬时并发性

第二,尖峰架构的原理

尝试拦截系统上游的请求

传统的峰值系统挂起的原因是请求使后端数据层不堪重负,数据读写锁冲突严重,并发的高响应速度慢,几乎所有请求都超时。尽管业务量很大,但是成功订单的有效业务量很小。 [实际上,火车票只有2,000张,有200瓦人来购买,基本上没有人能成功购买,有效率为0。]

多读少写,经常使用更多缓存

这是一个典型的应用场景,它读多写少[实际上,一列火车只有2,000张票,有200瓦人来购买火车,而多达2,000人成功下订单。其他人正在检查库存,写比率仅为0. 1%,读比率为9 9. 9%],非常适合使用缓存。

三个。穗状建筑设计

秒杀系统专为秒杀而设计。与一般的在线购物行为不同,参与秒杀活动的用户更关心如何快速刷新产品页面,并在秒杀启动时首先进入订单页面,而不是诸如产品详细信息之类的用户体验详细信息,因此页面设计尖峰系统应该尽可能简单。

1.产品页面上的购买按钮仅在秒杀活动开始时点亮。在销售秒杀产品之前和之后,该按钮为灰色,无法单击。

2.订单形式尽可能简单。购买数量只能是一个,不能修改。收货地址和付款方式均由用户的默认设置设置。没有默认设置或没有默认设置,并且可以在提交订单后进行修改。 仅将第一个提交的订单发送到网站的订单子系统,其余用户仅在提交订单后才能看到秒杀结束页面。

要建立这样的高峰系统,业务将分为两个阶段。第一阶段是从峰值开始之前的某个时间到峰值开始。此阶段可以称为准备阶段。用户在准备阶段等待峰值。第二阶段是从峰值开始,直到参与峰值的所有用户都获得峰值的结果。这称为尖峰阶段。

四个。为什么秒杀业务很难做到?

·即时通讯系统(例如qq或微博),每个人都读取自己的数据(朋友列表,群组列表,个人信息);

·微博系统,每个人读取您关注的人的数据,一个人读取多人的数据;

·在秒杀系统中,只有一个清单,每个人都将在集中时间读取和写入这些数据,而多人将读取一个数据。

例如:小米的每个星期二的秒杀记录可能只有10,000部手机,但瞬时传入流量可能是数千万。

另一个例子:12306抢票,票数有限,一个库存,瞬时流量非常大,而且它们都读取相同的库存。读写冲突和锁定非常严重。这是难以实现峰值业务的地方。那么,我们如何优化秒杀业务的结构?

优化方向

有两个优化方向(我今天将讨论这两点):

·尝试拦截系统上游的请求(不要让锁冲突落在数据库上)。传统的峰值系统挂起的原因是请求使后端数据层不堪重负。数据读写锁定冲突很严重,并发的高响应速度很慢,几乎所有请求都超时。尽管流量很大,但是成功完成订单的有效流量却很小。以12306为例,实际上一列火车只有2000张票,200w的人来购买,几乎没有人能成功购买,请求的有效率为0。

·充分利用缓存并在几秒钟内购买票证。这是具有更多读取的典型应用程序场景。大多数请求用于火车号查询,票证查询,订单下达和付款。实际上,火车只有2,000张票,有200瓦人来购买火车,最多有2,000人成功下订单。其他人正在检查库存。写入比率仅为0. 1%,读取比率为9 9. 9%,非常适合使用。缓存进行优化。好的,让我们讨论一下“尽可能在系统上游拦截请求”的方法和后续的“缓存”方法,并讨论详细信息。

五个。常见的尖峰架构

常见的站点架构基本上是这样的(绝对不要画出闪烁的架构图)

标签云