名称
IIDP平台优化
版本号
已合并至test分支,具体版本号待定
提测日期
2024年8月26日
提测内容概述
本次提测主要包含以下三项优化内容:
- 解决IIDP平台在Setup和Install Apps过程中由于多个容器并发执行修改表结构时导致的锁表问题。
- 去掉已有的大锁,引入Redisson分布式Redlock机制,并仅锁定修改表结构的一段逻辑,以降低锁的颗粒度。
- 优化平台启动时间。
详细优化内容
1. 优化IIDP平台Setup和Install Apps时的锁表问题
问题描述
在多个容器并发执行修改数据库表结构的操作时,容易导致数据库表被锁住,影响其他操作的正常进行,进而系统无法启动。
优化方案
- 引入Redisson分布式Redlock机制,确保在多个容器同时操作数据库表结构时,不会出现锁表问题。
- 通过分布式锁管理,避免多个容器在同一时间修改表结构。
测试方案
- 模拟多个容器并发执行Setup和Install Apps操作,观察是否存在锁表问题。
- 测试在高并发场景下,整个集群是否可以正常启动。
2. 去掉已有的大锁,引入Redisson分布式Redlock
问题描述
现有系统使用大锁机制,导致在一开始启动时,整个操作被锁定,影响其他pod操作的执行效率。
优化方案
- 去掉原有的大锁机制。
- 引入Redisson分布式Redlock,仅锁定修改表结构的一段逻辑,细化锁的颗粒度。
- 确保在修改表结构时,只锁定必要的操作部分,不影响其他数据库操作,也不影响其他操作,比如启动事件等。
测试方案
- 测试在修改数据库表结构的过程中,其他数据库操作是否受到影响。
- 验证Redlock锁定逻辑的准确性和有效性,确保在并发修改表结构时,锁定范围合理且有效。
3. 优化启动时间
问题描述
平台启动时间较长,影响用户体验和系统可用性。这是一个涉及到多个方面的问题,这里只是在大锁和修改表结构方面进行了相关的优化。
优化方案
- 对启动流程进行分析和优化,减少不必要的加锁操作。
测试方案
- 测试优化前后的启动时间,比较启动时间的变化。
- 确保优化后系统功能正常,启动流程无异常。
测试环境
- 分布式环境
测试用例
用例1:并发执行Setup操作
- 前提条件:部署多个容器实例。
-
操作步骤:
- 启动多个容器实例,分别执行Setup操作。
- 观察数据库表结构的变化情况。
- 预期结果:多个容器实例可以并发执行Setup操作,数据库表结构无锁表问题,操作响应时间符合预期。
用例2:并发执行Install Apps操作
- 前提条件:部署多个容器实例。
-
操作步骤:
- 启动多个容器实例,分别执行Install Apps操作。
- 观察数据库表结构的变化情况。
- 预期结果:多个容器实例可以并发执行Install Apps操作,数据库表结构无锁表问题,操作响应时间符合预期。
用例3:修改表结构时的锁定范围
- 前提条件:部署多个容器实例。
-
操作步骤:
- 启动多个容器实例,同时执行修改表结构操作。
- 观察其他数据库操作是否受到影响。
- 预期结果:修改表结构时,仅锁定必要的操作部分,其他数据库操作不受影响。
用例4:平台启动时间优化
- 前提条件:无。
-
操作步骤:
- 启动平台,记录启动时间。
- 比较优化前后的启动时间。
- 预期结果:优化后平台启动时间明显缩短,系统功能正常。
备注
- 请测试人员在测试过程中,详细记录每个测试用例的执行情况和结果。
- 如发现任何问题或异常,请及时反馈给开发团队。