Redis实现session共享和异步转同步方法技术

技术编号:26534685 阅读:22 留言:0更新日期:2020-12-01 14:23
本发明专利技术公开了Redis实现session共享和异步转同步方法,包括用户终端A第一次发送访问系统的请求,LVS调度节点将请求分发给服务器一;用户终端A第一次发送访问系统的请求,LVS调度节点将请求分发给服务器一;用户终端A再次发送访问系统的请求,LVS调度节点将请求分发给服务器二;服务器二获取用户终端A携带的session并将用户终端A携带的session与Redis中的session进行匹配;本发明专利技术基于Redis实现了session的共享,解决了负载均衡中同一个域名不同服务器对应不同session的问题;同时基于Redis负载均衡实现了异步转同步的方法。

【技术实现步骤摘要】
Redis实现session共享和异步转同步方法
本专利技术涉及计算机
,具体涉及Redis实现session共享和异步转同步方法。
技术介绍
随着互联网技术的飞速发展,智能设备的迅速普及,人们进行网络访问的需求日益增大。比如双十一抢购时期,比如当下COVID-19导致口罩一罩难求,由于大量用户的集中访问给服务器造成极大的负担,导致众多用户极难访问。负载均衡将众多的访问量分摊到其他服务器上,极大地降低了服务器的负载,实现了对客户端请求的快速响应。但是这样也存在一个问题,每个服务器都有自己的session,用户的每次请求无法保证使用同一个服务器,如果不能实现session共享将是极为糟糕的体验。本专利技术基于Redis实现了session的共享,解决了负载均衡中同一个域名不同服务器对应不同session的问题。对于一个提供HTTP接口服务的程序,在收到HTTP接口请求时,内部会异步请求第三方,第三方通过HTTP回调把结果返回,但是该接口需要同步返回结果。我们使用一个Key来标记同一个请求和返回。该Key可以从第三方回调的参数中生成,但是却不能从该服务接口的参数中生成,需要该服务再去做一些数据库查询操作。所以如果用nginx等来做负载均衡,并不能比较简单把第三方回调的请求和该服务的接口请求分发到同一个后台服务接口上。本专利技术基于Redis负载均衡实现了异步转同步的方法。
技术实现思路
针对现有技术存在的不足,本专利技术目的是提供Redis实现session共享和异步转同步方法。本专利技术能够实现多重的登录保护操作,保护了用户登录安全;防止数据被盗;本专利技术基于Redis实现了session的共享,解决了负载均衡中同一个域名不同服务器对应不同session的问题,同时基于Redis负载均衡实现了异步转同步的方法。本专利技术的目的可以通过以下技术方案实现:Redis实现session共享和异步转同步方法,包括如下步骤:步骤一:用户终端A第一次发送访问系统的请求,LVS(负载均衡)调度节点将请求分发给服务器一;步骤二:服务器一接收用户终端A发送的访问系统的请求;所述服务器一验证用户终端A是否可信,若不可信,则不再进行后续的步骤,退出验证过程,并反馈用户终端A的可信验证失败指令,判定所述用户终端A属于黑名单客户;若可信,则继续下述步骤;步骤三:服务器一根据所述请求向用户终端A提供系统的登录界面;服务器一接收用户终端A通过登录界面发送的登录信息,所述登录信息包括用户名和密码;所述服务器一将所述用户名和密码与相应用户注册时的用户名和密码进行匹配;包括:S11:用户的登录采用单点登录方式,用户输入用户名和密码后,传输过程中采用RSA公钥对用户名、密码进行加密,向服务器一发送登录请求;S12:服务器一接收到登录请求,采用RSA私钥对用户名、密码进行解密,再采用SHA256算法,同时采用随机数加“盐”策略存放于数据库中;S13:验证用户名、密码;若用户名和密码匹配成功,则执行步骤四;若匹配不成功,则判断当前用户连续错误次数是否超过预设次数,若超过,则锁定当前用户,并提示当前用户已锁定,需要管理员解锁;如果当前用户连续错误次数没有超过预设次数,则判断当前IP连续错误是否超过预设次数;若超过,则锁定当前IP,提示当前用户已锁定,需要管理员解锁,如果当前IP连续错误次数没有超过预设次数,则提示用户名、密码错误,返回步骤S11中重新输入用户名和密码;步骤四:服务器一向用户终端A提供以采集用户脸部图像的采集界面;服务器一接收用户终端A通过采集界面发送的用户脸部图像并将用户终端A发送的用户脸部图像与云存储中的相应的标准用户脸部图像进行匹配识别,若识别成功,则允许用户终端A访问系统;步骤五:将服务器一产生的session放入Redis中,此时用户终端A、服务器一和Redis都有一个相同的session;步骤六:用户终端A再次发送访问系统的请求,LVS(负载均衡)调度节点将请求分发给服务器二(已知此时服务器二中无session);重复步骤二至步骤四的验证过程;步骤七:服务器二获取用户终端A携带的session并将用户终端A携带的session与Redis中的session进行匹配;若匹配成功;则继续执行其他流程;若匹配不成功,则判定用户终端A携带的session是伪造session,拒绝用户终端A访问;步骤八:当用户终端A发送退出指令时,服务器二检查Redis中的session是否合法,若合法,则在Redis中删除此session,同时检查服务器二中是否保存有此session,若有保存,则删除服务器二中的session。进一步地,还包括:SS1:用Redis做消息队列和缓存,每个服务程序监听不同的Topic;SS2:服务程序收到请求时,将Key缓存到Redis中,该Key对应的value即为所述服务程序的Topic;SS3:所述服务程序收到回调消息时,首先检查Key是不是所述服务程序处理的,若是,则清除Redis缓存,并自行处理后续流程,同步响应原始请求;若不是,则通过Key在Redis中查询该Key到对应的Topic,并把回调消息发到该Topic;若查不到该Key到对应的Topic,则打印日志丢弃;所述服务程序收到Redis消息,清除Redis缓存,并处理消息响应原始请求;SS4:设置缓存时间阈值,当缓存时间大于缓存时间阈值,服务程序清除Redis缓存。进一步地,步骤四中服务器一将用户终端A发送的用户脸部图像与云存储中的相应的标准用户脸部图像进行匹配识别之前,还包括:S21:服务器一提取所述用户脸部图像的特征信息,根据所述特征信息计算所述用户脸部图像的清晰度;所述特征信息包括用户脸部图像中眼睛区域占整张图像的比例和用户脸部图像的边缘锐度;S211:将用户脸部图像标记为x,将用户脸部图像x中眼睛区域占整张图像的比例标记为Rx,将用户脸部图像x的边缘锐度标记为Wx;S212:利用公式Qx=f(Rx-α)+g(Wx-β)计算得到用户脸部图像x的清晰度Qx;其中,α为预设的比例下限;f(Rx-α)为第一判断取值函数,当Rx-α≥0时,f(Rx-α)=1,当Rx-α<0时,f(Rx-α)=0;β为预设的边缘锐度阈值,g(Wx-β)为第二判断取值函数,当Wx-β≥0时,g(Wx-β)=1,当Wx-β<0时,g(Wx-β)=0;S22:若清晰度Qx小于预设的清晰度阈值,服务器一向用户终端A发送用于提示用户重新采集图像的信息;若清晰度Qx大于等于预设的清晰度阈值,则将用户脸部图像与云存储中的相应的标准用户脸部图像进行匹配识别;所述预设的清晰度阈值的取值为2。进一步地,步骤二中服务器一验证用户终端A是否可信,具体步骤如下:S31:用户终端A向服务器一发送用户终端A的身份验证信息,所述身份验证信息包括用户终端A的身本文档来自技高网...

