一种网购系统架构优装置及方法与流程

文档序号:18476506发布日期:2019-08-20 21:10阅读:184来源:国知局
一种网购系统架构优装置及方法与流程

本发明涉及一种网购系统架构优化装置及方法,属于互联网技术领域。



背景技术:

秒杀是电商常见的一种营销手段:将少量的商品,以极低的价格,在特定的时间点开始出售,网站通过这种营销手段,制造某种轰动效应,从而达到网站推广的目的,秒杀虽然对网站推广有很多好处,但是对网站技术却是极大的挑战:网站是为正常运营设计的,而秒杀活动带来的并发访问用户却是平时的数百倍甚至上千倍,网站如果为秒杀时的最大并发访问量去设计部署,就需要比正常运营多很多服务器,而这些服务器在大多数时候都是用不上的,对于网站运营商来说成本过高就比较浪费了,所以秒杀业务不能使用正常的网站业务流程,也不能和正常的网站交易业务公用一台服务器,必须设计部署专门的秒杀系统,进行专门应对,同时目前存在几个较为突出的问题:

1)瞬时大并发:一提到秒杀系统给人最深刻的印象是超大的瞬时并发,这时你可以联想到小米手机的抢购场景,在小米手机抢购的场景一般都会有10w+的用户同时访问一个商品页面去抢购手机,这就是一个典型的瞬时大并发,如果系统没有经过限流或者熔断处理,那么系统瞬间就会崩掉,就好像被ddos攻击一样;

2)超卖:秒杀除了大并发这样的难点,还有一个所有电商都会遇到的痛,那就是超卖,电商搞大促最怕什么?最怕的就是超卖,产生超卖了以后会影响到用户体验,会导致订单系统、库存系统、供应链等等,产生的问题是一系列的连锁反应,所以电商都不希望超卖发生,但是在大并发的场景最容易发生的就是超卖,不同线程读取到的当前库存数据可能下个毫秒就被其他线程修改了,如果没有一定的锁库存机制那么库存数据必然出错,都不用上万并发,几十并发就可以导致商品超卖;

3)性能:当遇到大并发和超卖问题后,必然会引出另一个问题,那就是性能问题,如何保证在大并发请求下,系统能够有好的性能,让用户能够有更好的体验,不然每个用户都等几十秒才能知道结果,那体验必然是很糟糕的。



技术实现要素:

为解决上述问题,本发明的目的在于提供一种网购系统架构优化装置及方法,包括网页生成模块,用于根据销售内容生成对应的商品购买页面;静态处理模块,用于将商品购买页面静态化;配置缓存模块,用于将静态化页面刷新到内容分发网络节点;网页管理模块,用于将商品购买页面部署在网页服务器上,并根据页面访问量实时调整部署服务器的容量;应用程序服务器,用于对产生的交易行为生成订单信息并进行限流以及熔断控制,同时监测交易流量;分布式缓存模块,用于实时扣减缓存中的商品库存和异步发送队列。

本发明解决其问题所采用的技术方案一方面是:一种网购系统架构优化装置,其特征在于,包括:网页生成模块,用于根据销售内容生成对应的商品购买页面;静态处理模块,用于将商品购买页面静态化;配置缓存模块,用于将静态化页面刷新到内容分发网络节点,对应的网络节点缓存静态页面资源,其中静态页面资源包括js、css和图片;网页管理模块,用于将商品购买页面部署在网页服务器上,并根据页面访问量实时调整部署服务器的容量;应用程序服务器,用于对产生的交易行为生成订单信息并进行限流以及熔断控制,同时监测交易流量,当交易流量大于阈值时,进行熔断处理并返回失败报文,其中阈值可自定义;分布式缓存模块,用于实时扣减缓存中的商品库存和异步发送队列,异步从队列中取出订单根据订单信息扣减库存系统数据库中的商品数量。

