一种处理高并发数据请求的方法和系统与流程

文档序号:11811983阅读:396来源:国知局
一种处理高并发数据请求的方法和系统与流程

本发明涉及预测目的的数据处理程序控制装置及控制方法,尤其涉及一种降低因高并发数据处理导致的系统资源占用的方法和系统。



背景技术:

秒杀业务作为高并发数据处理业务之一,具有商品种类少,短时间访问量巨大的特点,可能会出现响应时间慢,甚至系统短时间瘫痪的问题。

业界在解决高并发数据处理的问题时,主要有以下几种解决方案:把事件统一发送到一个消息中间件集群中,以此为中介再发送到订阅消息的客户端;利用分布式计算框架把事件分发到不同的机器上处理;把事件送入数据流并根据预先配置好的模式或规则进行不停的匹配,均不能有效解决上述问题。

顾客通过客户端发送秒杀某个商品的数据请求,过多的客户发送秒杀请求会形成高并发数据请求等待系统处理,系统对数据库的操作为单线程操作,因此会在系统中对数据库的个别商品记录上产生大量操作锁,从而在数据库读写操作时产生严重的瓶颈,大大增加了数据库的读写时间,降低了数据库读写请求处理的信息的速度,表现为响应时间慢,系统短时间瘫痪等现象。因此,在高并发数据处理的过程中,如何减少系统资源的占用成为需要解决的技术问题。



技术实现要素:

本发明的目的在于提供一种减少高并发请求下数据库的操作锁,提高了数据库的并发请求信息的处理速度的处理高并发数据请求的方法。

本发明提供了一种处理高并发数据请求的方法,其特征在于,包括:

将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;

将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;

采用异步处理逐个对分布式缓存单元中的数据请求进行处理;

将异步处理后的数据请求写入到数据库。

本发明提供的优选的处理高并发数据请求的方法还包括限制分布式内存缓存单元数据容量的步骤,在将数据请求载入分布式内存缓存单元的过程中,如数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈。通过此步骤,可以将大量未写入分布式内存缓存的数据请求进行拒绝处理,有效降低分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力。

还可包括确定所述分布式内存缓存的数量的步骤,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量的步骤。对于单个内存缓存的数据处理能力可以通过将写入到数据库的容量向分布式内存缓存分配的方式进行,通过此步骤可以根据分布式内存缓存的数量进一步优化单个内存缓存的数据接受能力,降低单个内存缓存的数据处理压力。

还可包括扩展所述分布式内存缓存的步骤,分布式内存缓存采用REDIS缓存构架或MEMCACHED缓存构架,能有效将并发消息处理进行队列排布,可以根据需求灵活配置相关内存缓存的数量以匹配需求。

作为本发明提供的处理高并发数据请求的方法的一种数据请求,该数据请求为秒杀抢购商品数据请求。

本发明还提供了一种处理高并发数据请求的系统,包括:负载均衡模块,服务器单元,内存缓存单元,异步处理模块,数据库;负载均衡模块将多个客户端发送的数据请求分摊到多个服务器单元;多个服务器单元将本服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;异步处理模块将分布式缓存单元中的数据请求写入到数据库。

在本发明提供的处理高并发数据请求的系统分布式内存缓存包括容量限制模块,用于在将数据请求载入分布式内存缓存单元的过程中,如数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈。通过此模块,可以将大量未写入分布式内存缓存的数据请求进行拒绝处理,有效降低分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力。

再在处理高并发数据请求的系统上设置分布式内存缓存包括容量计算模块,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量。

分布式内存缓存可扩展,采用REDIS缓存构架或MEMCACHED缓存构架,能有效将并发消息处理进行队列排布。

作为本发明提供的处理高并发数据请求的系统所处理的一种数据请求,该数据请求为秒杀抢购商品数据请求。

本发明的有益效果是:本发明通过将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;采用异步处理逐个对分布式缓存单元中的数据请求进行处理;将异步处理后的数据请求写入到数据库的方法和系统的提供,实现了减少高并发请求下数据库的操作锁,提高了数据库的并发请求信息的处理速度。

附图说明

图1为本发明所提供的实施例1的数据处理方法示意图。

图2为本发明所提供的实施例2的数据处理方法示意图。

图3为本发明所提供的实施例3的数据处理方法示意图。

图4为本发明所提供的实施例4的数据处理系统示意图。