【技术保护点】
1.Redis实现session共享和异步转同步方法,其特征在于,包括如下步骤:/n步骤一:用户终端A第一次发送访问系统的请求,LVS调度节点将请求分发给服务器一;/n步骤二:服务器一接收用户终端A发送的访问系统的请求;所述服务器一验证用户终端A是否可信,若不可信,则不再进行后续的步骤,退出验证过程,并反馈用户终端A可信验证失败指令,判定所述用户终端A属于黑名单客户;若可信,则执行步骤三;/n步骤三:服务器一根据所述请求向用户终端A提供系统的登录界面;/n服务器一接收用户终端A通过登录界面发送的登录信息,所述登录信息包括用户名和密码;所述服务器一将所述用户名和密码与相应用户注册时的用户名和密码进行匹配;包括:/nS11:用户的登录采用单点登录方式,用户输入用户名和密码后,传输过程中采用RSA公钥对用户名、密码进行加密,向服务器一发送登录请求;/nS12:服务器一接收到登录请求,采用RSA私钥对用户名、密码进行解密,再采用SHA256算法,同时采用随机数加“盐”策略存放于数据库中;/nS13:验证用户名、密码;/n若用户名和密码匹配成功,则执行步骤四;/n若匹配不成功,则判断当前用户连续错误次数是否超过预设次数,若超过,则锁定当前用户,并提示当前用户已锁定,需要管理员解锁;/n如果当前用户连续错误次数没有超过预设次数,则判断当前IP连续错误是否超过预设次数;若超过,则锁定当前IP,提示当前用户已锁定,需要管理员解锁;/n如果当前IP连续错误次数没有超过预设次数,则提示用户名、密码错误,返回步骤S11中重新输入用户名和密码;/n步骤四:服务器一向用户终端A提供以采集用户脸部图像的采集界面;/n服务器一接收用户终端A通过采集界面发送的用户脸部图像并将用户终端A发送的用户脸部图像与云存储中的相应的标准用户脸部图像进行匹配识别,若识别成功,则允许用户终端A访问系统;/n步骤五:将服务器一产生的session放入Redis中,此时用户终端A、服务器一和Redis都有一个相同的session;/n步骤六:用户终端A再次发送访问系统的请求,LVS调度节点将请求分发给服务器二;重复步骤二至步骤四的验证过程;/n步骤七:服务器二获取用户终端A携带的session并将用户终端A携带的session与Redis中的session进行匹配;若匹配成功;则继续执行其他流程;若匹配不成功,则判定用户终端A携带的session是伪造session,拒绝用户终端A访问;/n步骤八:当用户终端A发送退出指令时,服务器二检查Redis中的session是否合法,若合法,则在Redis中删除此session,同时检查服务器二中是否保存有此session,若有保存,则删除服务器二中的session。/n...

