发明内容
为解决上述的现有技术问题中多个前端的会话更新的及时性不够和会话数据的一致性不稳定的问题的至少其一,本发明的目的在于提供一种会话更新的及时性更好以及会话数据的一致性更稳定的用户会话服务系统、用户会话的分布式管理方法及装置。
为实现上述发明目的,本发明一实施方式提供一种用户会话的分布式管理方法,包括如下步骤:
将用户会话服务模拟从数据库与主数据库之间的交互协议;
基于所述交互协议,建立所述用户会话服务与所述主数据库之间的连接;
向所述主数据库发送请求协议,其中,所述请求协议包括要求获取在所述主数据库中的第一前端的变更数据;
接收变更日志,其中,所述变更日志是在所述主数据库中根据所述变更数据写入的日志;
解析所述变更日志,得到所述变更数据;
将所述变更数据推送到第二前端。
作为本发明的进一步改进,所述模拟从数据库与主数据库之间的交互协议包括:
模拟交互协议消息的格式,模拟通信端口,以及模拟数据传输方式中的至少其中若干,以使所述主数据库基于所述交互协议将交互的对象由所述用户会话服务判断为从数据库。
作为本发明的进一步改进,所述步骤向所述主数据库发送请求协议包括:
向所述主数据库发送dump协议。
作为本发明的进一步改进,所述主数据库中的变更数据的获取过程包括:
接收数据库操作请求,其中,所述数据库操作请求中包括所述变更数据,所述变更数据是服务器获取的由所述第一前端上传的数据;
根据所述数据库操作请求,将所述主数据库中与所述变更数据相关的数据替换为所述变更数据,且该操作请求记录在所述主数据库中的变更日志中。
作为本发明的进一步改进,所述用户会话服务包括数据呈现模块,所述数据呈现模块使用redis作为数据的存储和缓存机制,所述步骤将所述变更数据推送到第二前端包括:
所述数据呈现模块将所述变更数据输入所述第二前端。
作为本发明的进一步改进,所述用户会话的内容包括登录状态、用户头像、用户权限、会话令牌、用户个性化设置等与用户相关的信息。
作为本发明的进一步改进,所述主数据库为关系型数据库,所述变更日志是二进制格式的日志。
为实现上述发明目的之一,本发明一实施例提供了一种用户会话的分布式管理装置,包括:
模拟模块,用于将用户会话服务模拟从数据库与主数据库之间的交互协议;
连接模块,用于基于所述交互协议,建立所述用户会话服务与所述主数据库之间的连接;
发送模块,用于向所述主数据库发送请求协议,其中,所述请求协议包括要求获取在所述主数据库中的第一前端的变更数据;
接收模块,用于接收变更日志,其中,所述变更日志是在所述主数据库中根据所述变更数据写入的日志;
解析模块,用于解析所述变更日志,得到所述变更数据;
推送模块,用于将所述变更数据推送到第二前端。
为实现上述发明目的之一,本发明一实施例提供了一种电子设备,包括:
存储模块,存储计算机程序;
处理模块,执行所述计算机程序时可实现上述的用户会话的分布式管理方法中的步骤。
为实现上述发明目的之一,本发明一实施例提供了一种用户会话服务系统,包括:
多个前端,所述前端用于与用户交互;
服务器,每个前端均可与主数据库单独的数据交互,在所述服务器上执行用户会话服务;
数据库,其连接所述服务器,所述数据库以预定义的关系组织数据,所述数据库包括主数据库和从数据库;
当其一前端产生变更数据时,所述主数据库中获取所述变更数据,所述服务器通过模拟所述从数据库与所述主数据库之间的交互协议、与所述主数据库之间建立连接,所述服务器接收所述主数据库中的数据,并将其解析出变更数据后传输到另一前端。
为实现上述发明目的之一,本发明一实施例提供了一种可读存储介质,其存储有计算机程序,该计算机程序被处理模块执行时可实现上述的用户会话的分布式管理方法中的步骤。
与现有技术相比,本发明具有以下有益效果:该用户会话的分布式管理方法及装置,通过将服务器伪装成从数据库,继而可以直接获取主数据库的变更数据并实时同步到会话服务,消除了依赖API通信的时机问题,同时也解决了由于遗漏或沟通问题导致的会话不一致性。这样能够提高会话更新的及时性和数据一致性,增强了系统的稳定性和用户体验。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
本发明一实施例提供一种会话更新的及时性更好以及会话数据的一致性更稳定的用户会话服务系统、用户会话的分布式管理方法及装置。
用户会话服务系统
用户会话服务系统如图1所示,包括多个前端、服务器和数据库,其中,前端用于与用户交互,前端可以是客户端,例如app端、电脑端、网页端,图1中为示出区别,分别命名为第一前端、第二前端……第n前端。
每个前端均可与所述主数据库单独的数据交互,在所述服务器上执行用户会话服务。服务器中可以包括数据接收模块、数据处理模块和数据呈现模块。
数据库连接所述服务器,所述数据库以预定义的关系组织数据。所述数据库包括主数据库和从数据库。若在一前端发生数据更改,则会经过数据传递,主数据库接到指令,执行数据更改操作。在主数据库数据更改操作结束后,基于从数据库与主数据库之间的交互协议,可以将数据变更写入变更日志,从数据库将主数据库的变更日志拷贝到从数据库的中继日志,然后从数据库重放中继日志中的事件,完成从数据库的数据变更的同步。
进一步地,本实施例的所述主数据库为关系型数据库。
在主数据库和从数据库之间的交互中,从数据库复制来自主数据库的数据和更改操作。关系型数据库的从数据库的交互协议是指从数据库与主数据库之间进行通信和交互的规则和约定。这些协议规定了从数据库应该如何请求来自主数据库的数据,以及主数据库应该如何回应从数据库的请求。关系型数据库的交互协议需要确保数据的一致性和可靠性,从数据库必须按照协议中规定的步骤和方式获取二进制日志,并正确地应用这些日志,以保持与主数据库的数据同步。
另外,所述变更日志是二进制格式的日志。二进制日志用于记录数据库中发生的所有修改操作,例如插入、更新和删除数据等。这些修改操作被写入一个二进制格式的日志文件中,因此也称为"binary log"。
用户会话的内容包括登录状态、用户头像、用户权限、会话令牌、用户个性化设置等与用户相关的信息;当存在多个前端时,涉及到不同前端之间的数据同步问题,即本实施例涉及多个前端操作的数据,同时对应同一个数据库,如何同步这些前端显示数据的问题。
本实施例对应的场景,可以是一个公司同时有多款客户端,用户可能在任一客户端上修改数据,需要将该修改同步到其他的客户端中。如背景技术所述,现有的各个前端,一般是以API的方式向需求方发起HTTP请求,来实现用户会话的更新和维护,但是会出现会话更新的及时性不够、以及会话数据的一致性不稳定的问题。例如在一个客户端的修改没有能够同步到其他客户端中,举例而言,若用户在一个客户端中的用户会话内容为购买了某项权益,但是若其他客户端中没有同步该权益,则大大影响用户的使用体验。本实施例致力于解决该问题,具体解决方法通过将服务器伪装成从数据库解决,具体内容参下文所述。
用户会话的分布式管理方法
下面结合图2,说明本发明一实施例提供的一种用户会话的分布式管理方法,虽然本申请提供了如下述实施方式或流程图所示的方法操作步骤,但是基于常规或者无需创造性的劳动,所述方法在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施方式中所提供的执行顺序。
本实施例的用户会话的分布式管理方法,包括如下步骤:
步骤S10:将用户会话服务模拟从数据库与主数据库之间的交互协议。
模拟从数据库与主数据库之间的交互协议包括:
模拟交互协议消息的格式,模拟通信端口,以及模拟数据传输方式中的至少其中若干,以使所述主数据库基于所述交互协议将交互的对象由所述用户会话服务判断为从数据库。
基于上文的“用户会话服务系统”中的对交互协议的描述,可知当服务器与主数据库之间的交互方式模拟主数据库与从数据库之间的交互协议后,服务器即可伪装为从数据库,后续与主数据库的交互方式,直接可以获取上文的变更日志。
另外,上述的模拟过程,在MySQL环境中,可以使用MySQL复制协议(MySQLReplication Protocol)来模拟从数据库与主数据库之间的通信。
步骤S20:基于所述交互协议,建立所述用户会话服务与所述主数据库之间的连接。
步骤S20中,服务器通过数据接收模块与主数据库建立连接,就像真正的从数据库与主数据库连接一样。其中可以涉及与指定主数据库的连接信息,例如主机名、端口号、用户名和密码等。
步骤S30:向所述主数据库发送请求协议,其中,所述请求协议包括要求获取在所述主数据库中的第一前端的变更数据。
其中,基于上文的数据库可以是关系型数据库,请求协议可以是dump协议。一旦数据接收模块与主数据库的连接建立,数据接收模块会向主数据库发送特定的请求,通常是"dump协议"请求,该请求告诉主数据库要获取哪些数据以及从哪里开始获取。
其中,所述主数据库中的变更数据的获取过程包括:
接收数据库操作请求,其中,所述数据库操作请求中包括所述变更数据,所述变更数据是服务器获取的由所述第一前端上传的数据;
根据所述数据库操作请求,将所述主数据库中与所述变更数据相关的数据替换为所述变更数据,且该操作请求记录在所述主数据库中的变更日志中。
步骤S40:接收变更日志,其中,所述变更日志是在所述主数据库中根据所述变更数据写入的日志。
上述步骤S10~S40过程即已经得到了对应的变更内容,该过程允许服务器通过模拟关系型数据库中的从数据库的交互协议,向主数据库发送"dump协议"请求,以获取主数据库的变更数据。一旦获取到这些数据,用户会话服务可以相应地更新会话信息,确保它们反映了主数据库中的最新状态。这种机制有助于保持用户会话的实时性和一致性,解决了现有技术以API的方式向需求方发起HTTP请求实现用户会话的更新和维护时,会出现的会话更新的及时性不够、以及会话数据的一致性不稳定的问题。
步骤S50:解析所述变更日志,得到所述变更数据。
服务器中的数据处理模块负责解析从主数据库收到的变更日志的对象。这些变更日志的对象包含了数据库中发生的数据变更操作,例如登录状态、用户头像、用户权限、会话令牌、用户个性化设置等与用户相关的信息等。
解析变更日志后,数据处理模块能够识别出哪些数据发生了变更,例如用户头像的URL或ID。
步骤S60:将所述变更数据推送到第二前端。
其中,可以是由服务器中的数据呈现模块将变更数据推送到第二前端。所述数据呈现模块使用redis作为数据的存储和缓存机制,数据呈现模块负责接收来自数据输出模块的数据变更通知,并在Redis缓存中执行相应的数据更新操作。例如,如果是头像变更,数据呈现模块会将新的头像数据存储在Redis缓存中,以供后续请求访问。Redis是一种高性能的内存数据库,它能够迅速处理高并发请求。因此,数据呈现模块可以有效地处理来自多个前端系统的请求,确保它们都能及时获得最新的数据。
然后所述数据呈现模块将所述变更数据输入所述第二前端,其中,第二前端是区别于第一前端的另一前端,第二前端可以将该数据呈现出来。所有接入数据呈现模块的前端,无论是网页应用、移动应用还是其他类型的应用,都可以通过查询Redis缓存来获取最新的数据。这意味着它们能够及时呈现用户头像的修改或其他数据变更。
步骤S50和S60通过解析变更日志、数据的推送和Redis缓存来确保数据的实时性和一致性。一旦主数据库中的数据发生变更,这个机制会迅速将变更的数据同步到Redis缓存中,以供多个前端系统快速访问,实现了对用户会话的有效的分布式管理,从而保证了用户体验的流畅性和数据的一致性。这种架构适用于需要高并发访问的系统,如社交媒体平台或电子商务网站。
下面以用户会话的内容是用户在第一前端修改了头像为例,对用户会话的分布式管理方法的具体阐述,分别从主数据库修改头像数据、服务器伪装从数据库、前端更新数据三个方面进行说明:
(1)主数据库修改头像数据
首先,用户在第一前端修改的头像数据,然后经过层层数据传递,最后关系型数据库中的主数据库接到指令,执行变更头像的操作。
具体地,可以是修改的头像数据先经过前端处理,前端应用可能会对上传的头像进行处理,例如进行图像压缩或格式转换,以确保它符合系统的要求。然后经过层层数据传递,具体是新的头像数据被封装为一个请求或指令,并通过网络传递到后端的服务器中,后端服务器可以对请求进行身份验证,确保用户有权限执行这个操作,并且请求的数据是合法的。然后执行与修改头像相关的业务逻辑,包括将新头像存储到关系型数据库中,服务器会向关系型数据库发送一个数据库操作请求,以执行头像的变更操作。这个请求包括更新数据库中与用户相关的头像数据的SQL语句。关系型数据库接收到请求后,执行了相应的SQL语句,将主数据库中的头像数据更新为新的值。这个操作请求将被记录在数据库的二进制日志中,以便后续同步到其他服务。
可选地,关系型数据库中的从数据库也可以同步修改该头像数据,具体过程参上文“用户会话服务系统”中的描述。
这个过程涉及了从第一前端应用到后端服务器再到关系型数据库的数据传递和处理。最终,主数据库中的数据被更新,即更新了用户的新头像信息。这个过程另外还可以包括错误处理和安全性措施,以确保数据的一致性和用户信息的安全。
(2)服务器伪装从数据库
结合上文的步骤S10~S40,开始执行用户会话的分布式管理方法中的步骤:
首先,服务器发起一个与主数据库的连接请求,然后数据接收模块通过与主数据库建立的连接,向主数据库发送一个"dump协议"请求。这个请求包括了所需数据的相关信息,比如要获取哪些表的变更数据以及从哪个位置开始获取。
然后,主数据库收到了来自用户会话服务的"dump协议"请求。这个请求告诉主数据库有关所需数据的详细信息,再根据"dump请求"开始将相应的变更日志(二进制日志,binary log)事件推送给伪装成从数据库的服务器,这其中包括了更新的头像数据。
服务器的数据接收模块接收到变更日志,这些日志包含了数据库的数据变更操作,例如头像的更新。
服务器的数据处理模块根据接收到的变更日志,执行相应的数据变更操作,例如将新的头像数据保存或更新到会话信息中。通过接收并处理主数据库发送的变更日志,用户会话服务成功地获取了头像数据的变更信息,并将这些变更同步到自己的会话信息中。这确保了服务器的数据与主数据库的数据保持一致。
(3)前端更新数据
结合上文的步骤S50~S60,先由服务器中的数据处理模块负责解析从主数据库收到的变更日志的对象,得到用户头像的变更数据,然后将该变更推送到数据呈现模块,数据呈现模块会将新的头像数据存储在Redis缓存中,以供其他前端的请求访问。
然后所述数据呈现模块将所述变更数据输入所述第二前端,在第二前端呈现用户头像的修改。
基于上述步骤,在第一前端中修改的头像数据,在第二前端中得到了同样的头像更新。
与现有技术相比,本实施例具有以下有益效果:
该用户会话的分布式管理方法及装置,通过将服务器伪装成从数据库,继而可以直接获取主数据库的变更数据并实时同步到会话服务,消除了依赖API通信的时机问题,同时也解决了由于遗漏或沟通问题导致的会话不一致性。这样能够提高会话更新的及时性和数据一致性,增强了系统的稳定性和用户体验。
用户会话的分布式管理装置
在一个实施例中,提供了一种用户会话的分布式管理装置,如图3所示。该用户会话的分布式管理装置包括的模块、以及各模块具体功能如下:
模拟模块,用于将用户会话服务模拟从数据库与主数据库之间的交互协议;
连接模块,用于基于所述交互协议,建立所述用户会话服务与所述主数据库之间的连接;
发送模块,用于向所述主数据库发送请求协议,其中,所述请求协议包括要求获取在所述主数据库中的第一前端的变更数据;
接收模块,用于接收变更日志,其中,所述变更日志是在所述主数据库中根据所述变更数据写入的日志;
解析模块,用于解析所述变更日志,得到所述变更数据;
推送模块,用于将所述变更数据推送到第二前端。
需要说明的是,本发明实施例的用户会话的分布式管理装置中未披露的细节,请参照本发明实施例的用户会话的分布式管理方法中所披露的细节。
本领域技术人员可以理解,所述模块示意图仅仅是用户会话的分布式管理装置的示例,并不构成对用户会话的分布式管理装置的终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如用户会话的分布式管理装置还可以包括输入输出设备、网络接入设备、总线等。
用户会话的分布式管理装置还可以包括计算机、笔记本、掌上电脑及云端服务器等计算设备,以及包括但不限于处理模块、存储模块、以及存储在存储模块中并可在处理模块上运行的计算机程序,例如上述的X方法程序。所述处理模块执行所述计算机程序时实现上述各个用户会话的分布式管理方法实施例中的步骤,例如图2所示的步骤。
另外,本发明还提出了一种电子设备,其包括存储模块和处理模块,处理模块执行所述计算机程序时可实现上述的用户会话的分布式管理方法中的步骤,也就是说,实现上述用户会话的分布式管理方法中的任意一个技术方案中的步骤。
该电子设备可以是集成于用户会话的分布式管理装置内的一部分、或者是本地的终端设备、还可以是云端服务器的一部分。
处理模块可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器,也可以是任何常规的处理器。处理模块是用户会话的分布式管理装置的控制中心,利用各种接口和线路连接整个用户会话的分布式管理装置的各个部分。
存储模块可用于存储所述计算机程序和/或模块,处理模块通过运行或执行存储在存储模块内的计算机程序和/或模块,以及调用存储在存储模块内的数据,实现用户会话的分布式管理装置的各种功能。存储模块可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储模块可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在存储模块中,并由处理模块执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在用户会话的分布式管理装置中的执行过程。
进一步地,本发明一实施例提供了一种可读存储介质,其存储有计算机程序,该计算机程序被处理模块执行时可实现上述的用户会话的分布式管理方法中的步骤,也就是说,实现上述用户会话的分布式管理方法中的任意一个技术方案中的步骤。
所述用户会话的分布式管理方法集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理模块执行时,可实现上述各个方法实施例的步骤。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、∪盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。