用户上下文信息的获取方法和装置与流程

文档序号:19104968发布日期:2019-11-12 22:34阅读:539来源:国知局
用户上下文信息的获取方法和装置与流程

本申请涉及互联网技术领域,尤其涉及一种用户上下文信息的获取方法和装置。



背景技术:

在系统中获取当前的操作用户是一种很常见场景,在网页(web)应用中一般通过网站缓存(cookie)或会话(session)共享等方式保存用户会话信息,但是在网状的分布式系统中,尤其是在业务(Service)端,用户的上下文信息就丢失了。

现有技术中,在对Service做数据库(Database;以下简称:DB)操作时一般是由应用方显式在接口的参数中设定或传递操作用户的上下文信息,但是上述方法不仅重复繁琐,而且传递参数的过程中容易遗漏出错,使用起来很不方便。



技术实现要素:

本申请的目的旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本申请的第一个目的在于提出一种用户上下文信息的获取方法。通过该方法,业务应用服务器在被调用之后,可以通过上下文管理器获取上述业务应用服务器的线程缓存中保存的当前操作用户的上下文信息,从而可以实现在分布式系统中业务应用服务器端获取当前操作用户的上下文信息,进而可以增加业务应用的可复用性,也可避免在接口参数里显示传递用户的上下文信息带来的不便和漏传参数带来的数据错误。

本申请的第二个目的在于提出一种用户上下文信息的获取装置。

为了实现上述目的,本申请第一方面实施例的用户上下文信息的获取方法,应用在分布式系统中,所述分布式系统包括网页应用服务器、远程过程调用协议中间件和业务应用服务器,所述方法包括:所述业务应用服务器接收远程调用请求;所述业务应用服务器向上下文管理器发送上下文查询请求,以使所述上下文管理器从所述业务应用服务器的线程缓存中获取当前操作用户的上下文信息;所述业务应用服务器接收所述上下文管理器发送的当前操作用户的上下文信息。

本申请实施例的用户上下文信息的获取方法,应用在分布式系统中,上述分布式系统包括网页应用服务器、远程过程调用协议(Remote Procedure Call Protocol;以下简称:RPC)中间件和业务应用服务器,业务应用服务器接收远程调用请求之后,向上下文管理器发送上下文查询请求,以使上下文管理器从上述业务应用服务器的线程缓存中获取当前操作用户的上下文信息,然后业务应用服务器接收上述上下文管理器发送的当前操作用户的上下文信息,从而可以实现业务应用服务器在被调用之后,通过上下文管理器获取上述业务应用服务器的线程缓存中保存的当前操作用户的上下文信息,从而可以实现在分布式系统中业务应用服务器端获取当前操作用户的上下文信息,进而可以增加业务应用的可复用性,也可避免在接口参数里显式传递用户的上下文信息带来的不便和漏传参数带来的数据错误。

为了实现上述目的,本申请第二方面实施例的用户上下文信息的获取装置,应用在分布式系统中,所述分布式系统包括网页应用服务器、远程过程调用协议中间件和业务应用服务器,所述用户上下文信息的获取装置设置在所述业务应用服务器中,所述用户上下文信息的获取装置包括:接收模块,用于接收远程调用请求;发送模块,用于向上下文管理器发送上下文查询请求,以使所述上下文管理器从所述业务应用服务器的线程缓存中获取当前操作用户的上下文信息;所述接收模块,还用于接收所述上下文管理器发送的当前操作用户的上下文信息。

本申请实施例的用户上下文信息的获取装置,应用在分布式系统中,上述分布式系统包括网页应用服务器、RPC中间件和业务应用服务器,上述用户上下文信息的获取装置设置在业务应用服务器中,接收模块接收远程调用请求之后,发送模块向上下文管理器发送上下文查询请求,以使上下文管理器从上述业务应用服务器的线程缓存中获取当前操作用户的上下文信息,然后接收模块接收上述上下文管理器发送的当前操作用户的上下文信息,从而可以实现业务应用服务器在被调用之后,通过上下文管理器获取上述业务应用服务器的线程缓存中保存的当前操作用户的上下文信息,从而可以实现在分布式系统中业务应用服务器端获取当前操作用户的上下文信息,进而可以增加业务应用的可复用性,也可避免在接口参数里显式传递用户的上下文信息带来的不便和漏传参数带来的数据错误。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本申请用户上下文信息的获取方法一个实施例的流程图;

