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的依赖包
image.png
Spring-session配置
image.png
Redis单节点模式
image.png
image.png
此配置是关键点,引了redis单 机依赖包; 设置了session在redis中的失效 时间; 定义了cookie中session的名称
Redis哨兵模式
image.png
image.png
此配置是关键点,引了redis哨兵依赖包; 设置了session在redis中的失效时间; 定义了cookie中session的名称
Mysql主从配置
image.png
第一个mysql配置; 此处参数重要的是MySQL主键自增的差值
image.png
第二个MySQL配置,主要是起始值不一样
Mycat基本信息
mycat免安装,下载后直接解压即可
Schema 配置的是数据库中的表, 有很多种属性且用途不一,此处比较简单
image.png
image.png
Mycat注意事项:
image.png
switchtype=2时,heartBeat节点值为show slave status,检查主从状态, writeHost中的user 必须具备 replicationclient 和super权限中的一种,不然会报错 分配权限:grant replicationclient , super on . to mas;
image.png
image.png

许涛,Java后端研发,web端研发经验丰富,主要负责pc端和移动端的企业级业务处理系统定制化开发,如:综...

8 声望
4 粉丝
0 条评论
推荐阅读
Cas单点登录剖析
CAS(Central Authentication Service) 是 Yale 大学发起的构建 Web SSO 的 开源项目SSO 是什么?SSO-Single Sign On就是 单点登录 也就是 多个网站程序 统一到一个网址进行登录身份验证主要特点是:SSO 应用之间...

Eric2阅读 2.9k

分布式高可用Mysql数据库Percona XtraDB Cluster 8.0 与 Proxysql 史上最详尽用法指南
PXC是Percona XtraDB Cluster的缩写,是 Percona 公司出品的免费MySQL集群产品。PXC的作用是通过mysql自带的Galera集群技术,将不同的mysql实例连接起来,实现多主集群。在PXC集群中每个mysql节点都是可读可写的...

apollo0084阅读 7.2k评论 2

汽车行业场景化营销新方向:基于 WebGL 的网上虚拟车展
车展作为车市的风向标,代表着汽车发展的趋势,也是厂商展示自己、推广自己的舞台。WebGL 作为一种新兴的技术,为 Web 端提供了交互式三维动画新体验,汽车之家的网上车展就是两者结合之后的一种新的产品形态。

之家技术阅读 4.8k

封面图
SpringMVC-ResponseBodyAdvice
ResponseBodyAdvice接口可以在将handler方法的返回值写入response前对返回值进行处理,例如将返回值封装成一个与客户端约定好的对象以便于客户端处理响应数据。本篇文章将学习如果使用ResponseBodyAdvice以及其实...

半夏之沫2阅读 4.3k

浅谈服务接口的高可用设计
作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端HTTP或者是供其他服务RPC远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却...

京东云开发者3阅读 347

封面图
SpringMVC-@InitBinder
由@InitBinder注解修饰的方法用于初始化WebDataBinder对象,能够实现:从request获取到handler方法中由@RequestParam注解或@PathVariable注解修饰的参数后,假如获取到的参数类型与handler方法上的参数类型不匹配...

半夏之沫1阅读 2.8k

SpringMVC-RequestMappingHandlerMapping
使用SpringBoot进行web开发时,控制器类由@RestController注解修饰,通常@RestController注解与@RequestMapping配合使用,被修饰的类用于处理由DispatcherServlet分发下来的web请求。那么当一个web请求到达时,Di...

半夏之沫2阅读 1.8k

许涛,Java后端研发,web端研发经验丰富,主要负责pc端和移动端的企业级业务处理系统定制化开发,如:综...

8 声望
4 粉丝
宣传栏