CN106170016A - 一种处理高并发数据请求的方法和系统 - Google Patents
一种处理高并发数据请求的方法和系统 Download PDFInfo
- Publication number
- CN106170016A CN106170016A CN201610604651.0A CN201610604651A CN106170016A CN 106170016 A CN106170016 A CN 106170016A CN 201610604651 A CN201610604651 A CN 201610604651A CN 106170016 A CN106170016 A CN 106170016A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- unit
- high concurrent
- capacity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及预测目的的数据处理程序控制装置及控制方法,尤其涉及一种降低因高并发数据处理导致的系统资源占用的方法和系统。本发明公开了一种处理高并发数据请求的方法,包括:将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;采用异步处理逐个对分布式缓存单元中的数据请求进行处理;将异步处理后的数据请求写入到数据库。实现了减少高并发请求下数据库的操作锁,提高了数据库的并发请求信息的处理速度。
Description
技术领域
本发明涉及预测目的的数据处理程序控制装置及控制方法,尤其涉及一种降低因高并发数据处理导致的系统资源占用的方法和系统。
背景技术
秒杀业务作为高并发数据处理业务之一,具有商品种类少,短时间访问量巨大的特点,可能会出现响应时间慢,甚至系统短时间瘫痪的问题。
业界在解决高并发数据处理的问题时,主要有以下几种解决方案:把事件统一发送到一个消息中间件集群中,以此为中介再发送到订阅消息的客户端;利用分布式计算框架把事件分发到不同的机器上处理;把事件送入数据流并根据预先配置好的模式或规则进行不停的匹配,均不能有效解决上述问题。
顾客通过客户端发送秒杀某个商品的数据请求,过多的客户发送秒杀请求会形成高并发数据请求等待系统处理,系统对数据库的操作为单线程操作,因此会在系统中对数据库的个别商品记录上产生大量操作锁,从而在数据库读写操作时产生严重的瓶颈,大大增加了数据库的读写时间,降低了数据库读写请求处理的信息的速度,表现为响应时间慢,系统短时间瘫痪等现象。因此,在高并发数据处理的过程中,如何减少系统资源的占用成为需要解决的技术问题。
发明内容
本发明的目的在于提供一种减少高并发请求下数据库的操作锁,提高了数据库的并发请求信息的处理速度的处理高并发数据请求的方法。
本发明提供了一种处理高并发数据请求的方法,其特征在于,包括:
将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;
将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;
采用异步处理逐个对分布式缓存单元中的数据请求进行处理;
将异步处理后的数据请求写入到数据库。
本发明提供的优选的处理高并发数据请求的方法还包括限制分布式内存缓存单元数据容量的步骤,在将数据请求载入分布式内存缓存单元的过程中,如数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈。通过此步骤,可以将大量未写入分布式内存缓存的数据请求进行拒绝处理,有效降低分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力。
还可包括确定所述分布式内存缓存的数量的步骤,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量的步骤。对于单个内存缓存的数据处理能力可以通过将写入到数据库的容量向分布式内存缓存分配的方式进行,通过此步骤可以根据分布式内存缓存的数量进一步优化单个内存缓存的数据接受能力,降低单个内存缓存的数据处理压力。
还可包括扩展所述分布式内存缓存的步骤,分布式内存缓存采用REDIS缓存构架或MEMCACHED缓存构架,能有效将并发消息处理进行队列排布,可以根据需求灵活配置相关内存缓存的数量以匹配需求。
作为本发明提供的处理高并发数据请求的方法的一种数据请求,该数据请求为秒杀抢购商品数据请求。
本发明还提供了一种处理高并发数据请求的系统,包括:负载均衡模块,服务器单元,内存缓存单元,异步处理模块,数据库;负载均衡模块将多个客户端发送的数据请求分摊到多个服务器单元;多个服务器单元将本服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;异步处理模块将分布式缓存单元中的数据请求写入到数据库。
在本发明提供的处理高并发数据请求的系统分布式内存缓存包括容量限制模块,用于在将数据请求载入分布式内存缓存单元的过程中,如数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈。通过此模块,可以将大量未写入分布式内存缓存的数据请求进行拒绝处理,有效降低分布式内存缓存的数据处理数量,避免了单个内存缓存的数据处理压力。
再在处理高并发数据请求的系统上设置分布式内存缓存包括容量计算模块,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量。
分布式内存缓存可扩展,采用REDIS缓存构架或MEMCACHED缓存构架,能有效将并发消息处理进行队列排布。
作为本发明提供的处理高并发数据请求的系统所处理的一种数据请求,该数据请求为秒杀抢购商品数据请求。
本发明的有益效果是:本发明通过将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;采用异步处理逐个对分布式缓存单元中的数据请求进行处理;将异步处理后的数据请求写入到数据库的方法和系统的提供,实现了减少高并发请求下数据库的操作锁,提高了数据库的并发请求信息的处理速度。
附图说明
图1为本发明所提供的实施例1的数据处理方法示意图。
图2为本发明所提供的实施例2的数据处理方法示意图。
图3为本发明所提供的实施例3的数据处理方法示意图。
图4为本发明所提供的实施例4的数据处理系统示意图。
图5为本发明所提供的实施例5的数据处理系统中分布式内存缓存单元及容量限制模块示意图。
图6为本发明所提供的实施例6的数据处理系统中分布式内存缓存单元、容量限制模块及容量计算模块示意图。
具体实施方式
首先,说明本发明的基础:
1、负载均衡:英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡建立在现有网络结构之上,它提供了一种扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的方法。
2、并发:在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQLServer 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。
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数量可以根据实际需要灵活配置,以满足并发处理正常工作要求。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种处理高并发数据请求的方法,其特征在于,包括:
将多个客户端发送的数据请求通过负载均衡分摊到多个服务器单元;
将多个服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;
采用异步处理逐个对分布式缓存单元中的数据请求进行处理;
将异步处理后的数据请求写入到数据库。
2.根据权利要求1所述的处理高并发数据请求的方法,其特征在于:包括限制分布式内存缓存单元数据容量的步骤,在将数据请求载入分布式内存缓存单元的过程中,当数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈。
3.根据权利要求2所述的处理高并发数据请求的方法,其特征在于:包括确定所述分布式内存缓存的数量的步骤,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量。
4.根据权利要求1所述的处理高并发数据请求的方法,其特征在于:包括扩展所述分布式内存缓存的步骤。
5.根据权利要求1至4任一所述的处理高并发数据请求的方法,其特征在于:所述数据请求为秒杀抢购商品数据请求。
6.一种处理高并发数据请求的系统,其特征在于,包括:
负载均衡模块,服务器单元,内存缓存单元,异步处理模块,数据库;负载均衡模块将多个客户端发送的数据请求分摊到多个服务器单元;多个服务器单元将本服务器单元中的数据请求分别载入与之对应的分布式内存缓存单元;异步处理模块将分布式缓存单元中的数据请求写入到数据库。
7.根据权利要求6所述的处理高并发数据请求的系统,其特征在于:分布式内存缓存包括容量限制模块,用于在将数据请求载入分布式内存缓存单元的过程中,当数据请求数量超过内存缓存单元数据容量,拒绝载入并反馈。
8.根据权利要求7所述的处理高并发数据请求的系统,其特征在于:分布式内存缓存包括容量计算模块,通过上述数据库的容量和内存缓存单元数量确定内存缓存单元数据容量。
9.根据权利要求8所述的处理高并发数据请求的系统,其特征在于:所述分布式内存缓存可扩展。
10.根据权利要求6至9任一所述的处理高并发数据请求的系统,其特征在于:所述数据请求为秒杀抢购商品数据请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610604651.0A CN106170016A (zh) | 2016-07-28 | 2016-07-28 | 一种处理高并发数据请求的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610604651.0A CN106170016A (zh) | 2016-07-28 | 2016-07-28 | 一种处理高并发数据请求的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106170016A true CN106170016A (zh) | 2016-11-30 |
Family
ID=58065593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610604651.0A Pending CN106170016A (zh) | 2016-07-28 | 2016-07-28 | 一种处理高并发数据请求的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106170016A (zh) |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649865A (zh) * | 2016-12-31 | 2017-05-10 | 深圳市优必选科技有限公司 | 一种分布式服务器系统及数据处理方法 |
CN106878472A (zh) * | 2017-04-20 | 2017-06-20 | 广东马良行科技发展有限公司 | 一种分布式集群数据服务方法及系统 |
CN107093138A (zh) * | 2017-04-21 | 2017-08-25 | 山东佳联电子商务有限公司 | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 |
CN107273225A (zh) * | 2017-06-16 | 2017-10-20 | 深圳易嘉恩科技有限公司 | 基于消息队列的高并发抢单功能实现方法 |
CN107273220A (zh) * | 2017-05-11 | 2017-10-20 | 广东网金控股股份有限公司 | 一种电商平台数据处理方法、装置及用户终端 |
CN107370663A (zh) * | 2017-07-03 | 2017-11-21 | 中国南方电网有限责任公司 | 一种浏览器即时通讯服务分布式部署方法 |
CN107480681A (zh) * | 2017-08-02 | 2017-12-15 | 四川长虹电器股份有限公司 | 基于深度学习的高并发票据识别系统与方法 |
CN108123938A (zh) * | 2017-12-14 | 2018-06-05 | 中盈优创资讯科技有限公司 | 一种aaa服务实现方法及系统 |
CN108132757A (zh) * | 2016-12-01 | 2018-06-08 | 阿里巴巴集团控股有限公司 | 数据的存储方法、装置及电子设备 |
CN108416643A (zh) * | 2018-01-10 | 2018-08-17 | 链家网(北京)科技有限公司 | 一种抢单方法及系统 |
CN108509507A (zh) * | 2018-02-11 | 2018-09-07 | 北京原点时空信息技术有限公司 | 统一入口的账户管理系统及其实现方法 |
CN108897615A (zh) * | 2018-05-31 | 2018-11-27 | 康键信息技术(深圳)有限公司 | 秒杀请求处理方法、应用服务器集群及存储介质 |
CN108989387A (zh) * | 2018-06-07 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 控制异步请求的方法、装置及设备 |
CN109191162A (zh) * | 2018-07-06 | 2019-01-11 | 中国建设银行股份有限公司 | 信息处理方法、系统、装置及存储介质 |
CN110019345A (zh) * | 2017-12-28 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据处理方法、装置、系统及介质 |
CN110019979A (zh) * | 2017-11-20 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 提醒方法和装置 |
CN110569252A (zh) * | 2018-05-16 | 2019-12-13 | 杭州海康威视数字技术股份有限公司 | 一种数据处理系统及方法 |
CN110609855A (zh) * | 2018-05-29 | 2019-12-24 | 北京三快在线科技有限公司 | 查询处理和查询率阈值的确定方法及分布式查询系统 |
CN110796401A (zh) * | 2018-08-03 | 2020-02-14 | 京东数字科技控股有限公司 | 库存扣减方法、系统和服务器 |
CN111260272A (zh) * | 2019-12-02 | 2020-06-09 | 泰康保险集团股份有限公司 | 基于库存响应用户请求的方法、装置、设备及存储介质 |
CN111431969A (zh) * | 2020-02-28 | 2020-07-17 | 平安科技(深圳)有限公司 | 连接池的统一部署系统及方法 |
WO2020192063A1 (zh) * | 2019-03-28 | 2020-10-01 | 苏宁云计算有限公司 | 一种基于缓存化的销售锁定方法及系统 |
CN112019597A (zh) * | 2020-07-27 | 2020-12-01 | 华迪计算机集团有限公司 | 分布式数据接收系统及数据接收方法 |
CN112214487A (zh) * | 2020-09-28 | 2021-01-12 | 京东数字科技控股股份有限公司 | 数据写入方法及装置、计算机可读存储介质以及电子设备 |
CN112347073A (zh) * | 2020-10-27 | 2021-02-09 | 山东开创云计算有限公司 | 多数据系统 |
CN112632031A (zh) * | 2020-12-08 | 2021-04-09 | 北京思特奇信息技术股份有限公司 | 分布式内存数据库长连接使用的实现方法及系统、电子设备、存储介质 |
CN112711483A (zh) * | 2020-12-10 | 2021-04-27 | 广州广电运通金融电子股份有限公司 | 一种处理大数据标注服务高并发方法、系统及设备 |
CN112950307A (zh) * | 2021-01-29 | 2021-06-11 | 成都环宇知了科技有限公司 | 一种基于Swoole框架的秒杀方法及系统 |
CN113626011A (zh) * | 2021-07-21 | 2021-11-09 | 北京万维之道信息技术有限公司 | 基于php架构的数据请求处理方法、装置和设备 |
CN109218376B (zh) * | 2017-07-07 | 2022-03-08 | 中国移动通信集团江西有限公司 | 数据处理的方法、装置及设备 |
US11323534B2 (en) | 2017-04-12 | 2022-05-03 | International Business Machines Corporation | Concurrency reduction through publish-subscribe patterns |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103825835A (zh) * | 2013-11-29 | 2014-05-28 | 中邮科通信技术股份有限公司 | 一种互联网高并发秒杀系统 |
CN104731899A (zh) * | 2015-03-19 | 2015-06-24 | 浪潮通用软件有限公司 | 一种基于异步处理的数据高并发处理方法 |
CN105468690A (zh) * | 2015-11-17 | 2016-04-06 | 中国建设银行股份有限公司 | 一种库存数据处理方法和装置 |
-
2016
- 2016-07-28 CN CN201610604651.0A patent/CN106170016A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103825835A (zh) * | 2013-11-29 | 2014-05-28 | 中邮科通信技术股份有限公司 | 一种互联网高并发秒杀系统 |
CN104731899A (zh) * | 2015-03-19 | 2015-06-24 | 浪潮通用软件有限公司 | 一种基于异步处理的数据高并发处理方法 |
CN105468690A (zh) * | 2015-11-17 | 2016-04-06 | 中国建设银行股份有限公司 | 一种库存数据处理方法和装置 |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108132757A (zh) * | 2016-12-01 | 2018-06-08 | 阿里巴巴集团控股有限公司 | 数据的存储方法、装置及电子设备 |
CN108132757B (zh) * | 2016-12-01 | 2021-10-19 | 阿里巴巴集团控股有限公司 | 数据的存储方法、装置及电子设备 |
CN106649865A (zh) * | 2016-12-31 | 2017-05-10 | 深圳市优必选科技有限公司 | 一种分布式服务器系统及数据处理方法 |
US11323534B2 (en) | 2017-04-12 | 2022-05-03 | International Business Machines Corporation | Concurrency reduction through publish-subscribe patterns |
CN106878472A (zh) * | 2017-04-20 | 2017-06-20 | 广东马良行科技发展有限公司 | 一种分布式集群数据服务方法及系统 |
CN107093138B (zh) * | 2017-04-21 | 2019-04-30 | 山东佳联电子商务有限公司 | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 |
CN107093138A (zh) * | 2017-04-21 | 2017-08-25 | 山东佳联电子商务有限公司 | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 |
CN107273220A (zh) * | 2017-05-11 | 2017-10-20 | 广东网金控股股份有限公司 | 一种电商平台数据处理方法、装置及用户终端 |
CN107273225A (zh) * | 2017-06-16 | 2017-10-20 | 深圳易嘉恩科技有限公司 | 基于消息队列的高并发抢单功能实现方法 |
CN107370663A (zh) * | 2017-07-03 | 2017-11-21 | 中国南方电网有限责任公司 | 一种浏览器即时通讯服务分布式部署方法 |
CN109218376B (zh) * | 2017-07-07 | 2022-03-08 | 中国移动通信集团江西有限公司 | 数据处理的方法、装置及设备 |
CN107480681A (zh) * | 2017-08-02 | 2017-12-15 | 四川长虹电器股份有限公司 | 基于深度学习的高并发票据识别系统与方法 |
CN110019979A (zh) * | 2017-11-20 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 提醒方法和装置 |
CN108123938A (zh) * | 2017-12-14 | 2018-06-05 | 中盈优创资讯科技有限公司 | 一种aaa服务实现方法及系统 |
CN110019345A (zh) * | 2017-12-28 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据处理方法、装置、系统及介质 |
CN108416643A (zh) * | 2018-01-10 | 2018-08-17 | 链家网(北京)科技有限公司 | 一种抢单方法及系统 |
CN108509507A (zh) * | 2018-02-11 | 2018-09-07 | 北京原点时空信息技术有限公司 | 统一入口的账户管理系统及其实现方法 |
CN110569252B (zh) * | 2018-05-16 | 2023-04-07 | 杭州海康威视数字技术股份有限公司 | 一种数据处理系统及方法 |
CN110569252A (zh) * | 2018-05-16 | 2019-12-13 | 杭州海康威视数字技术股份有限公司 | 一种数据处理系统及方法 |
CN110609855A (zh) * | 2018-05-29 | 2019-12-24 | 北京三快在线科技有限公司 | 查询处理和查询率阈值的确定方法及分布式查询系统 |
CN110609855B (zh) * | 2018-05-29 | 2021-06-04 | 北京三快在线科技有限公司 | 查询处理和查询率阈值的确定方法及分布式查询系统 |
CN108897615A (zh) * | 2018-05-31 | 2018-11-27 | 康键信息技术(深圳)有限公司 | 秒杀请求处理方法、应用服务器集群及存储介质 |
CN108989387A (zh) * | 2018-06-07 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 控制异步请求的方法、装置及设备 |
CN109191162A (zh) * | 2018-07-06 | 2019-01-11 | 中国建设银行股份有限公司 | 信息处理方法、系统、装置及存储介质 |
CN110796401A (zh) * | 2018-08-03 | 2020-02-14 | 京东数字科技控股有限公司 | 库存扣减方法、系统和服务器 |
WO2020192063A1 (zh) * | 2019-03-28 | 2020-10-01 | 苏宁云计算有限公司 | 一种基于缓存化的销售锁定方法及系统 |
CN111260272A (zh) * | 2019-12-02 | 2020-06-09 | 泰康保险集团股份有限公司 | 基于库存响应用户请求的方法、装置、设备及存储介质 |
CN111431969A (zh) * | 2020-02-28 | 2020-07-17 | 平安科技(深圳)有限公司 | 连接池的统一部署系统及方法 |
CN112019597A (zh) * | 2020-07-27 | 2020-12-01 | 华迪计算机集团有限公司 | 分布式数据接收系统及数据接收方法 |
CN112214487A (zh) * | 2020-09-28 | 2021-01-12 | 京东数字科技控股股份有限公司 | 数据写入方法及装置、计算机可读存储介质以及电子设备 |
CN112347073A (zh) * | 2020-10-27 | 2021-02-09 | 山东开创云计算有限公司 | 多数据系统 |
CN112632031A (zh) * | 2020-12-08 | 2021-04-09 | 北京思特奇信息技术股份有限公司 | 分布式内存数据库长连接使用的实现方法及系统、电子设备、存储介质 |
CN112711483A (zh) * | 2020-12-10 | 2021-04-27 | 广州广电运通金融电子股份有限公司 | 一种处理大数据标注服务高并发方法、系统及设备 |
CN112950307A (zh) * | 2021-01-29 | 2021-06-11 | 成都环宇知了科技有限公司 | 一种基于Swoole框架的秒杀方法及系统 |
CN113626011A (zh) * | 2021-07-21 | 2021-11-09 | 北京万维之道信息技术有限公司 | 基于php架构的数据请求处理方法、装置和设备 |
CN113626011B (zh) * | 2021-07-21 | 2024-02-13 | 北京万维之道信息技术有限公司 | 基于php架构的数据请求处理方法、装置和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106170016A (zh) | 一种处理高并发数据请求的方法和系统 | |
CN111480154B (zh) | 批量数据摄取的方法、系统和介质 | |
US10862957B2 (en) | Dissemination of node metrics in server clusters | |
US10402424B1 (en) | Dynamic tree determination for data processing | |
US9230002B2 (en) | High performant information sharing and replication for single-publisher and multiple-subscriber configuration | |
US5797005A (en) | Shared queue structure for data integrity | |
EP2288997B1 (en) | Distributed cache arrangement | |
CN109075988B (zh) | 任务调度和资源发放系统和方法 | |
US8024744B2 (en) | Method and system for off-loading user queries to a task manager | |
CN107451853B (zh) | 一种红包实时派发的方法、装置、系统及存储介质 | |
US8150889B1 (en) | Parallel processing framework | |
CN106817408B (zh) | 一种分布式服务器集群调度方法及装置 | |
CN102611735A (zh) | 一种应用服务的负载均衡方法及系统 | |
US20130232164A1 (en) | Methods and Apparatus for Job State Tracking in Cluster Computing | |
CN110383764A (zh) | 无服务器系统中使用历史数据处理事件的系统和方法 | |
CN102137128A (zh) | 一种集群服务的负载均衡方法和装置 | |
JP2008033952A (ja) | 共通作業キュー環境における最適格サーバ | |
WO2022041899A1 (zh) | 区块链中区块的处理方法、装置、节点设备及存储介质 | |
US20120224482A1 (en) | Credit feedback system for parallel data flow control | |
US8930518B2 (en) | Processing of write requests in application server clusters | |
CN102904961A (zh) | 一种云计算资源调度方法及系统 | |
CN107562803B (zh) | 数据供应系统及方法、终端 | |
CN110309229A (zh) | 分布式系统的数据处理方法和分布式系统 | |
CN111245887B (zh) | Hbase连接动态保持方法、设备、存储介质及系统 | |
CN103634374A (zh) | 一种并发访问请求的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161130 |
|
RJ01 | Rejection of invention patent application after publication |