系统实现方案设计.docx
《系统实现方案设计.docx》由会员分享,可在线阅读,更多相关《系统实现方案设计.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、系统实现方案设计系统实现方案设计设计要确定设计方案,首先要清楚设计的目的和所要到达的效果。下面我给大家带来系统实现方案设计,欢迎大家阅读。背景介绍2017年1月28日,正月初一,微信公布了用户在除夕当天收发微信红包的数量142亿个,而其收发峰值也已到达76万每秒。百亿级别的红包,怎样保障并发性能与资金安全?这给微信带来了超级挑战。面对挑战,微信红包在分析了业界“秒杀系统解决方案的基础上,采用了SET化、请求排队串行化、双维度分库表等设计,构成了独特的高并发、资金安全系统解决方案。实践证实,该方案表现稳定,且实现了除夕夜系统零故障运行。本文将为读者介绍百亿级别红包背后的系统高并发设计方案,包括微
2、信红包的两大业务特点、微信红包系统的技术难点、解决高并发问题通常使用的方案,以及微信红包系统的高并发解决方案。微信红包的两大业务特点微信红包尤其是发在微信群里的红包,即群红包业务形态上很类似网上的普通商品“秒杀活动。用户在微信群里发一个红包,等同于是普通商品“秒杀活动的商品上架;微信群里的所有用户抢红包的动作,等同于“秒杀活动中的查询库存;用户抢到红包后拆红包的动作,则对应“秒杀活动中用户的“秒杀动作。不过除了上面的一样点之外,微信红包在业务形态上与普通商品“秒杀活动相比,还具备本身的特点:首先,微信红包业务比普通商品“秒杀有更海量的并发要求。微信红包用户在微信群里发一个红包,等同于在网上发布
3、一次商品“秒杀活动。假设同一时间有10万个群里的用户同时在发红包,那就相当于同一时间有10万个“秒杀活动发布出去。10万个微信群里的用户同时抢红包,将产生海量的并发请求。其次,微信红包业务要求更严格的安全级别。微信红包业务本质上是资金交易。微信红包是微信支付的一个商户,提供资金流转服务。用户发红包时,相当于在微信红包这个商户上使用微信支付购买一笔“钱,并且收货地址是微信群。当用户支付成功后,红包“发货到微信群里,群里的用户拆开红包后,微信红包提供了将“钱转入折红包用户微信零钱的服务。资金交易业务比普通商品“秒杀活动有更高的安全级别要求。普通的商品“秒杀商品由商户提供,库存是商户预设的,“秒杀时
4、能够允许存在“超卖即实际被抢的商品数量比计划的库存多、“少卖即实际被抢的商户数量比计划的库存少的情况。但是对于微信红包,用户发100元的红包绝对不能够被拆出101元;用户发100元只被领取99元时,剩下的1元在24小时过期后要准确地退还给发红包用户,不能多也不能少。以上是微信红包业务模型上的两大特点。微信红包系统的技术难点在介绍微信红包系统的技术难点之前,先介绍下简单的、典型的商品“秒杀系统的架构设计,如下列图所示。该系统由接入层、逻辑服务层、存储层与缓存构成。Proxy处理请求接入,Server承载主要的业务逻辑,Cache用于缓存库存数量、DB则用于数据持久化。一个“秒杀活动,对应DB中的
5、一条库存记录。当用户进行商品“秒杀时,系统的主要逻辑在于DB中库存的操作上。一般来讲,对DB的操作流程有下面三步:锁库存插入“秒杀记录更新库存其中,锁库存是为了避免并发请求时出现“超卖情况。同时要求这三步操作需要在一个事务中完成所谓的事务,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。“秒杀系统的设计难点就在这个事务操作上。商品库存在DB中记为一行,大量用户同时“秒杀同一商品时,第一个到达DB的请求锁住了这行库存记录。在第一个事务完成提交之前这个锁一直被第一个请求占用,后面的所有请求需要排队等待。同时介入“秒杀的用户越多,并发进DB的请求越多,请求排队越严重。因而
6、,并发请求抢锁,是典型的商品“秒杀系统的设计难点。微信红包业务相比普通商品“秒杀活动,具有海量并发、高安全级别要求的特点。在微信红包系统的设计上,除了并发请求抢锁之外,还有下面两个突出难点:首先,事务级操作量级大。上文介绍微信红包业务特点时提到,普遍情况下同时会有数以万计的微信群在发红包。这个业务特点映射到微信红包系统设计上,就是有数以万计的“并发请求抢锁同时在进行。这使得DB的压力比普通单个商品“库存被锁要大很多倍。其次,事务性要求严格。微信红包系统本质上是一个资金交易系统,相比普通商品“秒杀系统有更高的事务级别要求。解决高并发问题常用方案普通商品“秒杀活动系统,解决高并发问题的方案,大体有
7、下面几种:方案一,使用内存操作替代实时的DB事务操作。如图2所示,将“实时扣库存的行为上移到内存Cache中操作,内存Cache操作成功直接给Server返回成功,然后异步落DB持久化。这个方案的优点是用内存操作替代磁盘操作,提高了并发性能。但是缺点也很明显,在内存操作成功但DB持久化失败,或者内存Cache故障的情况下,DB持久化会丢数据,不合适微信红包这种资金交易系统。方案二,使用乐观锁替代悲观锁。所谓悲观锁,是关系数据库管理系统里的一种并发控制的方法。它能够阻止一个事务以影响其他用户的方式来修改数据。假如一个事务执行的操作对某行数据应用了锁,那只要当这个事务把锁释放,其他事务才能够执行与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 实现 方案设计
限制150内