我于2018年8月入职某公司,在某部门的某项目组下,做了产品A的后台开发的一个螺丝钉,这个文集记录了该产品发展的一些过程。
入职时,产品A的后台用Java开发,是一个单体应用,提供了APP基础功能,第三方对接功能等,并且做了前后端分离,部署在公司提供的云服务器上,大概部署了20台,10台对外提供服务,剩下10台备用。SLB层面是用的两台lvs和两台nginx。前端有ios,android,H5应用三种形式,给用户提供服务,另外有个H5做的运营后台,提供给产品经理和运营人员使用。大概架构如下图所示。
微信截图_20200523212518.png
- MySQL:用的主从模式,只有一个库。
- Redis:用的主从模式,只用到一个库,没有安装哨兵
- NAS:文件服务器是第三方提供的,有上传、下载等服务,下载功能可以做cdn预热。
服务器的配置信息不清楚
这上面的架构在当时没出现过问题,不过隐含的风险是不少。
- Redis挂了无法自动切换从库
- DB挂了无法自动切换从库
- 若配置更新需要修改配置文件,并重启服务,无法热更新
- 单体应用的开发、测试比较麻烦,可能牵一发动全身
- 代码使用的框架是spring 3.0.6,版本非常老(当时都用springbootl),许多新特性没有提供,提供的中间件API是老版本的中间件。如果架构引入新的中间件,接入比较麻烦。
- 其他未知问题











网友评论