理解存储库分区
- Updated: 2025/04/18
存储库是使您能够管理自动化工作区(自动化和文件)的核心组件之一。 分区有助于扩展您的存储库,并优化与存储库相关的操作(例如签入和签出)的性能。
概述
Automation 360 存储库是一个单一的 Git 存储库,所有的 bots、表单、流程和依赖项文件都存储在其中。 由于该存储库基于 Git,因此具有一些开箱即用的版本控制功能,例如签入、签出、版本历史、回滚和版本比较。 因此,在 Automation 360 中并不要求集成外部远程 Git。
在 Automation 360 中,Git 存储库中的所有文件都是为版本控制而存储的。 随着时间的推移,Git 存储库可能会因文件数量、文件大小、Git 提交等因素而变得庞大。 这可能导致存储库操作执行出现延迟。
通过存储库分区,您可以将 Automation 360 存储库文件夹拆分为单独的 Git 存储库。 您可以在根级文件夹将大型公共存储库划分为多个 Git 存储库,选择特定文件夹级别进行划分,从而限制存储库分区中的任何性能问题。
优势
存储库分区的一些好处包括:
- 可快速签入和签出,操作速度更快
- 由于文件夹是分区的,因此每个分区文件夹的签入活动(提交)数量相对较少。 由于提交数量较少,签入和签出操作(包括并发签入和签出)的速度都会更快。
- Git 空间中文件夹的逻辑隔离
- 在 Git 中创建多个存储库可以降低单点故障的风险。 一个存储库中的问题不会对其他存储库或其中包含的自动化产生不利影响。
建议
在一个典型的生产场景中,会在机器人文件夹中创建与不同部门相对应的文件夹。 根据具体的业务流程或项目(多个业务流程),将在部门文件夹内创建子文件夹。 客户通常也会有可以在不同层级创建的共享库,并在其他流程中进一步共享。
考虑这样一种场景:不同的自动化或公民开发者同时将所有文件签入同一个分区(git 存储库)。 这可能会影响数据处理速度,造成相当长的延迟。 为了确保性能不受长期影响,请查看以下推荐的方法:
- 运营方法
- 建议为每个团队创建一个分区。 一个团队由一群从事相似业务流程的人组成。 将每组中的开发人员数量限制在 50 人或以下,以优化每个团队的绩效。 如果开发人员较多,可以将他们分配到不同的分区,以提高可扩展性。
- 确定要分区的文件夹
- 请查看以下关于文件夹分区的建议:
- 在其中一个 Control Room 节点的脚本目录中使用以下命令运行 RepositoryFolderSizeReport.exe 工具:
RepositoryFolderSizeReport.exe --root "Z:\Server Files\repository\16933f12-fdee-4a7f-8e76-a9bf127918c6\0\Automation Anywhere\Bots"
- 请确保将上述脚本替换为您环境中的正确租户 ID。
例如,16933f12-fdee-4a7f-8e76-a9bf127918c6。
- 使用 Z:\Server Files\repository 查看 NAS 驱动器。
- 生成包含文件夹路径及其相应大小(以 MB 为单位)的 folder_sizes.csv 报告。这使您能够规划文件夹分区。注: Git 建议您将存储库的大小限制在 2GB 以下,以获得最佳性能。
- 该实用工具将提供每个文件夹的大小,以帮助您规划文件夹分区。
- 在其中一个 Control Room 节点的脚本目录中使用以下命令运行 RepositoryFolderSizeReport.exe 工具:
- 超时设置
- 存储库分区会启动外部程序对文件夹进行分区。 如果该外部程序在 12 小时(默认值)内未提供输出,则会被终止,用户可以重新启动分区流程。 如果 12 小时的超时太长,您可以通过修改位于 <CR_Folder>\\config\\repository.properties 的属性文件将其更改为 2 小时。
确保通过设置秒数值来更新 repository.partition.read.line.timeout 属性的值。 例如,对于 2 小时的超时,将值设置为 7200。
在完成所有更改后重启内核。
- 监控存储库分区
-
- 使用 PartitionMonitor 脚本在日志文件中监控分区的进度。
- 在每个 CR 节点上运行 PartitionMonitor.ps1 脚本。
按照设计,分区请求在其中一个节点上处理。 因此,进度结果只能在该特定节点上看到。
- 打开 Windows PowerShell 并导航到脚本目录 (C:\scripts)。 运行以下命令:
.\PartitionMonitor.ps1 -sourceDirectory "C:\ProgramData\AutomationAnywhere\Logs" -outputFile out.log