图5为本发明所提供的实施例5的数据处理系统中分布式内存缓存单元及容量限制模块示意图。

图6为本发明所提供的实施例6的数据处理系统中分布式内存缓存单元、容量限制模块及容量计算模块示意图。

具体实施方式

首先,说明本发明的基础:

1、负载均衡:英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡建立在现有网络结构之上,它提供了一种扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的方法。

2、并发:在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQL Server 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。

3、高并发数据请求:高并发数据请求则是指由于客户端的短时间大量数据请求,使得在关系数据库中同时访问和更改共享数据的用户非常多,产生大量的SQL Server 锁操作。

4、分布式内存缓存:分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。常见的包括REDIS缓存、MEMCACHED缓存等。

5、异步处理:异步处理就是按照不同步的程序处理问题。异步处理与同步处理是对立的,而产生他们的是多线程或者多进程。异步处理的好处就是提高设备使用率,从而在宏观上提升程序运行效率。

6、锁操作:MySQL 支持对MyISAM和MEMORY表进行表级锁定,对BDB表进行页级锁定,对InnoDB表进行行级锁定。对WRITE,MySQL使用的表锁定方法原理如下:如果在表上没有锁,在它上面放一个写锁。否则,把锁定请求放在写锁定队列中。对READ,MySQL使用的锁定方法原理如下:如果在表上没有写锁定,把一个读锁定放在它上面;否则,把锁请求放在读锁定队列中。InnoDB使用行锁定,BDB使用页锁定。对于这两种存储引擎,都可能存在死锁。这是因为,在SQL语句处理期间,InnoDB自动获得行锁定和BDB获得页锁定,而不是在事务启动时获得。

7、客户端:客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。

下面结合附图对本发明做更详细的说明。

实施例1:

如图1所示,本实施例提供的数据处理方法包括:S101将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;S102将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;S103采用异步处理逐个对分布式缓存单元中的数据请求进行处理;S104将异步处理后的数据请求写入到数据库。

将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;数据请求通过负载均衡分摊到多个服务器单元,在本实施例中通过NGINX反向代理PHP能达到负载均衡;将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元,本实施例采用REDIS缓存,加入了REDIS CLUSTER 集群队列,队列的作用是让大量的数据请求有序的存入到内存中;采用异步处理逐个对分布式缓存单元中的数据请求进行处理,本实施例采用后台WORKER异步处理数据,数据请求写入MYSQL数据库中,后台WORKER异步处理数据会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止,不再使用MYSQL锁的控制顺序操作。

在秒杀抢购商品的过程中,客户在秒杀开始的瞬间发送大量数据请求,所有数据请求处于并发状态,等待系统响应;由于客户端发送的数据请求来自各个网络节点,可能导致某些服务器的数据请求多,某些服务器的数据请求少,数据请求多的服务器处理速度慢,数据请求少的服务器处于空闲状态;通过NGINX反向代理PHP能达到负载均衡,将需要处理的大量秒杀的数据请求均衡负载到PHP服务器;PHP服务器向REDIS内存队列发送经过平衡后的秒杀数据请求,加入REDIS CLUSTER 集群队列,队列的作用是让秒杀数据请求有序的存入到内存中;不再使用MYSQL锁的控制顺序操作,改用了后台WORKER异步处理数据,把秒杀到的用户数据进行处理写入到MYSQL集群中,WORK程序会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止。

本实施例中,REDIS、PHP、WORKER数量可以根据实际需要灵活配置,以满足并发处理正常工作要求。

实施例2:

如图2所示,本实施例提供的数据处理方法包括:S201将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;S202将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;S203限制分布式内存缓存单元数据容量,在将数据请求载入分布式内存缓存单元的过程中,当数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈;S204采用异步处理逐个对分布式缓存单元中的数据请求进行处理;S205将异步处理后的数据请求写入到数据库。

将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;数据请求通过反向代理负载均衡,在本实施例中通过NGINX反向代理PHP能达到负载均衡;将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元,本实施例采用MEMCACHED缓存,加入了MEMCACHED集群队列,队列的作用是让大量的数据请求有序的存入到内存中;限制分布式内存缓存单元数据容量,在将数据请求载入分布式内存缓存单元的过程中,如数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈;采用异步处理逐个对分布式缓存单元中的数据请求进行处理,将异步处理后的数据请求写入到数据库,本实施例采用后台WORKER异步处理数据,数据请求写入到MYSQL数据库中,后台WORKER异步处理数据会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止,不再使用MYSQL锁的控制顺序操作。