进一步的,还包括服务降级模块,用于对服务器提供的包括但不限于网站首页、购物车、订单查询以及大数据服务进行服务降级,其中服务降级包括服务的关闭、减少硬件资源分配以及暂停服务。

进一步的,所述应用程序服务器还包括数据库,用于存储商品信息,包括商品库存和商品类型。

进一步的,所述分布式缓存模块还包括:缓存单元,用于在缓存中执行商品库存的扣减并创建异步发送队列;异步处理单元,用于在异步发送队列中取出订单根据订单信息扣减库存系统数据库中的商品数量。

进一步的,还包括标记模块,用于检测各个账号的请求发送数量,当目标检测账号在一定时间段内发送的请求数量超过阈值时,将该账号进行标记同时拒绝发送的请求,其中一定时间段和阈值可自定义。

进一步的,还包括ip地址检测模块,用于根据ip地址检测请求发送频率,当目标ip地址在一定时间段内发送的请求数量超过阈值时,将该ip地址进行标记同时向对应的账户发送验证码,当账户返回的验证码正确时即认为是正常账户,否则标记非正常账户同时拒绝该账户发送请求,其中一定时间段和阈值可自定义。

进一步的,还包括账户筛选模块,用于根据大数据进行数据挖掘,提取异常账户特征,将符合异常账户特征的账户设为灰名单,设置灰名单账户的购买条件,其中异常账户特征包括号码连号、活跃度低于阈值、个人信息不完整以及订单取消和退款频率高于阈值,其中购买条件包括账号等级以及活跃度高于阈值。

本发明解决其问题所采用的技术方案另一方面是:一种网购系统架构优化方法,其特征在于,包括:s100、根据销售内容生成对应的商品购买页面并将商品购买页面静态化;s200、将静态化页面刷新到内容分发网络节点,对应的网络节点缓存静态页面资源,其中静态页面资源包括js、css和图片;s300、对产生的交易行为生成订单信息同时监测交易流量,当交易流量大于阈值时,进行熔断处理并返回失败报文,其中阈值可自定义;s400、根据订单信息实时扣减缓存中的商品库存和异步发送队列,再异步从队列中取出订单根据订单信息扣减库存系统数据库中的商品数量。

进一步的,还包括:s500、根据ip地址检测请求发送频率;s600、当目标ip地址在一定时间段内发送的请求数量超过阈值时,将该ip地址进行标记同时向对应的账户发送验证码;s700、当账户返回的验证码正确时即认为是正常账户,同时转到步骤s400,否则标记非正常账户同时拒绝该账户发送请求。

进一步的,还包括:s800、检测各个账号的请求发送数量;s900、当目标检测账号在一定时间段内发送的请求数量超过阈值时,将该账号进行标记同时拒绝发送的请求,否则转到步骤s400。

本发明的有益效果是:提高系统稳定性,根据访问量灵活配置服务器容量,降低运营成本,避免商品超卖的情况发生,让用户拥有更好的体验。

附图说明

图1是根据本发明优选实施例的装置结构示意图;

图2是根据本发明优选实施例的方法流程示意图;

图3是根据本发明优选实施例的架构框架示意图;

图4是根据本发明优选实施例的下单处理流程示意图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。

需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

参照图1,是根据本发明优选实施例的装置结构示意图:

包括:网页生成模块,用于根据销售内容生成对应的商品购买页面;静态处理模块,用于将商品购买页面静态化;配置缓存模块,用于将静态化页面刷新到内容分发网络节点,对应的网络节点缓存静态页面资源,其中静态页面资源包括js、css和图片;网页管理模块,用于将商品购买页面部署在网页服务器上,并根据页面访问量实时调整部署服务器的容量;应用程序服务器,用于对产生的交易行为生成订单信息并进行限流以及熔断控制,同时监测交易流量,当交易流量大于阈值时,进行熔断处理并返回失败报文,其中阈值可自定义;分布式缓存模块,用于实时扣减缓存中的商品库存和异步发送队列,异步从队列中取出订单根据订单信息扣减库存系统数据库中的商品数量。

