SpringMVC+Spring-Session+Mycat 实现web项目的session共享和数据库高可用

现有系统架构
Springmvc+cas+nginx+nginx_upstream_jvm_route 插件实现负载并且实现session共享:
原理:
1:一开始请求过来,没有带session信息,jvm_route就根据round robin的方法,发到一台tomcat上面(根据cas信息初始化用 户信息存入session)
2:tomcat添加上session 信息,并返回给客户。 3. 用户再次请求,jvm_route看到session中有后端服务器的名称,它就把请求转到对应的服务器上
缺点:
1:并没有真正的实现负载,每次都负载到相同机器上;当用户访问时通过相同的代理地址过来时会造成单节点压力
2:nginx_upstream_jvm_route 插件最高只支持到nginx1.14版本左右,nginx1.14版本有漏洞,架构无法升级。

新架构组成
SpringMvc+SpringSession+mycat+mysql主主模式实现session共享和数据库高可用

  1. SpringSession:把servlet容器实现的httpSession替换为spring-session;将session信息存入redis;
  2. Mysql:mysql主主模式,进行数据的实时双向同步
  3. Mycat:mysql中间件,管理mysql,可以做到mysql的读写分离以及数据库故障时自动切换;应用直连mycat;
  4. Redis:使用哨兵模式,实现主从自动切换 备注:如果复用老的项目代码,而且旧项目使用httpSession 进行存储session信息的话,基本零改造。

Spring-Session配置
Spring-session及redis的依赖包
SpringMVC+Spring-Session+Mycat 实现web项目的session共享和数据库高可用_第1张图片

你可能感兴趣的:(mycat,spring-session,spring-mvc,高可用,web)