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共享和数据库高可用
- SpringSession:把servlet容器实现的httpSession替换为spring-session;将session信息存入redis;
- Mysql:mysql主主模式,进行数据的实时双向同步
- Mycat:mysql中间件,管理mysql,可以做到mysql的读写分离以及数据库故障时自动切换;应用直连mycat;
- Redis:使用哨兵模式,实现主从自动切换 备注:如果复用老的项目代码,而且旧项目使用httpSession 进行存储session信息的话,基本零改造。
Spring-Session配置
Spring-session及redis的依赖包
Spring-session配置
Redis单节点模式
此配置是关键点,引了redis单 机依赖包; 设置了session在redis中的失效 时间; 定义了cookie中session的名称
Redis哨兵模式
此配置是关键点,引了redis哨兵依赖包; 设置了session在redis中的失效时间; 定义了cookie中session的名称
Mysql主从配置
第一个mysql配置; 此处参数重要的是MySQL主键自增的差值
第二个MySQL配置,主要是起始值不一样
Mycat基本信息
mycat免安装,下载后直接解压即可
Schema 配置的是数据库中的表, 有很多种属性且用途不一,此处比较简单
Mycat注意事项:
switchtype=2时,heartBeat节点值为show slave status,检查主从状态, writeHost中的user 必须具备 replicationclient 和super权限中的一种,不然会报错 分配权限:grant replicationclient , super on . to mas;
Cas单点登录剖析
Eric赞 2阅读 2.9k
分布式高可用Mysql数据库Percona XtraDB Cluster 8.0 与 Proxysql 史上最详尽用法指南
apollo008赞 4阅读 7.2k评论 2
汽车行业场景化营销新方向:基于 WebGL 的网上虚拟车展
之家技术阅读 4.8k
SpringMVC-ResponseBodyAdvice
半夏之沫赞 2阅读 4.3k
浅谈服务接口的高可用设计
京东云开发者赞 3阅读 347
SpringMVC-@InitBinder
半夏之沫赞 1阅读 2.8k
SpringMVC-RequestMappingHandlerMapping
半夏之沫赞 2阅读 1.8k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。