记一次项目整体改造

公司项目需推广到多个客户,每个客户有独立数据库,但使用同一套业务,要在不改变原调用链接的情况下只部署一套代码。面临链接跳转、动态数据源切换、负载与备份等问题,采取了更换框架、重定向请求、nginx配置等解决措施。

背景:

  公司项目需要推广部署到多个客户,每个客户独立数据库,但使用的项目前后台及app使用的同一套业务。在不改变原调用链接的情况下,只部署一套代码。

需要解决的具体问题:

  1.不同链接需要统一跳转

  2.支持可配置的动态数据源切换

  3.为防止一套代码而带来的请求压力,需要做负载与备份

  4.因负载而带来的,项目中可变的静态常量处理

  5.因负载而带来的,项目中定时器的处理,不同项目(数据源)对应的定时器运行

  6.因负载而带来的,项目中文件的保存问题

解决措施

  1.应领导提议,项目现在由springmvc改为springboot框架,所以之前的项目链接都包含项目名。实现一个Filter,将原链接的项目名截取下来,并重定向到一个统一的请求路径

  2.这里通过继承实现AbstractDataSource类,将配置文件中的所有数据源实例化并保存,重写getConnection方法,通过1中截取的项目名,获取本次请求需要的数据源并建立连接

  3.这里通过nginx来配置负载与备份

  4.在每个数据库中建立一张常量表,项目初始化时分别查询所有数据源中对应的数据并储存,在接收到请求后获取本次请求需要的常量

  5.指定一个主定时器项目,在定时器运行时,读取项目配置,只有一个项目配置为定时器正常启动;定时器运行过程中,循环所有数据源,分别设置项目名,并执行业务

  6.因项目本身租用阿里云服务器,这里文件上传就直接上传至阿里oss服务器(备注:在nginx转发文件上传请求过程中,发现向非本机转发时,文件上传时间过长。解决办法:使用域名作为代理链接地址)

 

转载于:https://www.cnblogs.com/gutaolei/p/10812872.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值