在秒杀抢购商品的过程中,客户在秒杀开始的瞬间发送大量数据请求,所有数据请求处于并发状态,等待系统响应;通过NGINX反向代理PHP能达到负载均衡,将需要处理的大量秒杀的数据请求均衡负载到PHP服务器;PHP服务器向MEMCACHED内存队列发送经过平衡后的秒杀数据请求,加入MEMCACHED 集群队列,队列的作用是让秒杀数据请求有序的存入到内存中。MEMCACHED内存缓存单元具有容量限制,在将秒杀的数据请求载入MEMCACHED分布式内存缓存单元的过程中,如数据请求数量超过MEMCACHED内存缓存单元数据容量,拒绝载入并反馈。不再使用MYSQL锁的控制顺序操作,改用了后台WORKER异步处理数据,把秒杀到的用户数据进行处理写入到MYSQL集群中,WORK程序会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止。

本实施例中,REDIS、PHP、WORKER数量可以根据实际需要灵活配置,以满足并发处理正常工作要求。

实施例3:

如图3所示,本实施例提供的数据处理方法包括:S301将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;S302将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;S303确定所述分布式内存缓存的数量,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量;S304限制分布式内存缓存单元数据容量,在将数据请求载入分布式内存缓存单元的过程中,当数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈;S305采用异步处理逐个对分布式缓存单元中的数据请求进行处理;S306将异步处理后的数据请求写入到数据库。

将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;数据请求通过反向代理负载均衡,在本实施例中通过NGINX反向代理PHP能达到负载均衡;确定所述分布式内存缓存的数量,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量,将MYSQL数据库的容量向分布式内存缓存分配,可以采用均衡或不均衡的分配方式;将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元,将数据请求载入分布式内存缓存,本实施例采用REDIS缓存,加入了REDIS CLUSTER 集群队列,队列的作用是让大量的数据请求有序的存入到内存中;当数据请求数量超过限制时,将数据请求拒绝写入的消息反馈至客户端,以满足所述数据请求写入分布式内存缓存数量限制要求;采用异步处理逐个对分布式缓存单元中的数据请求进行处理,将异步处理后的数据请求写入到数据库,本实施例采用后台WORKER异步处理数据,数据请求写入到MYSQL数据库中,后台WORKER异步处理数据会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止,不再使用MYSQL锁的控制顺序操作。

在秒杀抢购商品的过程中,客户在秒杀开始的瞬间发送大量数据请求,所有数据请求处于并发状态,等待系统响应;发布秒杀商品时,把秒杀商品的数量分布到个REDIS集群队列中,队列的数量根据实际参与秒杀用户的规模和商品数量来增加,如:总库存10000,配置10个队列,则每个队列的库存为1000/10=1000,这样处理的目的是为了解决当抢购商品的数量大,参与抢购的用户多,并发量大增,避免单台REDIS 无法承受请求压力。通过NGINX反向代理PHP能达到负载均衡,将需要处理的大量秒杀的数据请求均衡负载到PHP服务器;PHP服务器向REDIS内存队列发送经过平衡后的秒杀数据请求,加入REDIS CLUSTER 集群队列,队列的作用是让秒杀数据请求有序的存入到内存中;当PHP服务器收到秒杀数据请求时,根据用户账号ID一致性哈希算法或通过用户账号ID取模后请求到REDIS集群队列中,入队之前通过“DECR MQ_KEY_NUM”REDIS命令判断是否大于1,如果是,则存入内存队列后直接返回秒杀成功,否则提醒秒杀失败,不再对MYSQL进行操作,这样解决了大访问量并发时响应慢的问题。不再使用MYSQL锁的控制顺序操作,改用了后台WORKER异步处理数据,把秒杀到的用户数据永久写入到MYSQL数据库中,WORK程序会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止。

本实施例中,REDIS、PHP、WORKER数量可以根据实际需要灵活配置,以满足并发处理正常工作要求。

实施例4:

如图4所示,本实施例提供一种数据处理系统,包括:402负载均衡模块,403服务器单元,404内存缓存单元,405异步处理模块,406数据库;负载均衡模块402将多个客户端401发送的数据请求分摊到多个服务器单元403;多个服务器单元403将本服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元404;异步处理模块405将分布式缓存单元404中的数据请求写入到数据库406。