【技术特征摘要】
1.Redis实现session共享和异步转同步方法,其特征在于,包括如下步骤:
步骤一:用户终端A第一次发送访问系统的请求,LVS调度节点将请求分发给服务器一;
步骤二:服务器一接收用户终端A发送的访问系统的请求;所述服务器一验证用户终端A是否可信,若不可信,则不再进行后续的步骤,退出验证过程,并反馈用户终端A可信验证失败指令,判定所述用户终端A属于黑名单客户;若可信,则执行步骤三;
步骤三:服务器一根据所述请求向用户终端A提供系统的登录界面;
服务器一接收用户终端A通过登录界面发送的登录信息,所述登录信息包括用户名和密码;所述服务器一将所述用户名和密码与相应用户注册时的用户名和密码进行匹配;包括:
S11:用户的登录采用单点登录方式,用户输入用户名和密码后,传输过程中采用RSA公钥对用户名、密码进行加密,向服务器一发送登录请求;
S12:服务器一接收到登录请求,采用RSA私钥对用户名、密码进行解密,再采用SHA256算法,同时采用随机数加“盐”策略存放于数据库中;
S13:验证用户名、密码;
若用户名和密码匹配成功,则执行步骤四;
若匹配不成功,则判断当前用户连续错误次数是否超过预设次数,若超过,则锁定当前用户,并提示当前用户已锁定,需要管理员解锁;
如果当前用户连续错误次数没有超过预设次数,则判断当前IP连续错误是否超过预设次数;若超过,则锁定当前IP,提示当前用户已锁定,需要管理员解锁;
如果当前IP连续错误次数没有超过预设次数,则提示用户名、密码错误,返回步骤S11中重新输入用户名和密码;
步骤四:服务器一向用户终端A提供以采集用户脸部图像的采集界面;
服务器一接收用户终端A通过采集界面发送的用户脸部图像并将用户终端A发送的用户脸部图像与云存储中的相应的标准用户脸部图像进行匹配识别,若识别成功,则允许用户终端A访问系统;
步骤五:将服务器一产生的session放入Redis中,此时用户终端A、服务器一和Redis都有一个相同的session;
步骤六:用户终端A再次发送访问系统的请求,LVS调度节点将请求分发给服务器二;重复步骤二至步骤四的验证过程;
步骤七:服务器二获取用户终端A携带的session并将用户终端A携带的session与Redis中的session进行匹配;若匹配成功;则继续执行其他流程;若匹配不成功,则判定用户终端A携带的session是伪造session,拒绝用户终端A访问;
步骤八:当用户终端A发送退出指令时,服务器二检查Redis中的session是否合法,若合法,则在Redis中删除此session,同时检查服务器二中是否保存有此session,若有保存,则删除服务器二中的session。


2.根据权利要求1所述的Redis实现session共享和异步转同步方法,其特征在于,还包括:
SS1:用Redis做消息队列和缓存,每个服务程序监听不同的Topic;
SS2:服务程序收到请求时,将Key缓存到Redis中,该Key对应的value即为所述服务程序的Topic;
SS3:所述服务程序收到回调消息时,首先检查Key是不是所述服务程序处理的,若是,则清除Redis缓存,并自行处理后续流程,同步响应原始请求;
若不是,则通过Key在Redis中查询该Key到对应的Topic,并把回调消息发到该Topic;若查不到该Key到对应的Topic,则打印日志丢弃;
所述服务程序收到R...

【专利技术属性】
技术研发人员:王意德万森刘子龙毕凯强程腾
申请(专利权)人:安徽云森物联网科技有限公司
类型:发明
国别省市:安徽;34

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

1