现有零碎架构
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;