负载均衡模块采用NGINX反向代理PHP服务器接收客户端在短时间内发送的大量数据请求,并对客户端发送来的数据请求进行负载均衡;PHP服务器向分布式REDIS内存缓存提交经负载均衡后的数据请求,REDIS内存缓存将数据加入REDIS CLUSTER 集群队列,队列的作用是让大量的数据请求有序的存入到内存中;异步处理模块把分布式REDIS内存缓存中的数据请求写入到数据库中,本实施例采用后台WORKER异步处理数据,数据请求写入到MYSQL数据库中,后台WORKER异步处理数据会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止,不再使用MYSQL锁的控制顺序操作;MYSQL数据库,用于进行原始数据请求和处理后的数据请求的存储。

在秒杀抢购商品的过程中,客户通过客户端在秒杀开始的瞬间发送大量数据请求,所有数据请求处于并发状态,等待系统响应;负载均衡服模块通过NGINX反向代理PHP能达到负载均衡,将需要处理的大量秒杀的请求均衡负载到PHP服务器;PHP服务器向REDIS内存队列发送经过平衡后的秒杀请求,加入REDIS CLUSTER 集群队列,队列的作用是让秒杀请求数据有序的存入到内存中;不再使用MYSQL锁的控制顺序操作,改用了后台WORKER异步处理模块处理数据,把秒杀到的用户数据进行处理写入到MYSQL数据库中,WORK程序会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止。

本实施例中,REDIS、PHP、WORKER数量可以根据实际需要灵活配置,以满足并发处理正常工作要求。

实施例5:

如图4和图5所示,本实施例提供一种数据处理系统,包括:402负载均衡模块,403服务器单元,404内存缓存单元,405异步处理模块,406数据库;负载均衡模块402将多个客户端401发送的数据请求分摊到多个服务器单元403;多个服务器单元403将本服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元404;异步处理模块405将分布式缓存单元404中的数据请求写入到数据库406。分布式内存缓存406包括容量限制模块501,用于在将数据请求载入分布式内存缓存单元404的过程中,当数据请求数量超过内存缓存单元404数据容量,拒绝载入并反馈至客户端401。

客户端在短时间内发送大量的数据请求;负载均衡服模块采用NGINX反向代理PHP服务器,用于对客户端发送来的数据请求进行负载均衡;通过PHP服务器向分布式REDIS内存缓存提交经负载均衡后的客户端发送来的数据请求,加入了REDIS CLUSTER 集群队列,队列的作用是让大量的数据请求有序的存入到内存中;设置分布式内存缓存容量限制模块,用于当数据请求数量超过限制时,将数据请求拒绝写入的消息反馈至客户端,将大量未写入REDIS分布式内存缓存的数据请求进行拒绝处理,有效降低REDIS分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力;异步处理模块把分布式内存缓存中的数据请求写入到数据库中,本实施例采用后台WORKER异步处理模块处理数据,数据请求写入到MYSQL数据库中,后台WORKER异步处理数据会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止,不再使用MYSQL锁的控制顺序操作;MYSQL数据库,用于进行原始数据请求和处理后的数据请求的存储。

在秒杀抢购商品的过程中,客户通过客户端在秒杀开始的瞬间发送大量请求,所有请求处于并发状态,等待系统响应;负载均衡服模块通过NGINX反向代理PHP能达到负载均衡,将需要处理的大量秒杀的请求均衡负载到PHP服务器;PHP服务器向REDIS内存队列发送经过平衡后的秒杀请求,加入REDIS CLUSTER 集群队列,队列的作用是让秒杀请求有序的存入到内存中;设置分布式内存缓存容量限制模块,用于当数据请求数量超过限制时,将数据请求拒绝写入的消息反馈至客户端,将大量未写入REDIS分布式内存缓存的数据请求进行拒绝处理,有效降低REDIS分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力;当PHP服务器收到秒杀请求时,根据用户账号ID一致性哈希算法或通过用户账号ID取模后请求到REDIS集群队列中,入队之前通过“DECR MQ_KEY_NUM”REDIS命令判断是否大于1,如果是,则存入内存队列后直接返回秒杀成功,否则提醒秒杀失败,不再对MYSQL进行操作,这样解决了大访问量并发时响应慢的问题。不再使用MYSQL锁的控制顺序操作,改用了后台WORKER异步处理数据,把秒杀到的用户数据进行处理写入到MYSQL数据库中,WORK程序会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止。

