ThingWorx 高可用性 > 在 ThingWorx HA 中管理 ThingWorx 扩展
在 ThingWorx HA 中管理 ThingWorx 扩展
在 ThingWorx HA 配置中,ThingWorx 扩展存储于数据库中,并在本地文件系统中缓存。这是为了确保新的 ThingWorx 主导节点可以使用存储在数据库中的最新扩展来恢复操作。
在启动期间,ThingWorx 主导节点检查数据库是否存在扩展更新,并在本地应用这些更新。如果数据库中的扩展与本地 ThingworxStorage/extensions 目录中的扩展之间存在差异,ThingWorx 则会将数据库版本视为最新而将本地 ThingworxStorage/extensions 版本视为已过期。
扩展导入过程
导入扩展时,系统会执行以下操作:
1. 对扩展 zip 文件执行校验和,并将其作为 <扩展名称>.chk 文件保存到 ThingworxStorage/extensions/<扩展名称> 目录中。
2. 将 zip 解压缩到 ThingworxStorage/extensions/<扩展名称> 目录。
3. 创建、部署 ExtensionPackage 实体 (及任何其他实体) 并将其持久保存到数据库。
4. 将 zip 文件和校验和持久保存到数据库。
如果系统在这些步骤中失败,则会尝试退出导入。该 Zip 持久存在,因此,如果扩展部署失败,则不会将扩展部署到数据库中供其他备用节点选择并会造成损坏。
ThingWorx 主导节点扩展审阅过程
当 ThingWorx 主导节点启动时,将针对每个扩展执行以下步骤:
1. 取消部署扩展。
2. 其校验和值将从名为 ThingworxStorage/extensions/<扩展名称>/<扩展名称>.chk 的校验和文件中读取。
3. 扩展的校验和值将从持久层中读取。
4. 比较这两个校验和值。
a. 如果校验和值相同
a. ThingWorx 视为数据库与本地扩展相匹配
b. 未进行任何更改。
b. 如果校验和值不匹配
a. 扩展的 zip 副本将从持久层读取。
b. 将其提取到临时目录中,例如 ThingworxStorage/extensions/temp/<扩展名称><随机>
c. 将从 ThingworxStorage/extensions/<扩展名称> 中删除旧版扩展。
d. 将提取的 zip 的副本复制到旧的扩展目录 ThingworxStorage/extensions/<扩展名称>
e. 在扩展目录 ThingworxStorage/extensions/<扩展名称>/<扩展名称>.chk 中创建新的校验和文件
f. 扩展已部署。
如果系统在上述任一步骤中失败,则会尝试清理其所能清理的内容。如果无法将扩展的旧副本替换为持久层中的副本,则会加载旧副本。
扩展移除过程
删除扩展时,会发生以下情况:
1. 取消部署扩展。
2. 从数据库中删除 zip。
3. 从数据库中删除 ExtensionPackage 实体。
4. 将删除 ThingworxStorage/extensions/<扩展名称> 目录,包括校验和。