2. Nexus 架构:单节点架构、高可用架构、存储后端(Blob Store)设计

在生产环境中,Nexus Repository Manager 的架构设计直接决定了制品库的可用性、数据安全性和运维复杂度。本章将深入剖析 Nexus 的三种核心架构模式,并重点讲解存储后端(Blob Store)的设计原则与最佳实践。

2.1 单节点架构

单节点架构是 Nexus 最基础的部署形态,适用于开发测试环境或对可用性要求不高的场景。所有组件(Web UI、API、任务调度、Blob Store)运行在同一台服务器上。

适用场景: 小型团队(< 20人)、非关键业务、POC(概念验证)阶段。
Nexus 单节点架构 Nexus 主节点 Web UI / API / 调度器 本地 Blob Store 嵌入式 OrientDB 单点故障:节点宕机 → 服务完全不可用,数据可能丢失

单节点架构关键特征

维度说明
数据库内嵌 OrientDB,不支持外部数据库切换
存储本地文件系统或挂载的 NFS/S3 作为 Blob Store
高可用无,宕机即服务中断
备份需手动备份 Blob Store + 数据库目录
升级需停机维护,回滚复杂
⚠ 风险提示: 单节点架构下,OrientDB 数据库文件与 Blob Store 文件耦合在同一主机。一旦磁盘损坏,制品数据和元数据可能同时丢失,恢复难度极大。建议至少配置远程 Blob Store(如 S3)实现存储解耦。

2.2 高可用架构

Nexus 官方推荐的高可用方案基于 共享 Blob Store + 负载均衡 模式,通过多节点横向扩展消除单点故障。

核心原则: 无共享架构(Shared-Nothing)的变体——共享存储,无共享计算。每个 Nexus 节点拥有独立的 OrientDB 实例,但共享同一个 Blob Store。
Nexus 高可用架构(Active-Active) 负载均衡器(HAProxy/Nginx) Nexus 节点 1 OrientDB 实例 1 Nexus 节点 2 OrientDB 实例 2 共享 Blob Store S3 / NFS / 分布式文件系统 高可用关键设计 • 节点间通过 Blob Store 锁机制协调写入(S3 强一致性或 NFS 文件锁) • 每个节点独立处理请求,无主从之分 • 节点故障时,负载均衡自动摘除,不影响服务

高可用架构部署清单

  1. 负载均衡层: 配置健康检查(/service/rest/v1/status),启用会话亲和性(可选)。
  2. Nexus 节点: 所有节点使用相同的 nexus.properties 配置,指向同一 Blob Store。
  3. 共享存储: 推荐使用 AWS S3 或兼容对象存储(MinIO),避免 NFS 锁竞争问题。
  4. 数据库: 每个节点独立运行 OrientDB,元数据不共享。上传/删除操作通过 Blob Store 的原子操作同步。
  5. 监控: 配置节点级告警(CPU、内存、磁盘、Blob Store 延迟)。
💡 最佳实践: 生产环境建议至少部署 2 个 Nexus 节点,配合 3 副本的 S3 Blob Store。节点数不建议超过 4 个,否则 OrientDB 的协调开销会显著增加。

2.3 存储后端(Blob Store)设计

Blob Store 是 Nexus 存储制品二进制文件的抽象层。其设计直接影响性能、成本和灾难恢复能力。

2.3.1 Blob Store 类型对比

类型存储后端适用场景关键限制
File本地磁盘 / NFS 挂载单节点、低延迟需求NFS 锁性能差,不支持跨区域
S3AWS S3 / MinIO / Ceph RGW高可用、多节点、云原生需配置 IAM 权限,网络延迟较高
Azure BlobAzure StorageAzure 生态用户仅 Azure 环境
Google Cloud StorageGCSGCP 生态用户仅 GCP 环境

2.3.2 Blob Store 配置示例(S3)

# nexus.properties 关键配置
nexus.blobstores.s3.default.bucket=my-nexus-blobstore
nexus.blobstores.s3.default.region=us-east-1
nexus.blobstores.s3.default.prefix=prod/
nexus.blobstores.s3.default.expiration=7
nexus.blobstores.s3.default.encryption=AES256

2.3.3 Blob Store 设计原则

  • 存储与计算分离: 始终将 Blob Store 独立于 Nexus 节点部署,便于节点扩缩容。
  • 对象存储优先: 高可用架构下,S3 兼容存储是首选。NFS 在并发写入时容易出现文件锁超时。
  • 生命周期管理: 配置 Blob Store 的过期策略,自动清理未使用的临时文件(如上传中断的碎片)。
  • 加密与合规: 启用服务端加密(SSE-S3 或 SSE-KMS),敏感制品建议额外使用客户端加密。
  • 监控指标: 关注 Blob Store 的 请求延迟、错误率、存储用量,设置对应告警阈值。
⚠ 常见陷阱: 不要将 Blob Store 和 OrientDB 数据库放在同一块磁盘上。数据库的 I/O 竞争会导致 Nexus 任务调度延迟,严重时引发节点心跳超时。

2.4 架构选型决策矩阵

需求单节点高可用(S3 Blob Store)
可用性 SLA99.5% 以下99.95% 以上
节点故障恢复时间小时级(需重建)分钟级(自动摘除)
数据持久性依赖单盘 RAID依赖 S3 11个9的持久性
运维复杂度低中(需管理负载均衡和对象存储)
成本(3年TCO)低(1台服务器)中(2台服务器 + S3 存储费)
💡 选型建议: 如果团队规模超过 50 人,或制品库承载 CI/CD 核心链路,请直接选择高可用架构。单节点架构仅适合个人开发或内部工具验证。