本实施例中,REDIS、PHP、WORKER数量可以根据实际需要灵活配置,以满足并发处理正常工作要求。

实施例6:

如图4和图6所示,本实施例提供一种数据处理系统,包括:402负载均衡模块,403服务器单元,404内存缓存单元,405异步处理模块,406数据库;负载均衡模块402将多个客户端401发送的数据请求分摊到多个服务器单元403;多个服务器单元403将本服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元404;异步处理模块405将分布式缓存单元404中的数据请求写入到数据库406;分布式内存缓存404包括容量限制模块501,用于在将数据请求载入分布式内存缓存单元404的过程中,当数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈至客户端401;分布式内存缓存404包括容量计算模块601,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元404数据容量。

客户端在短时间内发送大量的数据请求;负载均衡服模块采用NGINX反向代理PHP服务器,用于对客户端发送来的数据请求进行负载均衡;通过PHP服务器向分布式REDIS内存缓存提交经负载均衡后的客户端发送来的数据请求,加入了REDIS CLUSTER 集群队列,队列的作用是让大量的数据请求有序的存入到内存中;设置分布式内存缓存容量限制模块,用于当数据请求数量超过限制时,将数据请求拒绝写入的消息反馈至客户端,将大量未写入REDIS分布式内存缓存的数据请求进行拒绝处理,有效降低REDIS分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力;设置分布式内存缓存容量计算模块,用于将写入到数据库的容量向分布式内存缓存分配,通过此模块可以根据分布式内存缓存的数量进一步优化单个内存缓存的数据接受能力,进一步降低单个内存缓存的数据处理压力;异步处理模块把分布式内存缓存中的数据请求写入到数据库中,本实施例采用后台WORKER异步处理数据,数据请求写入到MYSQL数据库中,后台WORKER异步处理数据会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止,不再使用MYSQL锁的控制顺序操作;MYSQL数据库,用于进行原始数据请求和处理后的数据请求的存储。

在秒杀抢购商品的过程中,客户通过客户端在秒杀开始的瞬间发送大量请求,所有请求处于并发状态,等待系统响应;负载均衡服模块通过NGINX反向代理PHP能达到负载均衡,将需要处理的大量秒杀的请求均衡负载到PHP服务器;PHP服务器向REDIS内存队列发送经过平衡后的秒杀请求,加入REDIS CLUSTER 集群队列,队列的作用是让秒杀请求有序的存入到内存中;设置分布式内存缓存容量限制模块,用于当数据请求数量超过限制时,将数据请求拒绝写入的消息反馈至客户端,将大量未写入REDIS分布式内存缓存的数据请求进行拒绝处理,有效降低REDIS分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力;当PHP服务器收到秒杀请求时,根据用户账号ID一致性哈希算法或通过用户账号ID取模后请求到REDIS集群队列中,入队之前通过“DECR MQ_KEY_NUM”REDIS命令判断是否大于1,如果是,则存入内存队列后直接返回秒杀成功,否则提醒秒杀失败,不再对MYSQL进行操作,这样解决了大访问量并发时响应慢的问题。设置分布式内存缓存容量计算模块,用于将写入到数据库的容量向分布式内存缓存分配,发布秒杀商品时,把秒杀商品的数量分布到个REDIS集群队列中,队列的数量根据实际参与秒杀用户的规模和商品数量来增加,如:总库存10000,配置10个队列,则每个队列的库存为1000/10=1000,这样处理的目的是为了解决当抢购商品的数量大,参与抢购的用户多,并发量大增,避免单台REDIS 无法承受请求压力。通过此模块可以根据分布式内存缓存的数量进一步优化单个内存缓存的数据接受能力,降低单个内存缓存的数据处理压力;不再使用MYSQL锁的控制顺序操作,改用了后台WORKER异步处理数据,把秒杀到的用户数据进行处理写入到MYSQL数据库中,WORK程序会一直在循环处理队列信息,处理到REDIS队列中的数据完成为止。

本实施例中,REDIS、PHP、WORKER数量可以根据实际需要灵活配置,以满足并发处理正常工作要求。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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