高并发电子商务系统的设计与实现
2018-01-03杨涛南京苏宁软件技术有限公司
杨涛 南京苏宁软件技术有限公司
高并发电子商务系统的设计与实现
杨涛 南京苏宁软件技术有限公司
本文主要从多线程处理、优化数据库、增加系统可用资源三个方面对高并发电子商务系统的设计与实现进行简要阐述,以提高系统资源利用率、提高系统处理速度为目的,满足用户的访问量、平台的请求量,保证电商系统响应的准确性和流畅性。
高并发 电子商务系统 设计
1 前言
随着信息化的快速发展,电子商务系统的设计技术也在蓬勃发展,人们的购物方式从之前面对面的钱货方式慢慢转变为多元化的交易方式,例如网上购物,这种购物方式以保证客户购物安全为前提、为客户提供丰富的商品选择、而且足不出户的购物方式也为客户提供一个安全、便捷、性价比高的购物渠道。但在购物狂欢节如双11、双12这种节日时,交易平台的访问量较大、商品查询次数较多等问题极易导致商品刷新慢、无法付款、甚至服务器崩溃等现象、为用户带来极大的不便,所以将高并发技术应用到电子商务系统的设计,保证系统响应的准确性和流畅性,满足用户的购物需求、也使得购物平台的用户量不断增加。
2 高并发电子商务系统的设计与实现
在用户访问高峰期时,电子商务平台因访问量大、频次多,使得平台响应时间长、反应慢、服务器超负荷运转甚至出现死机等现象,将高并发的技术需求应用到电子商务系统中,对整个系统进行设计,保证系统响应的准确性和流畅性,满足用户的购物需求,本文主要从三个方面进行简要阐述。
(1)多线程处理:当用户向服务器发送请求时、传输的信息主要以多进程方式、异步方式、多线程方式进行处理,通过分析比较,多线程处理方式可提高服务器的利用率、减少空闲时间。与多进程方式相比,一个进程由多个线程组成、且线程间可共享用户要求的部分资源,所以线程占用空间较小、且处理效率较高。如图1所示,采用多线程处理方式处理用户提交订单的信息,当用户发出提交订单的信息,系统会自动调出商品与用户的信息,然后验证商品是否有货及相关配送问题等、同时也验证用户是否有权限、ID是否被禁用等,当两者都验证通过时、订单才会被认为提交成功,采用多线程处理方式处理、对商品及用户信息的验证是同时进行的(非顺序验证)、若有一项不符合该订单显示提交失败,这种处理方式可提高处理效率。
图1 添加多线程处理的流程图
(2)优化数据库:完善DAO层,读写分离,有效的减轻数据库和io压力,同时保证数据一致性;合理使用数据库索引,哈希索引实现数据的快速存取;对常用又很少变更的数据使用Redis存储,Redis拥有丰富的数据类型,高效的读写速度,所有操作都是原子性,可大幅度提高系统处理效率;分布式部署,针对特殊的业务场景,如秒杀和抢购,需要控制商品发放数量,采用队列和乐观锁的方案,通过MQ或Kafka先进先出的队列方式处理请求,当商品数量足够时,通过乐观锁去扣除商品数量,乐观锁通过数据库版本号实现加锁,更新失败时,商品数量已经被抢购完,后续请求可以直接返回抢购失败,提高系统的响应速度;
(3)增加系统可用资源:当电商平台访问量较多、请求量较大时,单个服务器因负载大而反应缓慢、采用多个服务器进行处理、提高处理效率,采用Nginx作为负载均衡服务器、只接收并向其他服务器转发请求,当一台服务器没有响应时、系统会自动地重新进行全面映射、使得负载均衡并满足平台的处理请求。业务层采用成熟的NIO通讯框架,支撑高并发吞吐量的请求。同时,对于web系统来说,图片,css,JavaScript,Html等静态资源的资源消耗比较大,将静态资源和应用服务器分别部署在不同的服务器上,通过Nginx管理静态资源服务器和后端服务器的请求,可以使后端应用更加服务化,减轻后端服务器压力,提高静态资源访问速度。
3 结论
为保证电商系统响应的准确性和流畅性,满足用户的访问量、平台的请求量,本文主要从多线程处理、优化数据库、增加系统可用资源三个方面对高并发电子商务系统的设计与实现进行简要阐述,提高系统资源利用率、提高系统处理速度,来不断满足在用户高峰期时电子商务系统的使用。
[1]徐伟恒.高并发电子商务系统的设计与实现[D].哈尔滨工业大学,2016.
[2]彭冲.面向农产品的电子商务平台设计与实现[D].湘潭大学,2016.
杨涛,1990.05,男,汉,江苏南京,本科,助理工程师,目前从事软件工程方面的工作。