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 | + |