佛山怎么做网站,官方网站在家做兼职,wordpress 插件推荐,校园营销渠道有哪些问题1
一个系统中不同微服务的session共享。
问题1的解决办法
1. session复制的方法#xff1a;微服务的副本之间通过通信共享session。这样每一个微服务的副本都会保存所有的session。#xff08;缺点#xff1a;造成大量的通信#xff0c;多处额外的通信开销。#x…问题1
一个系统中不同微服务的session共享。
问题1的解决办法
1. session复制的方法微服务的副本之间通过通信共享session。这样每一个微服务的副本都会保存所有的session。缺点造成大量的通信多处额外的通信开销。
2. 客户端存储将session的信息保存到用户端的cookie中每次请求后端的时候都会带上这个cooike。后端再解析用户的信息。缺点存在cookie中不安全每次请求都要携带完整cookie,浪费带宽
3. 通过hash一致性方法对于1个用户ip其请求会被固定路由到一个固定的服务器中。缺点session依然存储在web-server中重启服务session会丢失。其次当服务数量扩展的时候,路由的位置会发生改变。
4. 使用数据库统一存储session信息后端从数据库中获取。
第四种方法的详细介绍SpringSession
1.. 修改jsessionid的作用域扩大到整个服务。
1. 导入SpringSession依赖。
2. 在登陆所在的微服务中添加store-typeredis(用redis存储session)
3. 在启动类上方添加EnableRedisHttpSession依赖
4. 创建Session信息类。并实现序列化。不序列化存储到redis会报无法序列化的错误。
5. 随后再调用session.setAttribute方法保存Session信息类的时候会自动将其保存至redis中。 问题2
不同系统的session共享如新浪微博系统和新浪网页之间的session共享。此时无法使用SpringSession。因为不同系统之间无法共享jsessionid。
问题2解决办法-单点登录 单点登录需要一个单独的登录认证服务器不同系统的登录都要通过这个登陆验证服务器。核心思想就是把使用统一的登陆服务。
假如说现在有A、B两个系统。其单点登录流程如下
用户进入A系统A系统发现用户未登录后端命令浏览器跳转到登录服务器。并且在重定向地址中用?加入参数参数内容是A的登陆服务地址用于表示是A系统让你跳转的登陆成功后你得重定向到A系统主页。
此时单点登录服务跳转至登录页统一的前端页面。用户输入账号密码并将其发送给单点登录服务。登陆成功单点登陆服务首先会为每一个用户生成一个唯一的令牌token作为keyvalue为表示用户的信息存入redis中。随后重定向至之前A系统的登录后端并且定向地址中要加入参数参数值为令牌。重定向到A系统的登陆后端此时A会向单点登录询问令牌的合法性若合法则登陆成功。将token写到cookie和session中下次用户在访问的时候通过cookie与session的比较就能知道是谁。
此时在登陆B系统后端发现未登录跳转到统一登录服务但是之前A系统已经在统一登陆服务进行了登录此时浏览器中的统一登陆前端cookie还保存着用户的token。此时单点登录服务会重定向到B登录后端并将token作为参数。此时B会向单点登录询问令牌的合法性若合法则登陆成功。与A后面的步骤类似了。