一种基于微服务架构的分布式会话处理系统及方法技术方案

技术编号:29684413 阅读:28 留言:0更新日期:2021-08-13 22:08
本发明专利技术公开了一种基于微服务架构的分布式会话处理系统及方法。基于微服务架构的分布式会话处理方法,用户通过统一用户服务来登录,统一用户服务存储管理登录用户信息;统一用户服务生成访问令牌;统一用户服务将登录用户信息按照属性存储到内存缓存中;当用户使用业务微服务,业务微服务带着访问令牌到统一用户服务验证当前用户是否登录;验证通过后,业务微服务按照属性读取统一用户服务的内存缓存,将登录用户信息同步到业务的session中;登录用户在业务微服务中对session的操作都只修改业务微服务的内存缓存;同一业务微服务分布式部署,共享业务微服务的内存缓存的改变。

【技术实现步骤摘要】
一种基于微服务架构的分布式会话处理系统及方法
本专利技术属于应用架构
,特别是关于一种基于微服务架构的分布式会话处理系统及方法。
技术介绍
应用架构技术从单体应用到微服务技术架构经历了至少4代的发展,目前微服务技术架构已经是JAVA软件开发的主流架构。微服务架构下将原来的应用拆分成多个单一功能的应用,比如原来的系统具有本身的业务功能10个,还带有用户登录、管理等,在微服务下本身的10个业务功能理论上将会拆分成10个独立的微服务应用,自带的用户登录、管理也会被独立成一个微服务应用。如果原来有多个单体应用,那么每个单体应用会分别拆分成多个独立微服务应用。如图1所示,原来单体应用时,用户操作业务功能首先要登录,登录后由中间件提供session功能供应用保持session状态,之后所有的业务功能在操作前都会验证session是否有效。微服务下由于用户管理被独立成了一个应用,如果用session来保持登录状态,也只有用户管理有这个应用有登录状态,而被拆分出去的其他微服务应用无法获得此状态,微服务提供了一个session共享方案,通过统一的缓存来存储登录的session信息,被拆出的微服务应用也同样连接缓存读取session。这种方式对于一个应用拆分的多个微服务应用问题不大,但多个应用拆分出来的就会出现问题。由于是session共享,所以一个应用对session做了修改,会影响其他应用的读取。并且随着应用越来越多统一缓存的压力就非常大成为瓶颈。
技术实现思路
针对上述技术问题,本专利技术第一个目的是提供一种以统一用户服务为中心的供微服务应用间可以共享session状态的系统及方法。本专利技术的第一个目的的技术方案是:一种基于微服务架构的分布式会话处理系统,包括统一用户服务模块,业务微服务应用;统一用户服务模块包括缓存服务装置,缓存服务装置的内存缓存中存储登录用户信息;业务微服务包括内存缓存,业务微服务在读取统一用户服务的内存缓存后将用户信息同步到业务微服务的内存缓存中;同一业务微服务分布式部署,共享业务微服务的内存缓存的改变。进一步的,缓存服务装置的内存缓存中,登录用户信息按照属性以hash的数据结构存储;缓存服务装置的内存缓存、业务微服务的内存缓存中还存储访问令牌。本专利技术还公开了一种基于微服务架构的分布式会话处理方法,用户通过统一用户服务来登录,统一用户服务存储管理登录用户信息,负责登录状态验证;统一用户服务生成访问令牌,所有业务微服务的当前登录用户的访问令牌均与统一用户服务一致;统一用户服务将登录用户信息按照属性存储到内存缓存中,这里使用缓存技术而不是数据库,是本专利技术的一个重要环节。当用户使用业务微服务,业务微服务带着访问令牌到统一用户服务验证当前用户是否登录;验证通过后,业务微服务读取统一用户服务的内存缓存,将登录用户信息同步到业务微服务的内存缓存中,业务微服务按照属性读取统一用户服务的内存缓存中的用户信息,而不是将整个用户信息读取下来再自行筛选。本专利技术通过访问令牌的验证,在session实现共享的基础上,还能够实现session的个性化,防止多应用之间session共享后互相篡改。登录用户在业务微服务中对session的操作都只修改业务微服务的内存缓存;同一业务微服务分布式部署,共享业务微服务的内存缓存的改变。进一步的,统一用户服务将登录用户信息按照属性以hash的数据结构存储到缓存服务装置内存缓存中,登录用户信息包括登录状态和用户基本信息。进一步的,业务微服务的内存缓存为业务的session缓存;当业务应用被告知用户已登录,业务微服务检查业务的session缓存中是否有当前用户;当业务的session缓存中无当前用户,则将当前用户在统一用户服务中的内存缓存同步到业务的session缓存中;业务微服务中对session的自定义操作仅在业务的session缓存中进行。所有在此体系下的应用都使用登录时统一用户服务生产的访问令牌,即ACCESS-TOKEN来维系一致性,当前登录的用户在整个微服务环境下的任何应用上都使用此ACCESS-TOKEN来代表。进一步的,上述实现session的个性化的方法,更具体的包括如下步骤:S1、用户使用业务微服务功能时,调用统一用户服务的登录状态接口获取用户登录状态;S2、如果获取不到用户登录状态,则当前操作为非法,流程结束;否则,检查业务的session缓存中是否存在当前用户;S3、如果存在当前用户,对用户操作放行,流程结束;如果不存在,则调用统一用户服务的获取登录信息接口获取当前登录用户信息,并将当前登录用户信息存储到业务的session缓存中,同时对用户操作放行流程结束。进一步的,用户信息使用KV方式存储到统一用户服务的内存缓存中,其中K为ACCESS-TOKEN,ACCESS-TOKEN使用登录名、当前时间以HMAC256算法生成,V为抽象出的原本需要存储在session中的登录用户信息。进一步的,业务微服务以只读方式同步统一用户服务中的内存缓存,同一业务微服务对本身缓存的改变不会影响到其他应用微服务以及统一用户服务;统一用户服务作为每次业务模块操作时的登录状态检查。本专利技术具有以下有益效果:本专利技术提供的内存缓存并非是传统中间件的session也并非spring-session,登录后统一用户服务只维系、验证用户登录状态,而传统的session以及spring-session需要维护所有应用的所有session内容。(1)本专利技术提供的session处理方式,解决传统通用会话处理方法会出现的问题,以统一用户服务为中心减少了传统方式对缓存的强烈依赖,并且由于统一用户服务接口的逻辑限制,保证了session中登录用户属性的一致性,不会出现相互篡改的问题;(2)本专利技术提供的session处理方式,保证了微服务应用在session共享的基础上又能实现自身session内容个性化的需求;(3)本专利技术提供的session处理方式,分摊了访问请求压力,充分利用了各个组件的性能。附图说明图1为传统中间件的session共享。图2为本专利技术实施例的基于微服务架构的分布式会话处理系统架构示意图。图3为本专利技术实施例的用户登录session存储流程。图4为本专利技术实施例的业务微服务在业务过程中使用session流程图。具体实施方式为了便于本领域技术人员的理解,下面结合实施例与附图对本专利技术作进一步的说明。本实施例的提供一种以统一用户服务为中心的供微服务应用间可以共享session状态的方法,本实施例提供的session并非是中间件的那种session也并非spring-session。如图2所示,提供统一用户服务,统一用户服务中的登录模块将登录后的用户信息使用VK方式存储到专用内存缓存中,其中K为ACCESS-TOKEN,ACCESS-TOKEN使用登录名、当前时间以HMAC256算法生成,V为本文档来自技高网...

