首页
/ OpenCRVS核心系统Docker Compose部署架构解析

OpenCRVS核心系统Docker Compose部署架构解析

2025-07-09 16:22:20作者:平淮齐Percy

OpenCRVS是一个开源的民事登记和生命事件记录系统,其核心组件采用微服务架构设计。本文将从技术架构角度深入分析其docker-compose.yml文件,帮助开发者理解系统各服务模块的组成和交互关系。

一、基础架构概述

OpenCRVS采用典型的微服务架构,通过Docker Compose编排多个服务容器。整个系统由以下几类服务组成:

  1. 核心业务服务(如注册、认证、工作流等)
  2. 数据服务(数据库、搜索引擎等)
  3. 辅助服务(配置、通知、文档等)
  4. 监控与指标服务

二、核心服务模块详解

1. 基础服务(base)

作为整个系统的基础镜像,其他服务都依赖于它。该服务设置了replicas: 0,表明它仅作为构建基础,不直接运行。

2. 客户端服务(client)

前端用户界面服务,主要特性:

  • 依赖基础服务
  • 连接国家配置服务(countryconfig)和网关(gateway)
  • 采用unless-stopped重启策略确保高可用

3. 网关服务(gateway)

系统的API网关,关键配置:

  • 集成Redis用于会话管理
  • 连接所有核心后端服务
  • 配置了令牌和短信验证码的过期时间
  • 开发环境配置(NODE_ENV=development)

4. 认证服务(auth)

负责系统认证和安全:

  • 使用Redis存储会话
  • 配置令牌和短信验证码过期策略
  • 集成用户管理、通知和指标服务

三、业务工作流服务

1. 工作流服务(workflow)

核心业务处理引擎:

  • 连接搜索、指标、文档等关键服务
  • 支持FHIR标准的医疗数据交互
  • 可配置国家代码(默认为孟加拉bgd)

2. 搜索服务(search)

提供数据检索功能:

  • 集成Elasticsearch(ES)实现高效搜索
  • 连接MongoDB存储库
  • 支持FHIR协议数据查询

3. 事件服务(events)

处理系统事件:

  • 使用Elasticsearch存储事件日志
  • 集成文档和用户管理服务

四、数据与存储服务

1. 用户管理(user-mgnt)

集中管理用户数据:

  • 使用专用MongoDB数据库
  • 集成通知和指标服务
  • 支持FHIR协议数据交互

2. 文档服务(documents)

处理系统文档:

  • 独立服务确保文档处理性能
  • 连接国家配置服务

3. 数据迁移(migration)

负责数据迁移和初始化:

  • 连接所有MongoDB数据库
  • 依赖Elasticsearch和InfluxDB
  • 等待关键服务就绪机制(WAIT_HOSTS)

五、辅助服务

1. 通知服务(notification)

处理系统通知:

  • 可配置国家特定设置
  • 连接用户管理服务

2. 配置服务(config)

集中管理系统配置:

  • 专用MongoDB存储配置
  • 提供统一的配置API
  • 集成认证和搜索服务

3. 指标服务(metrics)

系统监控和指标收集:

  • 使用InfluxDB存储时间序列数据
  • 多数据源集成(MongoDB各数据库)
  • 提供性能监控看板数据

六、部署特点分析

  1. 环境变量配置:大量使用环境变量实现灵活配置
  2. 服务发现:通过Docker网络使用服务名称进行内部通信
  3. 健康检查:关键服务间有明确的依赖关系
  4. 开发友好:默认使用开发环境配置
  5. 可扩展性:微服务架构便于单独扩展特定服务

七、最佳实践建议

  1. 生产部署时应调整NODE_ENV为production
  2. 根据实际负载调整各服务的资源限制
  3. 敏感配置应考虑使用Docker secrets管理
  4. 监控服务应确保高可用配置
  5. 定期备份关键数据服务(MongoDB, Elasticsearch)

通过这份docker-compose配置,OpenCRVS实现了一个完整、可扩展的民事登记系统架构,各服务职责明确,通过定义良好的接口进行交互,既保证了系统的灵活性,又确保了核心业务的可靠性。

登录后查看全文
热门项目推荐