您的位置:首页 > 其它

基于Dubbo框架的秒杀系统设计与实现-1

2017-12-06 22:26 645 查看

摘    要

互联网电商企业常见的吸引客户流量一种手段是“秒杀”活动,针对互联网电商“秒杀”系统中出现的瞬间高并发访问题,设计并且实现一个易于伸缩、高可用、高性能的web“秒杀”系统的解决方案。根据“秒杀”活动特点,从网站系统架构入手,从页面优化、CDN(内容分发网络)、负载均衡、接口缓存设计与优化、异步响应等方面设计了一套相应的解决方案。基于文章内容的解决方案可以有效的解决高并发“秒杀”系统的高并发难题,并且达到了易伸缩、高可用、高性能的设计目标[1]。

本文通过业务需求分析和相关方案技术的研究,使用Spring框架集成各个功能模块;分布式服务采用Dubbo服务框架进行服务调度;提高访问速度避免关系数据库的瓶颈,使用Redis内存数据库提高性能;为了提高系统的峰值处理等功能本文使用了分布式消息队列RocketMQ提高系统峰值处理能力。

通过Dubbo分布式框架自带的服务治理、并发控制、连接控制、去中心化等功能实现整体秒杀系统的集成;当系统服务器无法支撑业务时,使用Dubbo框架增加服务节点非常方便,使得整体系统可以快速拓展收缩。通过Spring轻量级框架实现各个系统节点的功能整合,可以使各个功能模块低耦合易拓展。使用Redis避免了直接读取传统数据库造成的系统瓶颈,从而提高系统整体性能。使用消息队列,可以起到削峰填谷的作用,当“秒杀”系统顺时大量的请求,对系统造成压力时,消息队列可以异步的将这些请求“消化”掉,避免了系统的崩溃[2]。

本系统里,提供一套完整的秒杀影票系统的解决方案。本系统主要包括:1.秒杀活动查询;2.新建秒杀活动;3.秒杀影票;4.秒杀完成功能。在完成需求的同时,系统会确保及时响应用户请求以及用户的数据的安全性。经过系统测试,秒杀接口在普通单台PC机下每秒能处理800个以上的请求。

关键词:高并发,负载均衡,秒杀


绪论

根据论文题目和内容,进行了电商系统背景的调研,并且阐述了本论文意义,对研究内容进行了综合介绍,同时分析了秒杀系统的特性,提出了秒杀系统所面临的挑战现实意义,并据此确定本文的主要研究内容。最后给出本论文的整体的组织结构。

1.1         论文选题的背景与意义

跟随着现代互联网技术的蓬勃发展,数据内容的传递速度渐渐突破了时间、地域性、文化的局限;地球村、全球化、互联网化这些不再是一种预测,它已经成为一种不可避免的世界趋势。互联网的快速发展网络用户的指数增长,使得众多的公司厂家和个人纷纷将业务投向互联网上;由以前的借助传统贸易手段的不成熟专向了互联网的交易到能够在电脑甚至手机上完成提供货源、销售、生产等全部业务流程的互联网化电子化;由封闭的内网金融系统到开放式的互联网银行、在线理财、股票交易,互联网电子商务也快速蓬勃的发展起来了。各种新技术新方案的出现与应用,共同带来了前所未有的变革和升级。现在我们处于新一轮的技术革命中,从工业化向互联网化的转变过程当中。互联网的出现与蓬勃发展是的在线电子商务的逐渐被大家接受和使用,这不仅改变了我们对事务的理解方式,还切实的改变了每个人的生活习惯,从出门要带纸币,到只用带卡,再到现在的出门只需要带手机就可以的飞跃。互联网电商正在切实的影响者每个人的思维方式、工作、生活方式,对人们产生了根本性的影响[3]。

网络化互联网化正在切实的改变人们的生活。互联网电商的快速蓬勃发展正在改变人们的生活消费方式。大家的生活消费方式的改变与快速增长的用户互联网消费需求同时也滋养了许多的互联网电商公司。

互联网电商企业会采用各种各样的营销手段来吸引用户流量,在众多方式当中一种常见的方式就是“秒杀”活动。所谓“秒杀”活动,就是互联网商家通过系统发布一些超低价格的产品、优惠券等商品,互联网用户可以在特定时间网上抢购的一种销售方式。通俗一点说就是互联网商家为冲销量等目的组织的网上限时限量的抢购活动。由于商品性价比非常高,或者市面上非常少,通常活动一开始就会被抢购一空,甚至有的时候只用几分钟商品就被秒光。近些年来,在亚马逊、淘宝、京东、当当等大型电商网站中,“秒杀”活动的发展可谓迅猛。国内2015天猫“双11”交易额破571亿元,"双11"京东10小时下单量破千万;国外也有类似的购物狂欢节“黑色星期五”网上销售额在24亿美元,“网络星期一”成交额为26.5亿美元[4]。

