CN105827604A - 服务器业务处理方法及服务器 - Google Patents
服务器业务处理方法及服务器 Download PDFInfo
- Publication number
- CN105827604A CN105827604A CN201610146518.5A CN201610146518A CN105827604A CN 105827604 A CN105827604 A CN 105827604A CN 201610146518 A CN201610146518 A CN 201610146518A CN 105827604 A CN105827604 A CN 105827604A
- Authority
- CN
- China
- Prior art keywords
- service request
- user data
- request
- server
- message queue
- 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
-
- 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/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种服务器业务处理方法,所述服务器业务处理方法包括以下步骤:通过网络进程接收来自客户端的业务请求;在所述网络进程接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理进程;在所述逻辑处理进程接收到所述业务请求时,根据所述业务请求进行对应的业务处理。本发明还公开了一种服务器。本发明提高了客户端的连接和数据收发的效率,提高了系统的吞吐量。同时实现了消息的异步处理;同时,降低了各个进程间的耦合度;同时,通过消息队列可以在逻辑处理进程处理不了时,将消息存储起来,不至于该逻辑处理进程对应的服务不可用。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种服务器业务处理方法及服务器。
背景技术
在现有的服务器业务处理过程中,多是基于多线程的架构,尤其在游戏服务器中,对于每一个客户端的请求都新建一个线程来进行处理,有多少个客户端就建立多少个线程。对于每一个客户端对应一个线程,由此造成了在逻辑处理过程中,往往无法再处理来自该客户端的连接和数据收发业务,使得逻辑处理阻塞了客户端的连接和数据收发处理,降低了系统的运行效率。因此,对于每个客户端通过一个线程进行处理造成系统运行效率低的问题,此方面的问题亟待发明人解决。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于解决对于每个客户端通过一个线程进行处理造成系统运行效率低的问题。
为实现上述目的,本发明提供一种服务器业务处理方法,所述服务器业务处理方法包括以下步骤:
通过网络进程接收来自客户端的业务请求;
在所述网络进程接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理进程;
在所述逻辑处理进程接收到所述业务请求时,根据所述业务请求进行对应的业务处理。
可选的,所述业务处理包括对数据库内用户数据的修改,所述的在所述逻辑处理进程接收到所述业务请求时,根据所述业务请求进行对应的业务处理的步骤包括:
在所述逻辑处理进程接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据;
在所述逻辑处理进程查找到对应的用户数据时,对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理进程;
在所述数据库代理进程接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
可选的,所述的在所述逻辑处理进程接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据的步骤之后,还包括:
在所述逻辑处理进程未查找到对应的用户数据时,通过消息队列发送查询请求至所述数据库代理进程;
在所述数据库代理进程接收到所述查询请求时,根据所述查询请求查询数据库,并通过消息队列将查找到的用户数据返回至所述逻辑处理进程;
在所述逻辑处理进程接收到所述用户数据时,将所述用户数据保存至所述内存中,并返回对内存中的所述用户数据进行修改的步骤。
可选的,所述的在所述网络进程接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理进程的步骤包括:
在所述网络进程接收到所述业务请求时,确定所述业务请求对应的协议号,将所述业务请求通过消息队列发送至所述协议号对应的逻辑处理进程。
可选的,所述的通过网络进程接收来自客户端的业务请求的步骤之前,还包括:
在所述网络进程接收到客户端的连接请求时,建立与所述客户端之间的通信连接以接收所述客户端的业务请求。
此外,为实现上述目的,本发明还提供一种服务器,所述服务器包括:
网络模块,用于接收来自客户端的业务请求;
所述网络模块,还用于在接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理模块;
逻辑处理模块,用于在接收到所述业务请求时,根据所述业务请求进行对应的业务处理。
可选的,所述业务处理包括对数据库内用户数据的修改,所述服务器还包括数据库代理模块、用于缓存用户数据的内存模块和用于保存用户数据的数据库;
所述逻辑处理模块,还用于在接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据;
所述逻辑处理模块,还用于在查找到对应的用户数据时,对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理模块;
所述数据库代理模块,用于在接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
可选的,所述逻辑处理模块,还用于在未查找到对应的用户数据时,通过消息队列发送查询请求至所述数据库代理模块;
所述数据库代理模块,还用于在接收到所述查询请求时,根据所述查询请求查询数据库,并通过消息队列将查找到的用户数据返回至所述逻辑处理模块;
所述逻辑处理模块,还用于在接收到所述用户数据时,将所述用户数据保存至所述内存中,并返回对内存中的所述用户数据进行修改的步骤。
可选的,所述网络模块,还用于在接收到所述业务请求时,确定所述业务请求对应的协议号,将所述业务请求通过消息队列发送至所述协议号对应的逻辑处理模块。
可选的,所述网络模块,还用于在接收到客户端的连接请求时,建立与所述客户端之间的通信连接以接收所述客户端的业务请求。
本发明通过网络进程处理与客户端的连接和数据的收发,将客户端的连接和数据收发与逻辑处理分开,避免了逻辑处理阻塞客户端的连接和数据收发处理,提高了客户端的连接和数据收发的效率,提高了系统的吞吐量。同时通过消息队列在各个进程间通信,实现了消息的异步处理,网络进程无需等待逻辑处理进程回应,该网络进程即可继续处理下一业务,不会阻塞在等待逻辑处理进程回应上;同时,只需要保证网络进程与逻辑处理进程的数据传输协议统一,任何一方的代码改变都不会影响到另外一方,降低了各个进程间的耦合度;同时,通过消息队列可以在逻辑处理进程处理不了时,将消息存储起来,不至于该逻辑处理进程对应的服务不可用。
附图说明
图1为本发明服务器业务处理方法的第一实施例的流程示意图;
图2为本发明服务器业务处理方法的第二实施例的流程示意图;
图3为本发明服务器业务处理方法的第三实施例的流程示意图;
图4为本发明服务器的第一实施例的功能模块示意图;
图5为本发明服务器的第二实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:通过网络进程接收来自客户端的业务请求;在所述网络进程接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理进程;在所述逻辑处理进程接收到所述业务请求时,根据所述业务请求进行对应的业务处理。
在现有的服务器业务处理过程中,基于多线程的架构,对于每一个客户端对应一个线程,由此造成了在逻辑处理过程中,往往无法再处理来自该客户端的连接和数据收发业务,使得逻辑处理阻塞了客户端的连接和数据收发处理,降低了系统的运行效率的问题。
基于上述问题,本发明提供一种服务器业务处理方法。
参照图1,图1为本发明服务器业务处理方法的第一实施例的流程示意图。
在本实施例中,所述服务器业务处理方法包括:
步骤S10,通过网络进程接收来自客户端的业务请求;
本发明实施例中,所述服务器通过网络进程接收来自客户端的业务请求,所述网络进程可以是所述服务器内用于处理客户端的连接和数据收发的程序。所述服务器可以包括一个或多个网络进程,进一步的,所述服务器的每个网络进程可以为一个或多个客户端服务。所述服务器可以在所述网络进程接收到客户端的连接请求时,通过所述网络进程建立与所述客户端之间的通信连接以接收所述客户端的业务请求。所述业务请求可以是用户登陆请求等等。
步骤S20,在所述网络进程接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理进程;
所述服务器在所述网络进程接收到所述业务请求时,通过所述网络进程将所述业务请求通过消息队列发送至对应的逻辑处理进程。进一步的,所述网络进程将接收到的业务请求通过消息队列发送至对应的逻辑处理进程之后,所述网络进程继续接收下一个业务请求,并将下一个业务请求通过消息队列发送至对应的逻辑处理进程。使得只要有新的业务请求到来,所述服务器的网络进程始终处于非阻塞的状态。
进一步的,当对应的逻辑处理进程处于无法处理所述业务请求时,所述服务器可以通过消息队列将所述业务请求进行保存,当检测到对应的逻辑处理进程能够处理时发送至对应的逻辑处理进程进行处理。使得逻辑处理进程的服务始终处于可用状态,不至于因为接收到的业务请求太多而导致该逻辑处理进程所提供的服务不可用。
具体的,所述服务器可以在所述网络进程接收到所述业务请求时,确定所述业务请求对应的协议号,将所述业务请求通过消息队列发送至所述协议号对应的逻辑处理进程。
步骤S30,在所述逻辑处理进程接收到所述业务请求时,根据所述业务请求进行对应的业务处理。
所述服务器在逻辑处理进程接收到业务请求时,通过所述逻辑处理进程进行对应的业务处理。所述服务器可以包括一个或多个逻辑处理进程,进一步的,所述服务器的各个逻辑处理进程可以对应不同的逻辑业务,每个逻辑处理进程专注于处理各自对应的逻辑业务。
本实施例通过网络进程处理与客户端的连接和数据的收发,将客户端的连接和数据收发与逻辑处理分开,避免了逻辑处理阻塞客户端的连接和数据收发处理,提高了客户端的连接和数据收发的效率,提高了系统的吞吐量。同时通过消息队列在各个进程间通信,实现了消息的异步处理,网络进程无需等待逻辑处理进程回应,该网络进程即可继续处理下一业务,不会阻塞在等待逻辑处理进程回应上;同时,只需要保证网络进程与逻辑处理进程的数据传输协议统一,任何一方的代码改变都不会影响到另外一方,降低了各个进程间的耦合度;同时,通过消息队列可以在逻辑处理进程处理不了时,将消息存储起来,不至于该逻辑处理进程对应的服务不可用。
参照图2,图2为本发明服务器业务处理方法的第二实施例的流程示意图。基于上述业务处理方法的第一实施例,所述业务处理包括对数据库内用户数据的修改,所述步骤S30包括:
步骤S31,在所述逻辑处理进程接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据;
所述数据库为所述服务器内用于保存用户数据的存储单元。当所述业务处理包括对数据库内用户数据的修改,对应的逻辑处理进程在业务处理过程中需要修改数据库内的用户数据时,所述服务器在所述逻辑处理进程接收到所述业务请求时,通过所述逻辑处理进程在预设内存中查找所述业务请求对应的用户数据。所述预设内存为所述服务器内用于缓存用户数据的存储单元,所述服务器可以将对应的用户数据缓存至所述内存中以供逻辑处理进程进行操作。所述预设内存中缓存的用户数据对所述服务器内的各个进程是共享的,使得各个进程意外崩溃时不会影响到内存数据,只需要新建对应的进程,对应的服务就可以继续运行。
步骤S32,在所述逻辑处理进程查找到对应的用户数据时,对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理进程;
所述服务器在所述逻辑处理进程查找到所述业务请求对应的用户数据时,通过所述逻辑处理进程对内存中的所述用户数据进行修改,并通过所述逻辑处理进程发送回写请求至数据库代理进程以对数据库内的用户数据进行对应的修改,所述逻辑处理进程与所述数据库代理进程之间通过消息队列进行通信。进一步的,所述逻辑处理进程通过消息队列发送回写请求至数据库代理进程之后,即可接收下一业务请求,并进行对应的业务处理。使得逻辑处理进程始终处于非阻塞状态。
所述数据库代理进程为所述服务器内用于拉取和回写数据库数据的程序,进一步的,所述服务器可以包括一个或者多个数据库代理进程。
步骤S33,在所述数据库代理进程接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
所述服务器在所述数据库代理进程接收到所述回写请求时,通过所述数据库代理进程根据所述回写请求对数据库内的用户数据进行修改。进一步的,所述数据库代理进程对数据库内的用户数据修改完毕之后,即可接收下一业务请求,并进行对应的业务操作。使得数据库代理进程始终处于可用状态。
本实施例逻辑处理进程处理业务逻辑,并通过数据库代理进程处理数据库数据的拉取和回写,逻辑处理进程与数据库代理进程之间通过消息队列进行通信,实现了消息的异步处理,逻辑处理进程无需等待数据库代理进程回应,该逻辑处理进程即可继续处理下一业务,不会阻塞在等待数据库代理进程回应上;同时,只需要保证逻辑处理进程与数据库代理进程的数据传输协议统一,任何一方的代码改变都不会影响到另外一方,降低了各个进程间的耦合度;同时,通过消息队列可以在数据库代理进程处理不了时,将消息存储起来,不至于该数据库代理进程对应的服务不可用。同时通过共享内存缓存用户数据,各个逻辑处理进程在内存中进行业务操作,提高了系统运行效率,不用每次都从数据库中拉取数据。同时当进程意外崩溃时不会影响到内存的数据,只需要把对应的进程拉起来,对应的服务即可继续运行。
参照图3,图3为本发明业务处理方法的第三实施例的流程示意图。基于上述业务处理方法的第二实施例,所述步骤S32之后,还包括:
步骤S34,在所述逻辑处理进程未查找到对应的用户数据时,通过消息队列发送查询请求至所述数据库代理进程;
所述服务器在所述逻辑处理进程未查找到对应的用户数据时,通过所述逻辑处理进程发送查询请求至所述数据库代理进程,所述逻辑处理进程与所述数据库代理进程之间通过消息队列进行通信。所述查询请求用于供对应的数据库代理进程在数据库中查询对应的用户数据。
步骤S35,在所述数据库代理进程接收到所述查询请求时,根据所述查询请求查询数据库,并通过消息队列将查找到的用户数据返回至所述逻辑处理进程;
所述服务器在所述数据库代理进程接收到所述查询请求时,通过所述数据库代理进程根据所述查询请求查询数据库以查找对应的用户数据,并通过所述数据库代理进程将查找到的用户数据返回至所述逻辑处理进程。进一步的,所述数据库代理进程通过消息队列将查找到的用户数据返回至所述逻辑处理进程之后,继续接收下一业务请求并进行对应的业务处理,使得所述数据库代理进程始终处于非阻塞状态。
步骤S36,在所述逻辑处理进程接收到所述用户数据时,将所述用户数据保存至所述内存中,并返回对内存中的所述用户数据进行修改的步骤。
所述服务器在所述逻辑处理进程接收到所述用户数据时,通过所述逻辑处理进程将所述用户数据保存至所述内存中,所述逻辑处理进程对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理进程;在所述数据库代理进程接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
本实施例逻辑处理进程处理业务逻辑,并通过数据库代理进程处理数据库数据的拉取和回写,逻辑处理进程与数据库代理进程之间通过消息队列进行通信,实现了消息的异步处理,逻辑处理进程无需等待数据库代理进程回应,该逻辑处理进程即可继续处理下一业务,不会阻塞在等待数据库代理进程回应上;同时,只需要保证逻辑处理进程与数据库代理进程的数据传输协议统一,任何一方的代码改变都不会影响到另外一方,降低了各个进程间的耦合度;同时,通过消息队列可以在数据库代理进程处理不了时,将消息存储起来,不至于该数据库代理进程对应的服务不可用。同时通过共享内存缓存用户数据,各个逻辑处理进程在内存中进行业务操作,提高了系统运行效率,不用每次都从数据库中拉取数据。同时当进程意外崩溃时不会影响到内存的数据,只需要把对应的进程拉起来,对应的服务即可继续运行。
上述第一至第三实施例的服务器业务处理方法的执行主体均可以为服务器或服务器内的业务处理装置。更进一步地,该服务器业务处理方法可以由安装在服务器或服务器内的业务处理装置上的处理程序实现,其中,该服务器可以包括但不限于游戏服务器等电子设备。
本发明进一步提供一种服务器。
参照图4,图4为本发明服务器的第一实施例的功能模块示意图。
在本实施例中,所述服务器包括:网络模块10、逻辑处理模块20。
所述网络模块10,用于接收来自客户端的业务请求;
本发明实施例中,所述服务器通过网络进程接收来自客户端的业务请求,所述网络进程可以是所述服务器内用于处理客户端的连接和数据收发的程序。所述服务器可以包括一个或多个网络进程,进一步的,所述服务器的每个网络进程可以为一个或多个客户端服务。所述服务器可以在所述网络进程接收到客户端的连接请求时,通过所述网络进程建立与所述客户端之间的通信连接以接收所述客户端的业务请求。所述业务请求可以是用户登陆请求等等。进一步的,所述网络模块10,还可以用于在接收到客户端的连接请求时,建立与所述客户端之间的通信连接以接收所述客户端的业务请求。
所述网络模块10,还用于在接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理模块;
所述服务器在所述网络进程接收到所述业务请求时,通过所述网络进程将所述业务请求通过消息队列发送至对应的逻辑处理进程。进一步的,所述网络进程将接收到的业务请求通过消息队列发送至对应的逻辑处理进程之后,所述网络进程继续接收下一个业务请求,并将下一个业务请求通过消息队列发送至对应的逻辑处理进程。使得只要有新的业务请求到来,所述服务器的网络进程始终处于非阻塞的状态。
进一步的,当对应的逻辑处理进程处于无法处理所述业务请求时,所述服务器可以通过消息队列将所述业务请求进行保存,当检测到对应的逻辑处理进程能够处理时发送至对应的逻辑处理进程进行处理。使得逻辑处理进程的服务始终处于可用状态,不至于因为接收到的业务请求太多而导致该逻辑处理进程所提供的服务不可用。
具体的,所述网络模块10,还可以用于在接收到所述业务请求时,确定所述业务请求对应的协议号,将所述业务请求通过消息队列发送至所述协议号对应的逻辑处理模块。
所述逻辑处理模块20,用于在接收到所述业务请求时,根据所述业务请求进行对应的业务处理。
所述服务器在逻辑处理进程接收到业务请求时,通过所述逻辑处理进程进行对应的业务处理。所述服务器可以包括一个或多个逻辑处理进程,进一步的,所述服务器的各个逻辑处理进程可以对应不同的逻辑业务,每个逻辑处理进程专注于处理各自对应的逻辑业务。
本实施例通过网络进程处理与客户端的连接和数据的收发,将客户端的连接和数据收发与逻辑处理分开,避免了逻辑处理阻塞客户端的连接和数据收发处理,提高了客户端的连接和数据收发的效率,提高了系统的吞吐量。同时通过消息队列在各个进程间通信,实现了消息的异步处理,网络进程无需等待逻辑处理进程回应,该网络进程即可继续处理下一业务,不会阻塞在等待逻辑处理进程回应上;同时,只需要保证网络进程与逻辑处理进程的数据传输协议统一,任何一方的代码改变都不会影响到另外一方,降低了各个进程间的耦合度;同时,通过消息队列可以在逻辑处理进程处理不了时,将消息存储起来,不至于该逻辑处理进程对应的服务不可用。
参照图5,图5为本发明装置的第二实施例的功能模块示意图。基于上述服务器的第一实施例,所述业务处理包括对数据库内用户数据的修改,所述服务器还包括数据库代理模块30、用于缓存用户数据的内存模块40和用于保存用户数据的数据库50;
所述逻辑处理模块20,还用于在接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据;
所述数据库为所述服务器内用于保存用户数据的存储单元。当所述业务处理包括对数据库内用户数据的修改,对应的逻辑处理进程在业务处理过程中需要修改数据库内的用户数据时,所述服务器在所述逻辑处理进程接收到所述业务请求时,通过所述逻辑处理进程在预设内存中查找所述业务请求对应的用户数据。所述预设内存为所述服务器内用于缓存用户数据的存储单元,所述服务器可以将对应的用户数据缓存至所述内存中以供逻辑处理进程进行操作。所述预设内存中缓存的用户数据对所述服务器内的各个进程是共享的,使得各个进程意外崩溃时不会影响到内存数据,只需要新建对应的进程,对应的服务就可以继续运行。
所述逻辑处理模块20,还用于在查找到对应的用户数据时,对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理模块;
所述服务器在所述逻辑处理进程查找到所述业务请求对应的用户数据时,通过所述逻辑处理进程对内存中的所述用户数据进行修改,并通过所述逻辑处理进程发送回写请求至数据库代理进程以对数据库内的用户数据进行对应的修改,所述逻辑处理进程与所述数据库代理进程之间通过消息队列进行通信。进一步的,所述逻辑处理进程通过消息队列发送回写请求至数据库代理进程之后,即可接收下一业务请求,并进行对应的业务处理。使得逻辑处理进程始终处于非阻塞状态。
所述数据库代理进程为所述服务器内用于拉取和回写数据库数据的程序,进一步的,所述服务器可以包括一个或者多个数据库代理进程。
所述数据库代理模块30,用于在接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
所述服务器在所述数据库代理进程接收到所述回写请求时,通过所述数据库代理进程根据所述回写请求对数据库内的用户数据进行修改。进一步的,所述数据库代理进程对数据库内的用户数据修改完毕之后,即可接收下一业务请求,并进行对应的业务操作。使得数据库代理进程始终处于可用状态。
本实施例逻辑处理进程处理业务逻辑,并通过数据库代理进程处理数据库数据的拉取和回写,逻辑处理进程与数据库代理进程之间通过消息队列进行通信,实现了消息的异步处理,逻辑处理进程无需等待数据库代理进程回应,该逻辑处理进程即可继续处理下一业务,不会阻塞在等待数据库代理进程回应上;同时,只需要保证逻辑处理进程与数据库代理进程的数据传输协议统一,任何一方的代码改变都不会影响到另外一方,降低了各个进程间的耦合度;同时,通过消息队列可以在数据库代理进程处理不了时,将消息存储起来,不至于该数据库代理进程对应的服务不可用。同时通过共享内存缓存用户数据,各个逻辑处理进程在内存中进行业务操作,提高了系统运行效率,不用每次都从数据库中拉取数据。同时当进程意外崩溃时不会影响到内存的数据,只需要把对应的进程拉起来,对应的服务即可继续运行。
进一步的,基于上述服务器的第二实施例,所述逻辑处理模块20,还用于在未查找到对应的用户数据时,通过消息队列发送查询请求至所述数据库代理模块;
所述服务器在所述逻辑处理进程未查找到对应的用户数据时,通过所述逻辑处理进程发送查询请求至所述数据库代理进程,所述逻辑处理进程与所述数据库代理进程之间通过消息队列进行通信。所述查询请求用于供对应的数据库代理进程在数据库中查询对应的用户数据。
所述数据库代理模块30,还用于在接收到所述查询请求时,根据所述查询请求查询数据库,并通过消息队列将查找到的用户数据返回至所述逻辑处理模块;
所述服务器在所述数据库代理进程接收到所述查询请求时,通过所述数据库代理进程根据所述查询请求查询数据库以查找对应的用户数据,并通过所述数据库代理进程将查找到的用户数据返回至所述逻辑处理进程。进一步的,所述数据库代理进程通过消息队列将查找到的用户数据返回至所述逻辑处理进程之后,继续接收下一业务请求并进行对应的业务处理,使得所述数据库代理进程始终处于非阻塞状态。
所述逻辑处理模块20,还用于在接收到所述用户数据时,将所述用户数据保存至所述内存中,并返回对内存中的所述用户数据进行修改的步骤。
所述服务器在所述逻辑处理进程接收到所述用户数据时,通过所述逻辑处理进程将所述用户数据保存至所述内存中,所述逻辑处理进程对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理进程;在所述数据库代理进程接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
本实施例逻辑处理进程处理业务逻辑,并通过数据库代理进程处理数据库数据的拉取和回写,逻辑处理进程与数据库代理进程之间通过消息队列进行通信,实现了消息的异步处理,逻辑处理进程无需等待数据库代理进程回应,该逻辑处理进程即可继续处理下一业务,不会阻塞在等待数据库代理进程回应上;同时,只需要保证逻辑处理进程与数据库代理进程的数据传输协议统一,任何一方的代码改变都不会影响到另外一方,降低了各个进程间的耦合度;同时,通过消息队列可以在数据库代理进程处理不了时,将消息存储起来,不至于该数据库代理进程对应的服务不可用。同时通过共享内存缓存用户数据,各个逻辑处理进程在内存中进行业务操作,提高了系统运行效率,不用每次都从数据库中拉取数据。同时当进程意外崩溃时不会影响到内存的数据,只需要把对应的进程拉起来,对应的服务即可继续运行。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种服务器业务处理方法,其特征在于,所述服务器业务处理方法包括以下步骤:
通过网络进程接收来自客户端的业务请求;
在所述网络进程接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理进程;
在所述逻辑处理进程接收到所述业务请求时,根据所述业务请求进行对应的业务处理。
2.如权利要求1所述的服务器业务处理方法,其特征在于,所述业务处理包括对数据库内用户数据的修改,所述的在所述逻辑处理进程接收到所述业务请求时,根据所述业务请求进行对应的业务处理的步骤包括:
在所述逻辑处理进程接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据;
在所述逻辑处理进程查找到对应的用户数据时,对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理进程;
在所述数据库代理进程接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
3.如权利要求2所述的服务器业务处理方法,其特征在于,所述的在所述逻辑处理进程接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据的步骤之后,还包括:
在所述逻辑处理进程未查找到对应的用户数据时,通过消息队列发送查询请求至所述数据库代理进程;
在所述数据库代理进程接收到所述查询请求时,根据所述查询请求查询数据库,并通过消息队列将查找到的用户数据返回至所述逻辑处理进程;
在所述逻辑处理进程接收到所述用户数据时,将所述用户数据保存至所述内存中,并返回对内存中的所述用户数据进行修改的步骤。
4.如权利要求1所述的服务器业务处理方法,其特征在于,所述的在所述网络进程接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理进程的步骤包括:
在所述网络进程接收到所述业务请求时,确定所述业务请求对应的协议号,将所述业务请求通过消息队列发送至所述协议号对应的逻辑处理进程。
5.如权利要求1至4任一项所述的服务器业务处理方法,其特征在于,所述的通过网络进程接收来自客户端的业务请求的步骤之前,还包括:
在所述网络进程接收到客户端的连接请求时,建立与所述客户端之间的通信连接以接收所述客户端的业务请求。
6.一种服务器,其特征在于,所述服务器包括:
网络模块,用于接收来自客户端的业务请求;
所述网络模块,还用于在接收到所述业务请求时,将所述业务请求通过消息队列发送至对应的逻辑处理模块;
逻辑处理模块,用于在接收到所述业务请求时,根据所述业务请求进行对应的业务处理。
7.如权利要求6所述的服务器,其特征在于,所述业务处理包括对数据库内用户数据的修改,所述服务器还包括数据库代理模块、用于缓存用户数据的内存模块和用于保存用户数据的数据库;
所述逻辑处理模块,还用于在接收到所述业务请求时,在预设内存中查找所述业务请求对应的用户数据;
所述逻辑处理模块,还用于在查找到对应的用户数据时,对内存中的所述用户数据进行修改,并通过消息队列发送回写请求至数据库代理模块;
所述数据库代理模块,用于在接收到所述回写请求时,根据所述回写请求对数据库内的用户数据进行修改。
8.如权利要求7所述的服务器,其特征在于,所述逻辑处理模块,还用于在未查找到对应的用户数据时,通过消息队列发送查询请求至所述数据库代理模块;
所述数据库代理模块,还用于在接收到所述查询请求时,根据所述查询请求查询数据库,并通过消息队列将查找到的用户数据返回至所述逻辑处理模块;
所述逻辑处理模块,还用于在接收到所述用户数据时,将所述用户数据保存至所述内存中,并返回对内存中的所述用户数据进行修改的步骤。
9.如权利要求6所述的服务器,其特征在于,所述网络模块,还用于在接收到所述业务请求时,确定所述业务请求对应的协议号,将所述业务请求通过消息队列发送至所述协议号对应的逻辑处理模块。
10.如权利要求6至9任一项所述的服务器,其特征在于,所述网络模块,还用于在接收到客户端的连接请求时,建立与所述客户端之间的通信连接以接收所述客户端的业务请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610146518.5A CN105827604A (zh) | 2016-03-15 | 2016-03-15 | 服务器业务处理方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610146518.5A CN105827604A (zh) | 2016-03-15 | 2016-03-15 | 服务器业务处理方法及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105827604A true CN105827604A (zh) | 2016-08-03 |
Family
ID=56987854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610146518.5A Pending CN105827604A (zh) | 2016-03-15 | 2016-03-15 | 服务器业务处理方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105827604A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694083A (zh) * | 2017-04-07 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种服务器的数据处理方法和装置 |
CN109032767A (zh) * | 2018-07-26 | 2018-12-18 | 苏州科达科技股份有限公司 | 异步多进程的业务处理系统、方法、装置及存储介质 |
CN110311974A (zh) * | 2019-06-28 | 2019-10-08 | 东北大学 | 一种基于异步消息的云存储服务方法 |
CN110457379A (zh) * | 2019-07-31 | 2019-11-15 | 北京速通科技有限公司 | 一种业务处理的方法及其架构系统 |
CN112040259A (zh) * | 2020-08-28 | 2020-12-04 | 广州华多网络科技有限公司 | 一种连麦开播的方法、服务端、系统、存储介质及设备 |
CN113176969A (zh) * | 2021-04-23 | 2021-07-27 | 杭州迪普科技股份有限公司 | 服务提供方法、装置、设备及计算机可读存储介质 |
CN113384874A (zh) * | 2021-05-27 | 2021-09-14 | 深圳市大头互动文化传播有限公司 | 一种游戏异步解决方法 |
CN113765864A (zh) * | 2020-06-11 | 2021-12-07 | 北京京东振世信息技术有限公司 | 一种业务请求的处理方法和装置 |
CN114168233A (zh) * | 2021-11-16 | 2022-03-11 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916298A (zh) * | 2010-08-31 | 2010-12-15 | 深圳市赫迪威信息技术有限公司 | 数据库操作方法、设备及系统 |
CN102469064A (zh) * | 2010-11-03 | 2012-05-23 | 中兴通讯股份有限公司 | 通信实现方法及通信设备 |
CN103677988A (zh) * | 2013-12-11 | 2014-03-26 | 北京爱唯光石信息技术有限公司 | 用于软件系统的多进程通讯方法及系统 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN104932932A (zh) * | 2014-03-20 | 2015-09-23 | 腾讯科技(深圳)有限公司 | 一种业务异步处理方法、装置和系统 |
-
2016
- 2016-03-15 CN CN201610146518.5A patent/CN105827604A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916298A (zh) * | 2010-08-31 | 2010-12-15 | 深圳市赫迪威信息技术有限公司 | 数据库操作方法、设备及系统 |
CN102469064A (zh) * | 2010-11-03 | 2012-05-23 | 中兴通讯股份有限公司 | 通信实现方法及通信设备 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN103677988A (zh) * | 2013-12-11 | 2014-03-26 | 北京爱唯光石信息技术有限公司 | 用于软件系统的多进程通讯方法及系统 |
CN104932932A (zh) * | 2014-03-20 | 2015-09-23 | 腾讯科技(深圳)有限公司 | 一种业务异步处理方法、装置和系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694083A (zh) * | 2017-04-07 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种服务器的数据处理方法和装置 |
CN109032767A (zh) * | 2018-07-26 | 2018-12-18 | 苏州科达科技股份有限公司 | 异步多进程的业务处理系统、方法、装置及存储介质 |
CN110311974A (zh) * | 2019-06-28 | 2019-10-08 | 东北大学 | 一种基于异步消息的云存储服务方法 |
CN110457379A (zh) * | 2019-07-31 | 2019-11-15 | 北京速通科技有限公司 | 一种业务处理的方法及其架构系统 |
CN113765864A (zh) * | 2020-06-11 | 2021-12-07 | 北京京东振世信息技术有限公司 | 一种业务请求的处理方法和装置 |
CN113765864B (zh) * | 2020-06-11 | 2023-06-23 | 北京京东振世信息技术有限公司 | 一种业务请求的处理方法和装置 |
CN112040259A (zh) * | 2020-08-28 | 2020-12-04 | 广州华多网络科技有限公司 | 一种连麦开播的方法、服务端、系统、存储介质及设备 |
CN113176969A (zh) * | 2021-04-23 | 2021-07-27 | 杭州迪普科技股份有限公司 | 服务提供方法、装置、设备及计算机可读存储介质 |
CN113384874A (zh) * | 2021-05-27 | 2021-09-14 | 深圳市大头互动文化传播有限公司 | 一种游戏异步解决方法 |
CN114168233A (zh) * | 2021-11-16 | 2022-03-11 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105827604A (zh) | 服务器业务处理方法及服务器 | |
CN104346433B (zh) | 用于数据库查询操作的可缩放加速的方法和系统 | |
CN104780080B (zh) | 深度报文检测方法及系统 | |
CN105608159B (zh) | 数据缓存的方法和装置 | |
CN106649630A (zh) | 数据查询方法及装置 | |
CN112261094B (zh) | 一种报文处理方法及代理服务器 | |
CN111241138B (zh) | 数据匹配方法及装置 | |
CN103139253B (zh) | 实现网卡卸载功能的方法、网卡、主机系统及网络设备 | |
CN109274730A (zh) | 物联网系统、mqtt消息传输的优化方法及装置 | |
US20170214759A1 (en) | Optimizer module in high load client/server systems | |
CN111538605B (zh) | 一种分布式数据访问层中间件及命令执行方法和装置 | |
CN109379445A (zh) | 一种推送消息的发送方法及装置 | |
CN101657032A (zh) | 网络计算服务方法、系统及移动终端 | |
CN111736982B (zh) | 一种5g数据转发平面的数据转发处理方法和服务器 | |
CN104780234A (zh) | Ip归属地查询方法、装置及系统 | |
CN111191103B (zh) | 从互联网中识别分析企业主体信息方法、装置及存储介质 | |
CN111159213A (zh) | 一种数据查询方法、装置、系统和存储介质 | |
CN102195881A (zh) | 一种端口信息更新的方法、装置及系统 | |
CN115617859A (zh) | 基于知识图谱集群的数据查询方法和装置 | |
EP4416609A1 (en) | Parallel fetching of query result data | |
CN115357606A (zh) | 数据源查询方法、系统、计算机设备和存储介质 | |
CN104484400A (zh) | 数据查询处理方法及装置 | |
CN117640513A (zh) | 一种数据处理方法、装置和系统 | |
CN100531141C (zh) | 一种路由方法以及实现该方法的系统 | |
US20210377718A1 (en) | Pattern affinity for discovery |
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: 20160803 |
|
RJ01 | Rejection of invention patent application after publication |