浅谈分布式系统常见的几个问题和解决办法
一、常见问题及解决办法
1、分布式session问题:
因为在分布式系统中,服务器集群,同一服务通常会放在几台不同的服务器中,当浏览器第一次发来请求或原session已经失效时,会在服务器端创建session,并将sessionId放在响应头中返回浏览器保存在cookie。当浏览器第二次访问时,会带着sessionId在服务器中查找session,虽然两次访问的网址相同,但是请求可能打到两个不同的tomcat上,这样第二次请求找不到之前的session。这个问题有以下5种解决方法:
(1)使用数据库进行session共享。
(2)使用redis进行session,k,v分别是sessionId,session,该方法已经集成在springboot中,在redis配置类上加@EnableRedisHttpSession。
(3)使用token加session,token和session都是临时且唯一的,redis的k,v分别是token,session。
(4)使用tomcat自带的session同步工具,但是效果不好有延时。
(5)在网关层做ip hash操作,确保相同ip的请求可以打到相同的tocmat。
2.分布式跨域问题:
前端页面的ajax请求在访问当前页面所在的系统的服务接口时,不会发生任何问题,但是在访问系统的页面时ÿ