还包括服务降级模块,用于对服务器提供的包括但不限于网站首页、购物车、订单查询以及大数据服务进行服务降级,其中服务降级包括服务的关闭、减少硬件资源分配以及暂停服务。

应用程序服务器还包括数据库,用于存储商品信息,包括商品库存和商品类型。

分布式缓存模块还包括:缓存单元,用于在缓存中执行商品库存的扣减并创建异步发送队列;异步处理单元,用于在异步发送队列中取出订单根据订单信息扣减库存系统数据库中的商品数量。

还包括标记模块,用于检测各个账号的请求发送数量,当目标检测账号在一定时间段内发送的请求数量超过阈值时,将该账号进行标记同时拒绝发送的请求,其中一定时间段和阈值可自定义。

还包括ip地址检测模块,用于根据ip地址检测请求发送频率,当目标ip地址在一定时间段内发送的请求数量超过阈值时,将该ip地址进行标记同时向对应的账户发送验证码,当账户返回的验证码正确时即认为是正常账户,否则标记非正常账户同时拒绝该账户发送请求,其中一定时间段和阈值可自定义。

还包括账户筛选模块,用于根据大数据进行数据挖掘,提取异常账户特征,将符合异常账户特征的账户设为灰名单,设置灰名单账户的购买条件,其中异常账户特征包括号码连号、活跃度低于阈值、个人信息不完整以及订单取消和退款频率高于阈值,其中购买条件包括账号等级以及活跃度高于阈值。

参照图2,是根据本发明优选实施例的方法流程示意图:

s100、根据销售内容生成对应的商品购买页面并将商品购买页面静态化;

s200、将静态化页面刷新到内容分发网络节点,对应的网络节点缓存静态页面资源,其中静态页面资源包括js、css和图片;

s300、对产生的交易行为生成订单信息同时监测交易流量,当交易流量大于阈值时,进行熔断处理并返回失败报文,其中阈值可自定义;

s400、根据订单信息实时扣减缓存中的商品库存和异步发送队列,再异步从队列中取出订单根据订单信息扣减库存系统数据库中的商品数量。

还包括:s500、根据ip地址检测请求发送频率;s600、当目标ip地址在一定时间段内发送的请求数量超过阈值时,将该ip地址进行标记同时向对应的账户发送验证码;s700、当账户返回的验证码正确时即认为是正常账户,同时转到步骤s400,否则标记非正常账户同时拒绝该账户发送请求。

还包括:s800、检测各个账号的请求发送数量;s900、当目标检测账号在一定时间段内发送的请求数量超过阈值时,将该账号进行标记同时拒绝发送的请求,否则转到步骤s400。

参照图3,是根据本发明优选实施例的架构框架示意图:

整个秒杀系统的架构核心理念是通过缓存、异步、限流来保证系统的高并发和高可用。下面从一笔秒杀交易的流程来描述下秒杀系统架构设计的要点:

1)对于大促时候的秒杀活动,一般运营会配置静态的活动页面,配置静态活动页面主要有两个目的一方面是为了便于在各种社交媒体分发,另一方面是因为秒杀活动页的流量是大促期间最大的,通过配置成静态页面可以将页面发布在公有云上动态的横向扩展;

2)将秒杀活动的静态页面提前刷新到cdn节点,通过cdn节点的页面缓存来缓解访问压力和公司网络带宽,cdn上缓存js、css和图片;

3)将活动h5页面部署在公有云的webserver上,使用公有云最大的好处就是能够根据活动的火爆程度动态扩容而且成本较低,同时将访问压力隔离在公司系统外部;

4)在提供真正商品秒杀业务功能的appserver上,需要进行交易限流、熔断控制,防止因为秒杀交易影响到其他正常服务的提供,我们在限流和熔断方面使用了hystrix,在核心交易的controller层通过hystrix进行交易并发限流控制,当交易流量超出我们设定的限流最大值时,会对新交易进行熔断处理固定返回静态失败报文。

