一、 微服务登录一致性解决方案
二、案例解析
1.角色
用户微服务与短信微服务
2.问题
用户微服务登录成功后,短信微服务显示未登录,这不符合预期,如何解决该问题
3.分析
使用reids存储登录session,原因所有的微服务都是访问同一个redis,只要用户登录成功了,短信访问redis,有登录session就会同时登录
4.图解
分布式登录图解

5.代码实现
安装对应依赖
<!-- 分布式session-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
登录代码
- 用户登录端口为8012
- 短信登录端口为8022
@RestController
public class LoginController {
@RequestMapping("login")
public String login(HttpSession session) {
session.setAttribute("user","lizq");
return "短信服务---登录成功";
}
@RequestMapping("loginout")
public String loginout(HttpSession session) {
session.invalidate();
return "短信服务---注销成功";
}
@RequestMapping("islogin")
public String islogin(HttpSession session) {
Object user = session.getAttribute("user");
return "短信服务"+(user==null?"未登录":"已登录");
}
}
运行与实现
- 用户

- 短信

- reids
