提测文档

名称

IIDP平台优化

版本号

已合并至test分支,具体版本号待定

提测日期

2024年8月26日

提测内容概述

本次提测主要包含以下三项优化内容:

  1. 解决IIDP平台在Setup和Install Apps过程中由于多个容器并发执行修改表结构时导致的锁表问题。
  2. 去掉已有的大锁,引入Redisson分布式Redlock机制,并仅锁定修改表结构的一段逻辑,以降低锁的颗粒度。
  3. 优化平台启动时间。

详细优化内容

1. 优化IIDP平台Setup和Install Apps时的锁表问题

问题描述

在多个容器并发执行修改数据库表结构的操作时,容易导致数据库表被锁住,影响其他操作的正常进行,进而系统无法启动。

优化方案

  • 引入Redisson分布式Redlock机制,确保在多个容器同时操作数据库表结构时,不会出现锁表问题。
  • 通过分布式锁管理,避免多个容器在同一时间修改表结构。

测试方案

  • 模拟多个容器并发执行Setup和Install Apps操作,观察是否存在锁表问题。
  • 测试在高并发场景下,整个集群是否可以正常启动。

2. 去掉已有的大锁,引入Redisson分布式Redlock

问题描述

现有系统使用大锁机制,导致在一开始启动时,整个操作被锁定,影响其他pod操作的执行效率。

优化方案

  • 去掉原有的大锁机制。
  • 引入Redisson分布式Redlock,仅锁定修改表结构的一段逻辑,细化锁的颗粒度。
  • 确保在修改表结构时,只锁定必要的操作部分,不影响其他数据库操作,也不影响其他操作,比如启动事件等。

测试方案

  • 测试在修改数据库表结构的过程中,其他数据库操作是否受到影响。
  • 验证Redlock锁定逻辑的准确性和有效性,确保在并发修改表结构时,锁定范围合理且有效。

3. 优化启动时间

问题描述

平台启动时间较长,影响用户体验和系统可用性。这是一个涉及到多个方面的问题,这里只是在大锁和修改表结构方面进行了相关的优化。

优化方案

  • 对启动流程进行分析和优化,减少不必要的加锁操作。

测试方案

  • 测试优化前后的启动时间,比较启动时间的变化。
  • 确保优化后系统功能正常,启动流程无异常。

测试环境

  • 分布式环境

测试用例

用例1:并发执行Setup操作

  • 前提条件:部署多个容器实例。
  • 操作步骤
    1. 启动多个容器实例,分别执行Setup操作。
    2. 观察数据库表结构的变化情况。
  • 预期结果:多个容器实例可以并发执行Setup操作,数据库表结构无锁表问题,操作响应时间符合预期。

用例2:并发执行Install Apps操作

  • 前提条件:部署多个容器实例。
  • 操作步骤
    1. 启动多个容器实例,分别执行Install Apps操作。
    2. 观察数据库表结构的变化情况。
  • 预期结果:多个容器实例可以并发执行Install Apps操作,数据库表结构无锁表问题,操作响应时间符合预期。

用例3:修改表结构时的锁定范围

  • 前提条件:部署多个容器实例。
  • 操作步骤
    1. 启动多个容器实例,同时执行修改表结构操作。
    2. 观察其他数据库操作是否受到影响。
  • 预期结果:修改表结构时,仅锁定必要的操作部分,其他数据库操作不受影响。

用例4:平台启动时间优化

  • 前提条件:无。
  • 操作步骤
    1. 启动平台,记录启动时间。
    2. 比较优化前后的启动时间。
  • 预期结果:优化后平台启动时间明显缩短,系统功能正常。

备注

  • 请测试人员在测试过程中,详细记录每个测试用例的执行情况和结果。
  • 如发现任何问题或异常,请及时反馈给开发团队。