本技术实施例涉及数据库,特别涉及一种请求处理方法、装置、设备及可读存储介质。
背景技术:
1、在数据库技术领域中,存在主节点和只读节点,主节点支持读操作和写操作,而只读节点仅支持读操作,通过主节点和只读节点,实现了数据库的读写分离。
2、相关技术中,客户端可以在事务执行过程中向代理服务器发送读请求和写请求中的至少一项。代理服务器接收到写请求,将该写请求转发至主节点。代理服务器接收到读请求,若在该读请求之前未接收到写请求,则将该读请求转发至只读节点,若在该读请求之前已接收到写请求,则将该读请求转发至主节点。
3、上述技术中,代理服务器将事务执行过程中第一个写请求之前的读请求转发至只读节点,将第一个写请求之后的读请求转发至主节点。由于主节点依旧需要对读请求进行处理,使得主节点存在一定的负载压力。
技术实现思路
1、本技术提供了一种请求处理方法、装置、设备及可读存储介质,可降低主节点的负载压力,所述技术方案包括如下内容。
2、第一方面,提供了一种请求处理方法,所述方法包括:
3、获取客户端在目标事务的执行过程中发送的读请求,所述读请求用于读取第一数据;
4、若所述第一数据是在所述目标事务的执行过程中写入的数据,则确定第一写入日志的标识,所述第一写入日志用于记录所述第一数据的写入信息;
5、向只读节点发送所述读请求和所述第一写入日志的标识;
6、将所述只读节点发送的基于所述读请求和所述第一写入日志的标识读取的第一数据转发至所述客户端。
7、第二方面,提供了一种请求处理方法,所述方法包括:
8、获取代理服务器转发的读请求,所述读请求是客户端在目标事务的执行过程中向所述代理服务器发送的,且用于读取第一数据;
9、获取所述代理服务器在第一情况下发送的第一写入日志的标识,所述第一情况为所述第一数据是在所述目标事务的执行过程中写入的数据,所述第一写入日志用于记录所述第一数据的写入信息;
10、基于所述读请求和所述第一写入日志的标识读取所述第一数据;
11、向所述代理服务器发送所述第一数据。
12、第三方面,提供了一种请求处理方法,所述方法包括:
13、获取代理服务器在第二情况下转发的读请求,所述读请求是客户端在目标事务的执行过程中向所述代理服务器发送的,且用于读取第一数据,所述第二情况是只读节点在设定时间内基于所述读请求和第一写入日志的标识未读取到所述第一数据,所述第一写入日志用于记录所述第一数据的写入信息;
14、基于所述读请求读取所述第一数据;
15、向所述代理服务器发送所述第一数据。
16、第四方面,提供了一种请求处理装置,所述装置包括:
17、获取模块,用于获取客户端在目标事务的执行过程中发送的读请求,所述读请求用于读取第一数据;
18、确定模块,用于若所述第一数据是在所述目标事务的执行过程中写入的数据,则确定第一写入日志的标识,所述第一写入日志用于记录所述第一数据的写入信息;
19、发送模块,用于向只读节点发送所述读请求和所述第一写入日志的标识;
20、接收模块,用于接收所述只读节点发送的基于所述读请求和所述第一写入日志的标识读取的第一数据;
21、所述发送模块,还用于将所述第一数据发送至所述客户端。
22、在一种可能的实现方式中,所述接收模块,还用于接收所述客户端发送的所述目标事务的事务开启请求;
23、所述发送模块,还用于将所述事务开启请求发送至主节点;
24、所述获取模块,还用于获取所述主节点反馈的第一确认信息,所述第一确认信息中携带基于所述事务开启请求生成的所述目标事务的事务标识;
25、所述装置还包括:
26、提取模块,用于从所述第一确认信息中提取出所述事务标识,将提取后的第一确认信息作为第二确认信息;
27、所述发送模块,还用于向所述客户端发送所述第二确认信息,所述第二确认信息用于提示所述客户端已成功开启所述目标事务。
28、在一种可能的实现方式中,所述发送模块,还用于若所述第一数据不是在所述目标事务的执行过程中写入的数据,则向所述只读节点发送所述读请求;
29、所述接收模块,还用于接收所述只读节点发送的基于所述读请求读取的第一数据;
30、所述发送模块,还用于将所述第一数据发送至所述客户端。
31、在一种可能的实现方式中,所述装置还包括:
32、分析模块,用于若接收到所述只读节点基于所述读请求和所述第一写入日志的标识反馈的错误信息,对所述错误信息进行分析,得到分析结果;
33、所述发送模块,还用于若所述分析结果为所述只读节点在设定时间内基于所述读请求和所述第一写入日志的标识未读取到所述第一数据,向主节点发送所述读请求;
34、所述接收模块,还用于接收所述主节点发送的基于所述读请求读取的第一数据;
35、所述发送模块,还用于将所述第一数据发送至所述客户端。
36、在一种可能的实现方式中,所述接收模块,还用于接收所述客户端发送的写请求;
37、所述发送模块,还用于将所述写请求发送至主节点,所述写请求用于写入第二数据;
38、所述获取模块,还用于获取所述主节点反馈的第三确认信息,所述第三确认信息中携带第二写入日志的标识,所述第二写入日志用于记录所述第二数据的写入信息;
39、所述提取模块,还用于从所述第三确认信息中提取出所述第二写入日志的标识,将提取后的第三确认信息作为第四确认信息;
40、所述发送模块,还用于向所述客户端发送所述第四确认信息,所述第四确认信息用于提示所述客户端已成功写入所述第二数据。
41、第五方面,提供了一种请求处理装置,所述装置包括:
42、获取模块,用于获取代理服务器转发的读请求,所述读请求是客户端在目标事务的执行过程中向所述代理服务器发送的,且用于读取第一数据;
43、所述获取模块,还用于获取所述代理服务器在第一情况下发送的第一写入日志的标识,所述第一情况为所述第一数据是在所述目标事务的执行过程中写入的数据,所述第一写入日志用于记录所述第一数据的写入信息;
44、读取模块,用于基于所述读请求和所述第一写入日志的标识读取所述第一数据;
45、发送模块,用于向所述代理服务器发送所述第一数据。
46、在一种可能的实现方式中,所述读取模块,用于获取所述代理服务器转发的所述目标事务的事务标识,所述事务标识是主节点基于所述目标事务的事务开启请求生成并向所述代理服务器发送的;若基于所述事务标识和所述第一写入日志的标识确定在设定时间内接收到所述主节点发送的所述第一写入日志和上文写入日志,则基于所述读请求、所述第一写入日志和所述上文写入日志读取所述第一数据,所述上文写入日志用于记录所述目标事务的执行过程中所述第一数据之前的数据的写入信息。
47、在一种可能的实现方式中,所述装置还包括:
48、生成模块,用于若基于所述事务标识和所述第一写入日志的标识确定在设定时间内未接收到所述主节点发送的所述第一写入日志和所述上文写入日志中的至少一项,则生成错误信息;
49、所述发送模块,还用于向所述代理服务器发送所述错误信息。
50、在一种可能的实现方式中,若所述第一数据不是在所述目标事务的执行过程中写入的数据,所述读取模块,还用于基于所述读请求读取所述第一数据;
51、所述发送模块,还用于向所述代理服务器发送所述第一数据。
52、第六方面,提供了一种请求处理装置,所述装置包括:
53、获取模块,用于获取代理服务器在第二情况下转发的读请求,所述读请求是客户端在目标事务的执行过程中向所述代理服务器发送的,且用于读取第一数据,所述第二情况是只读节点在设定时间内基于所述读请求和第一写入日志的标识未读取到所述第一数据,所述第一写入日志用于记录所述第一数据的写入信息;
54、读取模块,用于基于所述读请求读取所述第一数据;
55、发送模块,用于向所述代理服务器发送所述第一数据。
56、在一种可能的实现方式中,所述获取模块,还用于获取所述代理服务器转发的所述目标事务的事务开启请求,所述事务开启请求是所述客户端向所述代理服务器发送的;
57、所述装置还包括:
58、生成模块,用于基于所述事务开启请求生成所述目标事务的事务标识;
59、所述发送模块,还用于向所述代理服务器发送第一确认信息,所述第一确认信息中携带所述事务标识。
60、在一种可能的实现方式中,所述获取模块,还用于获取所述代理服务器转发的写请求,所述写请求是所述客户端向所述代理服务器发送的,且用于写入第二数据;
61、所述装置还包括:
62、生成模块,用于基于所述写请求生成第二写入日志,所述第二写入日志用于记录所述第二数据的写入信息;
63、所述发送模块,还用于向所述代理服务器发送第三确认信息,所述第三确认信息中携带所述第二写入日志的标识。
64、第七方面,提供了一种请求处理系统,所述系统包括客户端、代理服务器和只读节点,所述系统包括:
65、所述代理服务器获取所述客户端在目标事务的执行过程中发送的读请求,所述读请求用于读取第一数据;
66、若所述第一数据是在所述目标事务的执行过程中写入的数据,则所述代理服务器确定第一写入日志的标识,并向所述只读节点发送所述读请求和所述第一写入日志的标识,所述第一写入日志用于记录所述第一数据的写入信息;
67、所述只读节点基于所述读请求和所述第一写入日志的标识读取所述第一数据,并向所述代理服务器发送所述第一数据;
68、所述代理服务器接收所述只读节点发送的所述第一数据,将所述第一数据发送至所述客户端。
69、在一种可能的实现方式中,所述系统还包括主节点,所述系统还包括:
70、若所述只读节点基于所述读请求和所述第一写入日志的标识,在设定时间内未读取到所述第一数据,则生成错误信息并向所述代理服务器发送所述错误信息;
71、所述代理服务器对所述错误信息进行分析,得到分析结果;
72、若所述分析结果为所述只读节点在所述设定时间内基于所述读请求和所述第一写入日志的标识未读取到所述第一数据,则所述代理服务器向所述主节点发送所述读请求;
73、所述主节点基于所述读请求读取所述第一数据,并向所述代理服务器发送所述第一数据;
74、所述代理服务器接收所述主节点发送的所述第一数据,并将所述第一数据发送至所述客户端。
75、第八方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以使所述电子设备实现上述第一方面至第三方面任一所述的请求处理方法。
76、第九方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以使电子设备实现上述第一方面至第三方面任一所述的请求处理方法。
77、第十方面,还提供了一种计算机程序或计算机程序产品,所述计算机程序或计算机程序产品中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以使电子设备实现上述第一方面至第三方面任一所述的请求处理方法。
78、本技术提供的技术方案至少带来如下有益效果:
79、本技术提供的技术方案中,如果读请求对应的第一数据是在目标事务的执行过程中写入的数据,则向只读节点发送读请求和第一写入日志的标识。由于第一写入日志记录了第一数据的写入信息,因此,只读节点能够基于读请求和第一写入日志的标识读取到第一数据,实现了将目标事务的执行过程中写请求之后的读请求发送给只读节点,通过只读节点读取数据。与相关技术通过主节点基于写请求之后的读请求读取数据相比,本技术通过只读节点基于写请求之后的读请求读取数据,可以降低主节点的负载压力。