【技术保护点】
1.一种基于微服务架构的分布式会话处理方法,其特征在于:用户通过统一用户服务来登录,统一用户服务存储管理登录用户信息,负责登录状态验证;/n统一用户服务生成访问令牌,所有业务微服务的当前登录用户的访问令牌均与统一用户服务一致;统一用户服务将登录用户信息按照属性存储到内存缓存中;/n当用户使用业务微服务,业务微服务带着访问令牌到统一用户服务验证当前用户是否登录;验证通过后,业务微服务按照属性读取统一用户服务的内存缓存,将登录用户信息同步到业务的session中;/n登录用户在业务微服务中对session的操作都只修改业务微服务的内存缓存;同一业务微服务分布式部署,共享业务微服务的内存缓存的改变。/n

【技术特征摘要】
1.一种基于微服务架构的分布式会话处理方法,其特征在于:用户通过统一用户服务来登录,统一用户服务存储管理登录用户信息,负责登录状态验证;
统一用户服务生成访问令牌,所有业务微服务的当前登录用户的访问令牌均与统一用户服务一致;统一用户服务将登录用户信息按照属性存储到内存缓存中;
当用户使用业务微服务,业务微服务带着访问令牌到统一用户服务验证当前用户是否登录;验证通过后,业务微服务按照属性读取统一用户服务的内存缓存,将登录用户信息同步到业务的session中;
登录用户在业务微服务中对session的操作都只修改业务微服务的内存缓存;同一业务微服务分布式部署,共享业务微服务的内存缓存的改变。


2.根据权利要求1所述的基于微服务架构的分布式会话处理方法,其特征在于:统一用户服务将登录用户信息按照属性以hash的数据结构存储到缓存服务装置内存缓存中,登录用户信息包括登录状态和用户基本信息。


3.根据权利要求1所述的基于微服务架构的分布式会话处理方法,其特征在于:
业务微服务的内存缓存为业务的session缓存;当业务应用被告知用户已登录,业务微服务检查业务的session缓存中是否有当前用户;当业务的session缓存中无当前用户,则将当前用户在统一用户服务中的内存缓存同步到业务的session缓存中;
业务微服务中对session的自定义操作仅在业务的session缓存中进行。


4.根据权利要求1至3中任一所述的基于微服务架构的分布式会话处理方法,其特征在于,具体包括如下步骤:
S1、用户使用业务微服务功能时,调用统一用户服务的登录状态接口获取用户登录状态;
S2、如果获取不到用...

【专利技术属性】
技术研发人员:王知明李杰
申请(专利权)人:大汉软件股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1