图2为本申请分布式系统一个实施例的结构示意图;

图3为本申请上下文管理器获取当前操作用户的上下文信息一个实施例的示意图;

图4为本申请用户上下文信息的获取方法另一个实施例的流程图;

图5为本申请用户上下文信息的获取方法再一个实施例的流程图;

图6为本申请用户上下文信息的获取装置一个实施例的结构示意图;

图7为本申请用户上下文信息的获取装置另一个实施例的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。

图1为本申请用户上下文信息的获取方法一个实施例的流程图。本申请图1所示实施例提供的用户上下文信息的获取方法应用在分布式系统中,上述分布式系统包括网页应用服务器、RPC中间件和业务应用服务器,图2为本申请分布式系统一个实施例的结构示意图,图2所示的分布式系统中,包括web应用服务器和至少两个Service应用服务器,图2以分布式系统包括3个Service应用服务器为例进行说明。

图2所示分布式系统中web应用服务器与Service应用服务器之间的通信一般通过RPC中间件进行,RPC中间件可以为高速业务调用框架(High Speed Service Framework;以下简称:HSF)、分布式服务框架(dubbo)或消息队列框架(notify)等,本实施例对所采用的RPC中间件不作限定。

现有技术中,在web应用处通过cookie或session获取当前操作用户的上下文信息是很容易实现的,但是在Service应用中,上下文已经丢失,现有技术无法获取当前操作用户的上下文信息,本申请图1所示实施例提供的用户上下文信息的获取方法可以解决这一问题,可以实现Service应用服务器也能获取当前操作用户的上下文信息。

如图1所示,上述用户上下文信息的获取方法可以包括:

步骤101,业务(Service)应用服务器接收远程调用请求。

具体地,Service应用服务器接收远程调用请求可以为:Service应用服务器接收RPC中间件或除上述Service应用服务器之外的另一Service应用服务器发送的远程调用请求。

也就是说,Service应用服务器接收的远程调用请求可以是RPC中间件发送的,也可以是另一Service应用服务器发送的,这说明,分布式系统中,Service应用服务器可以被web应用服务器调用,也可以被另一Service应用服务器调用。

步骤102,Service应用服务器向上下文管理器(contextManager)发送上下文查询请求,以使上述上下文管理器从上述Service应用服务器的线程缓存(threadlocal)中获取当前操作用户的上下文信息。

步骤103,Service应用服务器接收上述上下文管理器发送的当前操作用户的上下文信息。

本实施例中,在Service的通用保存或更新(SaveorUpdate)方法中,可通过上下文管理器从Service应用服务器的线程缓存中获取到当前操作用户的上下文信息。

进一步地,在Service应用服务器接收上述上下文管理器发送的当前操作用户的上下文信息之后,Service应用服务器可以将上述当前操作用户的上下文信息保存到数据库的数据表中。

参见图3,图3为本申请上下文管理器获取当前操作用户的上下文信息一个实施例的示意图,如图3所示,上下文管理器(contextManager)作为上下文管理工具,可以使用鹰眼(eagleeye)从Service应用服务器的线程缓存(threadlocal)中获得当前操作用户的上下文信息,其中,eagleeye为分布式调用跟踪工具,用于在分布式系统中传递上下文。当前操作用户的上下文信息可以包括当前操作用户的标识(Identifier;以下简称:id)和名称(name)等信息。

图4为本申请用户上下文信息的获取方法另一个实施例的流程图,如图4所示,步骤101之前,还可以包括:

步骤401,Service应用服务器接收RPC中间件发送的当前操作用户的上下文信息。

其中,上述RPC中间件发送的当前操作用户的上下文信息是RPC中间件接收到上述web应用服务器的远程调用请求之后,从上述web应用服务器的线程缓存中导出并序列化之后发送给上述Service应用服务器的。

本实施例中,在所有RPC中间件中做了eagleeye埋点,通过eagleeye可以将所有调用链串联起来,因此可以通过eagleeye在分布式系统中间传递用户的上下文信息。

其中,上述web应用服务器的线程缓存中保存的当前操作用户的上下文信息是web应用服务器通过拦截当前操作用户针对已登录网站的页面请求,读取上述页面请求的网站标签中的当前操作用户的上下文信息,并保存在上述web应用服务器的线程缓存中的。

而上述页面请求的网站标签中的当前操作用户的上下文信息是在当前操作用户登录上述网站之后,保存在上述网站标签中的。

步骤402,Service应用服务器将上述当前操作用户的上下文信息进行反序列化,并存储在Service应用服务器的线程缓存中。

上述用户上下文信息的获取方法,应用在分布式系统中,上述分布式系统包括web应用服务器、RPC中间件和Service应用服务器,Service应用服务器接收远程调用请求之后,向上下文管理器发送上下文查询请求,以使上下文管理器从上述Service应用服务器的线程缓存中获取当前操作用户的上下文信息,然后Service应用服务器接收上述上下文管理器发送的当前操作用户的上下文信息,从而可以实现Service应用服务器在被调用之后,通过上下文管理器获取上述Service应用服务器的线程缓存中保存的当前操作用户的上下文信息,从而可以实现在分布式系统中Service应用服务器端获取当前操作用户的上下文信息,进而可以增加Service应用的可复用性,也可避免在接口参数里显示传递用户的上下文信息带来的不便和漏传参数带来的数据错误。

图5为本申请用户上下文信息的获取方法再一个实施例的流程图,如图5所示,上述用户上下文信息的获取方法可以包括:

步骤501,接收当前操作用户的登录请求。

步骤502,在当前操作用户登录网站之后,将当前操作用户的上下文信息写入已登录网站的网站标签(Cookie)中。

步骤503,接收当前操作用户针对已登录网站的页面请求。

步骤504,web应用服务器接收到上述页面请求。

步骤505,web应用服务器拦截上述页面请求,读取上述页面请求的Cookie中的当前操作用户的上下文信息,并保存在上述web应用服务器的线程缓存中。

本实施例中,web应用服务器可以通过过滤器(filter)拦截上述页面请求。

步骤506,web应用服务器向RPC中间件发送远程调用请求。

步骤507,RPC中间件从上述web应用服务器的线程缓存中导出当前操作用户的上下文信息。

步骤508,RPC中间件对导出的当前操作用户的上下文信息进行序列化。

步骤509,RPC中间件将序列化后的当前操作用户的上下文信息发送给被调用的Service应用服务器。

步骤510,被调用的Service应用服务器将接收到的当前操作用户的上下文信息进行反序列化,并存储在被调用的Service应用服务器的线程缓存中。

步骤511,被调用的Service应用服务器接收RPC中间件发送的远程调用请求。

步骤512,被调用的Service应用服务器向上下文管理器发送上下文查询请求。

步骤513,上下文管理器从被调用的Service应用服务器的线程缓存中获取当前操作用户的上下文信息。

具体地,上下文管理器从被调用的Service应用服务器的线程缓存中获取当前操作用户的上下文信息的方法可以参见本申请图3所示实施例的描述,在此不再赘述。

步骤514,上下文管理器将获取的当前操作用户的上下文信息发送给被调用的Service应用服务器。

也就是说,在Service的通用保存或更新(SaveorUpdate)方法中,可通过上下文管理器从Service应用服务器的线程缓存中获取到当前操作用户的上下文信息。

步骤515,Service应用服务器将当前操作用户的上下文信息保存到数据库的数据表中。

上述用户上下文信息的获取方法能够实现分布式系统中的web应用服务器或Service应用服务器均可获取当前操作用户的上下文信息,使得应用在Service端的SaveorUpdate方法能自动保存当前操作用户的上下文信息,这样Service的可复用性极大增加,也可避免在接口参数里显式传递用户的上下文信息带来的不便和漏传参数带来的数据错误。