5)服务降级处理,除了上面讲到的限流和熔断控制,我们还设定了降级开关,对于首页、购物车、订单查询、大数据等功能都会进行一定程度的服务降级,例如我们会对首页原先动态生成的大数据页面布局降级为所有人看到的是一样的页面、购物车也会降级为不在一级页面的tabbar上的购物车图标上显示商品数量、历史订单的查询也会提供时间周期较短的查询、大数据商品推荐也会提供一样的商品推荐,通过这样的降级处理能够很好的保证各个系统在大促期间能够正常的提供最基本的服务,保证用户能够正常下单完成付款。

6)上面介绍的都是如何保证能扛住高并发,下面介绍下整个方案中如何防止超卖现象的发生,我们日常的下单过程中防止超卖一般是通过在数据库上实施乐观锁来完成,使用乐观锁虽然比forupdate这种悲观锁方式性能要好很多,但是还是无法满足秒杀的上万并发需求,我们的方案其实也很简单实时库存的扣减在缓存中进行,异步扣减数据库中的库存,保证缓存中和数据库中库存的最终一致性。

在这个方案中使用的分布式缓存是redis,使用了codis集群方案稳定性和高可用方面还是比较有保证的,因为redis是单线程写,所以也不用担心线程安全的问题,redis自身就能够保证数据的强一致性,在下单的事务中包含了实时扣减缓存中的库存和异步发送队列,由队列处理器再异步从队列中取出订单根据订单信息扣减库存系统数据库中的商品数量。

参照图4是根据本发明优选实施例的下单处理流程示意图

秒杀系统核心在于层层过滤,逐渐递减瞬时访问压力,减少最终对数据库的冲击。通过图4就会发现压力最大的地方在mq排队服务。

mq排队服务,只要mq排队服务顶住,后面下订单与扣减库存的压力都是自己能控制的,根据数据库的压力,可以定制化创建订单消费者的数量,避免出现消费者数据量过多,导致数据库压力过大或者直接宕机。

库存服务专门为秒杀的商品提供库存管理,实现提前锁定库存,避免超卖的现象。同时,通过超时处理任务发现已抢到商品,但未付款的订单,并在规定付款时间后,处理这些订单,将恢复订单商品对应的库存量

5、秒杀防作弊

1)同一个账号,一次性发出多个请求

部分用户通过浏览器的插件或者其他工具,在秒杀开始的时间里,以自己的账号,一次发送上百甚至更多的请求。实际上,这样的用户破坏了秒杀和抢购的公平性。

应对方案:

同一账号请求记录时间戳标记位。(可以在redis里根据用户id记录一条数据,比如1秒后失效)

再次请求的时候判断标记位是否存在,如果存在就立即打回请求。

2)多个账号,一次性发送多个请求

例如微博中有转发抽奖的活动,如果我们使用几万个“僵尸号”去混进去转发,这样就可以大大提升我们中奖的概率。

如果发现某个ip请求频率很高

应对方案:

返回验证码,区分真实用户

3.)多个账号,不同ip发送不同请求

黑客操作多个肉鸡

应对方案:

活动开始前通过一些“数据挖掘”筛选过滤僵尸号,僵尸账号也还是有一些共同特征的,例如账号很可能属于同一个号码段甚至是连号的,活跃度不高,等级低,资料不全等等。根据这些特点,适当设置参与门槛,例如限制参与秒杀的账号等级。

4)火车票的抢购

高级的黄牛刷票时,在识别验证码的时候使用真实的人,中间搭建一个展示验证码图片的中转软件服务,真人浏览图片并填写下真实验证码,返回给中转软件。对于这种方式,验证码的保护限制作用被废除了,目前也没有很好的解决方案。

应对方案:

账号数据进行“数据挖掘”,这些黄牛账号也是有一些共同特征的,例如经常抢票和退票,节假日异常活跃等等。将它们分析出来,再做进一步处理和甄别。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1