在不断刷新成交金额的同时也面临问题: 2015年聚美优品“零元购”促销网页瘫痪,2013年航空公司秒杀活动官网一度瘫痪,北京奥运会期间售票系统的瘫痪,2013京东买家“秒杀”订单被取消。

1.2         国内外研究现状及发展动态

在国外,秒杀活动最常见的是亚马逊的Z秒杀功能,在国内就是淘宝、京东、美团、小米等电商网站经常出现。

秒杀虽然对商家的网络店面销售有很多好处,也能给使用的用户带来利益( 虽然通常是极少数的几个人),但是对网站本身却是极大的技术挑战:通常网站是为正常运营需求设计的,而秒杀活动带来的系统并发访问用户却是平时系统的数百倍甚至上千倍。系统如果专为“秒杀”时的最高并发访问量进行设计和部署,就需要比日常运营多得多的硬件服务器,而这些服务器在非“秒杀”时段是用不着的,造成的浪费惊人。所以网站的“秒杀”业务不能使用正常的系统业务流程设计,也不能和正常的系统交易业务共用服务器,因为有可能会导致其他模块的不可用;所以必须设计部署专门的秒杀系统,进行针对性的业务系统设计。北京奥运会期间,售票系统瘫痪是一个典型情况,奥运售票中心主任声称,网站设计每小时承受一百万次请求,实际达到八百万次请求,实际请求远高出设计的处理能力,导致系统整体瘫痪[5]。

系统的并发请求数是指不同系统用户在同一时间发出请求到相同的系统服务器的请求数量。当网站的并发用户量增加时候,不同用户的响应时间通常也增加同时系统吞吐量增大,当请求量达到某个数量临界值时,就可能造成系统阻塞死锁导致吞吐量反而减少。

针对高并发的情况国内外有一些常见技术方案可以解决:

(1)限流技术,最常见的限流技术有应用级限流、框架级限流和程序自实现的限流,应用级限流Nginx、Tomcat等应用软件针对系统总并发、连接数、请求数进行控制。框架级限流通常是Dubbo框架、Thrift框架提供的对系统调用者的动态配置的并发量和连接数量[6]。

(2)负载均衡技术,单台服务器处理并发请求数量都是上限的,为了更好的适用于“秒杀”业务的高并发系统,负载均衡技术必不可少。常见的划分方法有软件负载均衡(LVS、Nginx等)、硬件负载均衡(F5)、软硬件负载均衡。还有按照OSI模型协议层级区分方法:四层负载均衡(LVS)和七层负载均衡(Nginx)[7]。

(3)分布式缓存技术,众所周知程序读写内存的速度比读写硬盘的速度高了一个数量级,在“秒杀”业务的高并发场景下内存数据库可以极大的提高系统整体性能。常见的分布式内存数据库有Redis、MongoDB、Memcache等。

(4)分布式消息队列,系统瞬时的高并发请求非常容易对系统造成严重的后果,消息队列技术可以在系统中起到削峰填谷的作用。常见的分布式消息队列有Kafka、ActiveMQ、RabbitMQ、Redis、RockteMQ等。大部分常见的消息队列都已归属到Apache软件基金会[8]。

解决高并发问题,除了上述常见技术方式,还有一些其他策略可以针对系统进行优化升级。常见的策略有以下几点。

(1)独立部署瞬时高并发系统,瞬时的高并发会对系统有很大的影响,为了缩小高并发带来的影响,通常会让高并发系统独立部署在自己的服务器,方式单独应用的性能问题导致整体大系统的不可用;为了不让整体大站点面对不必要的大量用户请求,可将业务系统单独部署;申请系统独立的域名,使秒杀系统和整体站点完全隔离开来,及时系统面对高并发造成系统不可用,也不会影响到公司其它的业务系统,避免了对其它造成不必要的冲击[9]。

(2)系统展示页面的静态化,在设计高并发页面时,不能像传统页面一样设计。在高并发的场景下,每次用户的读取如果都访问数据库,系统无法支撑,将所有活动相关的信息都静态化,每次用户请求都读取静态信息大大增加的系统的稳定性和可用性。并且需要对静态资源进行优化,例如压缩合并Javascript、css文件,通过某些手段合并多个请求提高浏览器展示速度[10]。

(3)网络带宽优化,系统会有世界各地的用户访问,用户的网络环境各不相同,为了给全部用户最快的展示速度,带宽的优化必不可少;CDN(Content DeliveryNetwork)内网分发网络是最主流的一种方式。将上一小节说的静态脚本和静态资源部署在CDN上,这样既可以减少用户对秒杀系统实际请求带宽,又可以提高各地用户的访问速度,一举多得。

(4)隐藏实际秒杀地址,为了防止恶意用户和黑客的恶意操作,不能提前暴露出真实的秒杀地址;在最终活动开时才生成动态的URL,所有人在开始前都不知道实际的秒杀地址,最大程度的避免了恶意用户的提前准备,也避免了内部员工的里应外合[11]。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: