分布式Session共享

当服务众多时,服务A需要服务B某个请求的结果来用。将服务B的请求结果保存到HttpSession 的对象的方法setAttribute("名称",值)。方法setAttribute的底层也是用map将名称和值保存到内存。     但是尽管服务B使用Session保存了服务B的请求结果,但是如果这两个服务的浏览器上的作用域Domain不同,服务A是拿不到的。所以我们需要将作用域改为父域或相同域。作用域是在浏览器cookie上 所以修改作用域 就是设置cookie。

Spring为我们提供了Spring-Session 整合了redis,jdbc,cookie MongoDB分布式Session共享_第1张图片

而我们使用SpringSession整合的redis来保存结果。还有一种叫hash一致性的方法  是通过算法负载均衡到某个服务上,缺点当服务横向扩展时(服务增加)之前的算法就会失效 需要重新计算让结果重新负载均衡到原来的服务。

SpringSession整合的redis 优点:任何服务无需使用负载均衡不用担心服务横向扩展,任务服务需要结果只需向redis中来取就可以了。首先使用SpringSession整合的Redis需要导入maven依赖分布式Session共享_第2张图片分布式Session共享_第3张图片

在服务B导入依赖后在application.yml文件配置相关信息spr

你可能感兴趣的:(分布式)