背景: 1 、测试环境、开发环境两台机器,开发环境机器在办公室,网络、供电可能异常中断,测试环境机器在机房,有保障;--目前使用开发环境数据库 2 、测试环境机器存储空间小,暂时无法扩容,开发环境存储空间充足; 3 、相关开发人员,对数据库的了解可能仅限于 mysql 的增删改查,对其他数据库不了解;并且涉及业务众多难以梳理,难以全面整改。--但现在新增非结构化的数据要存储
需求: 1 ,测试环境的机器提供线上服务,在机房网络、供电有保证,各业务统一将历史代码中的数据库服务器 IP 从开发环境改成测试环境,以后固定由测试环境上的数据库统一提供服务; 测试环境唯一对外提供服务的数据库是 mysql 2 ,数据增、删、改:请求发送到测试环境 mysql ,由测试环境 mysql 实时同步到开发环境的 mysql ; 3 ,测试环境 mysql 定期删除超过指定时间的数据(比如一天前,一周前等),但是开发环境的 mysql 要保留全量数据--如果是业务发起的删除,开发环境需要同步,见 2 ; 4 ,数据的查询:请求发送到测试环境 mysql ,如果测试环境有,直接返回,如果测试环境没有,mysql 去开发环境查一下再返回,对于业务来说,只要向测试环境发起查询请求就可以了;--有点像简单的“冷热节点分离”,如果实施困难,也可以所有查询请求,都转发到开发环境 mysql ; 5 ,多数据:测试环境 mysql 作为唯一对外服务的数据库,但开发环境搭建 mysql 、mongodb 等多种数据库,测试环境 mysql 根据不同的表名,把数据写入到开发环境不同的数据库上,查询的时候也是一样。--这个时候跟以上几点有点冲突,所以测试环境 mysql 可以纯粹作为一个“数据库网关”,所有数据都在开发环境。 测试环境数据全部在 mysql 的表里存储,通过“外表”等方式映射到开发环境不同的数据库。如果开发环境断电,测试环境提供近期数据的查询。
1
winskyme926 OP 手机编辑,没注意 markdown 格式
|
2
XyIsMy 70 天前
你要不再梳理下 背景,需求,方案 1 ,2 ,3 。理解起来有点费劲。
1.测试环境资源吃紧的情况下,想作为线上环境,这个就不太合理,要么加机器资源,要么还是用开发环境 2.测试环境 反代 到开发环境,不现实。开发环境停电之后系统还是不可用,没实际意义 3.测试环境 缓存 一份热数据,定期删除,只能提供查询,整个系统的复杂度提高几倍 测试环境加一个硬盘吧,现在硬盘不算很贵,解决很多问题。提高系统稳定性,可维护。降低开发人员的工作心智, |
3
lingalonely 69 天前 1
不至于吧,这点资源都不加,本身测试,开发应该是要隔离的,你现在全耦合在一起,开发测试过程中的问题排查都有得搞,先去申请大一点测试环境,另外,按你描述,你们开发,测试流程也存在问题。正常是 测试发现问题,反馈开发,开发修复,提交修改测试,测试验证,所以要保持测试,开发环境的独立性。
|