图6为本申请用户上下文信息的获取装置一个实施例的结构示意图,本实施例中的用户上下文信息的获取装置应用在分布式系统中,上述分布式系统可以包括web应用服务器、RPC中间件和Service应用服务器,上述用户上下文信息的获取装置设置在上述Service应用服务器中。其中,上述分布式系统的结构可以如图2所示。

如图6所示,上述用户上下文信息的获取装置可以包括:接收模块61和发送模块62;

其中,接收模块61,用于接收远程调用请求;本实施例中,接收模块61,具体用于接收上述RPC中间件或除上述Service应用服务器之外的另一Service应用服务器发送的远程调用请求。

也就是说,接收模块61接收的远程调用请求可以是RPC中间件发送的,也可以是另一Service应用服务器发送的,这说明,分布式系统中,Service应用服务器可以被web应用服务器调用,也可以被另一Service应用服务器调用。

发送模块62,用于向上下文管理器发送上下文查询请求,以使上述上下文管理器从上述业务应用服务器的线程缓存中获取当前操作用户的上下文信息。

接收模块61,还用于接收上述上下文管理器发送的当前操作用户的上下文信息。

本实施例中,在Service的通用保存或更新(SaveorUpdate)方法中,可通过上下文管理器从Service应用服务器的线程缓存中获取到当前操作用户的上下文信息。

参见图3,上下文管理器(contextManager)作为上下文管理工具,可以使用鹰眼(eagleeye)从Service应用服务器的线程缓存(threadlocal)中获得当前操作用户的上下文信息,其中,eagleeye为分布式调用跟踪工具,用于在分布式系统中传递上下文。当前操作用户的上下文信息可以包括当前操作用户的id和name等信息。

图7为本申请用户上下文信息的获取装置另一个实施例的结构示意图,与图6所示的用户上下文信息的获取装置相比,不同之处在于,图7所示的用户上下文信息的获取装置还可以包括:处理模块63和存储模块64;

其中,接收模块61,还用于在接收模块61接收远程调用请求之前,接收RPC中间件发送的当前操作用户的上下文信息,上述RPC中间件发送的当前操作用户的上下文信息是RPC中间件接收到web应用服务器的远程调用请求之后,从上述web应用服务器的线程缓存中导出并序列化之后发送给上述Service应用服务器的;

本实施例中,在所有RPC中间件中做了eagleeye埋点,通过eagleeye可以将所有调用链串联起来,因此可以通过eagleeye在分布式系统中间传递用户的上下文信息。

其中,上述web应用服务器的线程缓存中保存的当前操作用户的上下文信息是web应用服务器通过拦截当前操作用户针对已登录网站的页面请求,读取上述页面请求的网站标签中的当前操作用户的上下文信息,并保存在上述web应用服务器的线程缓存中的。

而上述页面请求的网站标签中的当前操作用户的上下文信息是在当前操作用户登录上述网站之后,保存在上述网站标签中的。

处理模块63,用于将接收模块61接收的当前操作用户的上下文信息进行反序列化;

存储模块64,用于将处理模块63反序列化的当前操作用户的上下文信息存储在上述Service应用服务器的线程缓存中。

进一步地,存储模块64,用于在接收模块61接收上述上下文管理器发送的当前操作用户的上下文信息之后,将上述当前操作用户的上下文信息保存到数据库的数据表中。

上述用户上下文信息的获取装置,应用在分布式系统中,上述分布式系统包括web应用服务器、RPC中间件和Service应用服务器,上述用户上下文信息的获取装置设置在Service应用服务器中,接收模块61接收远程调用请求之后,发送模块62向上下文管理器发送上下文查询请求,以使上下文管理器从上述Service应用服务器的线程缓存中获取当前操作用户的上下文信息,然后接收模块61接收上述上下文管理器发送的当前操作用户的上下文信息,从而可以实现Service应用服务器在被调用之后,通过上下文管理器获取上述Service应用服务器的线程缓存中保存的当前操作用户的上下文信息,从而可以实现在分布式系统中Service应用服务器端获取当前操作用户的上下文信息,进而可以增加Service应用的可复用性,也可避免在接口参数里显示传递用户的上下文信息带来的不便和漏传参数带来的数据错误。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(Programmable Gate Array;以下简称:PGA),现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

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