13801c2811f0c6d8eaf72cad2a5c9cdd37f94ee2
\344\274\230\345\214\226\345\220\257\345\212\250\346\227\266\351\224\201\350\241\250\351\227\256\351\242\230.md
| ... | ... | @@ -0,0 +1,92 @@ |
| 1 | +# 提测文档 |
|
| 2 | + |
|
| 3 | +## 名称 |
|
| 4 | +IIDP平台优化 |
|
| 5 | + |
|
| 6 | +## 版本号 |
|
| 7 | +已合并至test分支,具体版本号待定 |
|
| 8 | + |
|
| 9 | +## 提测日期 |
|
| 10 | +2024年8月26日 |
|
| 11 | + |
|
| 12 | +## 提测内容概述 |
|
| 13 | +本次提测主要包含以下三项优化内容: |
|
| 14 | +1. 解决IIDP平台在Setup和Install Apps过程中由于多个容器并发执行修改表结构时导致的锁表问题。 |
|
| 15 | +2. 去掉已有的大锁,引入Redisson分布式Redlock机制,并仅锁定修改表结构的一段逻辑,以降低锁的颗粒度。 |
|
| 16 | +3. 优化平台启动时间。 |
|
| 17 | + |
|
| 18 | +## 详细优化内容 |
|
| 19 | + |
|
| 20 | +### 1. 优化IIDP平台Setup和Install Apps时的锁表问题 |
|
| 21 | +#### 问题描述 |
|
| 22 | +在多个容器并发执行修改数据库表结构的操作时,容易导致数据库表被锁住,影响其他操作的正常进行,进而系统无法启动。 |
|
| 23 | + |
|
| 24 | +#### 优化方案 |
|
| 25 | +- 引入Redisson分布式Redlock机制,确保在多个容器同时操作数据库表结构时,不会出现锁表问题。 |
|
| 26 | +- 通过分布式锁管理,避免多个容器在同一时间修改表结构。 |
|
| 27 | + |
|
| 28 | +#### 测试方案 |
|
| 29 | +- 模拟多个容器并发执行Setup和Install Apps操作,观察是否存在锁表问题。 |
|
| 30 | +- 测试在高并发场景下,整个集群是否可以正常启动。 |
|
| 31 | + |
|
| 32 | +### 2. 去掉已有的大锁,引入Redisson分布式Redlock |
|
| 33 | +#### 问题描述 |
|
| 34 | +现有系统使用大锁机制,导致在一开始启动时,整个操作被锁定,影响其他pod操作的执行效率。 |
|
| 35 | + |
|
| 36 | +#### 优化方案 |
|
| 37 | +- 去掉原有的大锁机制。 |
|
| 38 | +- 引入Redisson分布式Redlock,仅锁定修改表结构的一段逻辑,细化锁的颗粒度。 |
|
| 39 | +- 确保在修改表结构时,只锁定必要的操作部分,不影响其他数据库操作,也不影响其他操作,比如启动事件等。 |
|
| 40 | + |
|
| 41 | +#### 测试方案 |
|
| 42 | +- 测试在修改数据库表结构的过程中,其他数据库操作是否受到影响。 |
|
| 43 | +- 验证Redlock锁定逻辑的准确性和有效性,确保在并发修改表结构时,锁定范围合理且有效。 |
|
| 44 | + |
|
| 45 | +### 3. 优化启动时间 |
|
| 46 | +#### 问题描述 |
|
| 47 | +平台启动时间较长,影响用户体验和系统可用性。这是一个涉及到多个方面的问题,这里只是在大锁和修改表结构方面进行了相关的优化。 |
|
| 48 | + |
|
| 49 | +#### 优化方案 |
|
| 50 | +- 对启动流程进行分析和优化,减少不必要的加锁操作。 |
|
| 51 | + |
|
| 52 | +#### 测试方案 |
|
| 53 | +- 测试优化前后的启动时间,比较启动时间的变化。 |
|
| 54 | +- 确保优化后系统功能正常,启动流程无异常。 |
|
| 55 | + |
|
| 56 | +## 测试环境 |
|
| 57 | +- 分布式环境 |
|
| 58 | + |
|
| 59 | +## 测试用例 |
|
| 60 | + |
|
| 61 | +### 用例1:并发执行Setup操作 |
|
| 62 | +- **前提条件**:部署多个容器实例。 |
|
| 63 | +- **操作步骤**: |
|
| 64 | + 1. 启动多个容器实例,分别执行Setup操作。 |
|
| 65 | + 2. 观察数据库表结构的变化情况。 |
|
| 66 | +- **预期结果**:多个容器实例可以并发执行Setup操作,数据库表结构无锁表问题,操作响应时间符合预期。 |
|
| 67 | + |
|
| 68 | +### 用例2:并发执行Install Apps操作 |
|
| 69 | +- **前提条件**:部署多个容器实例。 |
|
| 70 | +- **操作步骤**: |
|
| 71 | + 1. 启动多个容器实例,分别执行Install Apps操作。 |
|
| 72 | + 2. 观察数据库表结构的变化情况。 |
|
| 73 | +- **预期结果**:多个容器实例可以并发执行Install Apps操作,数据库表结构无锁表问题,操作响应时间符合预期。 |
|
| 74 | + |
|
| 75 | +### 用例3:修改表结构时的锁定范围 |
|
| 76 | +- **前提条件**:部署多个容器实例。 |
|
| 77 | +- **操作步骤**: |
|
| 78 | + 1. 启动多个容器实例,同时执行修改表结构操作。 |
|
| 79 | + 2. 观察其他数据库操作是否受到影响。 |
|
| 80 | +- **预期结果**:修改表结构时,仅锁定必要的操作部分,其他数据库操作不受影响。 |
|
| 81 | + |
|
| 82 | +### 用例4:平台启动时间优化 |
|
| 83 | +- **前提条件**:无。 |
|
| 84 | +- **操作步骤**: |
|
| 85 | + 1. 启动平台,记录启动时间。 |
|
| 86 | + 2. 比较优化前后的启动时间。 |
|
| 87 | +- **预期结果**:优化后平台启动时间明显缩短,系统功能正常。 |
|
| 88 | + |
|
| 89 | +## 备注 |
|
| 90 | +- 请测试人员在测试过程中,详细记录每个测试用例的执行情况和结果。 |
|
| 91 | +- 如发现任何问题或异常,请及时反馈给开发团队。 |
|
| 92 | + |