rwadurian/backend/services/presence-service/scripts
hailin 747e4ae8ef refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing
- Remove Address field from PartyEndpoint (parties connect to router themselves)
- Update K8s Discovery to only manage PartyID and Role labels
- Add Party registration and SessionEvent protobuf definitions
- Implement PartyRegistry and SessionEventBroadcaster domain logic
- Add RegisterParty and SubscribeSessionEvents gRPC handlers
- Prepare infrastructure for party-driven MPC coordination

This is the first phase of migrating from coordinator-driven to party-driven
architecture following international MPC system design patterns.
2025-12-05 08:11:28 -08:00
..
README.md refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
health-check.sh refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
quick-test.sh refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
rebuild-kafka.sh refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
start-all.sh refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
stop-service.sh refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00

README.md

Presence Service 脚本说明

脚本列表

脚本 用途 使用场景
start-all.sh 一键启动所有服务 开发环境初始化
stop-service.sh 停止 Presence Service 重启服务、关闭开发环境
health-check.sh 检查所有服务健康状态 部署验证、故障排查
quick-test.sh 快速 API 功能测试 验证核心功能
rebuild-kafka.sh 重建 Kafka 容器 Kafka 配置变更后

另外,项目根目录还有:

脚本 用途 使用场景
deploy.sh 完整部署管理脚本 生产部署、容器管理

快速开始

1 一键启动(推荐)

./scripts/start-all.sh

这个脚本会:

  1. 启动 Docker 容器 (PostgreSQL, Redis, Kafka)
  2. 等待所有基础设施就绪
  3. 初始化数据库 (Prisma)
  4. 启动 Presence Service
  5. 验证服务可用

2 健康检查

./scripts/health-check.sh

期望输出:

🏥 Starting health check...

=== Database Service ===
Checking PostgreSQL ... ✓ OK
=== Cache Service ===
Checking Redis ... ✓ OK
=== Message Queue Service ===
Checking Kafka ... ✓ OK
=== Application Service ===
Checking Presence Service ... ✓ OK

======================================
Health Check Complete!
Passed: 4
Failed: 0
======================================
✓ All services are healthy!

3 快速测试

./scripts/quick-test.sh

验证核心 API 功能是否正常工作。

4 停止服务

./scripts/stop-service.sh

deploy.sh 使用指南

deploy.sh 是一个功能完整的部署管理脚本,支持以下命令:

# 构建 Docker 镜像
./deploy.sh build
./deploy.sh build-no-cache

# 启动/停止服务
./deploy.sh start          # 启动完整环境
./deploy.sh start-deps     # 只启动依赖(开发模式)
./deploy.sh stop           # 停止所有
./deploy.sh restart        # 重启

# 监控
./deploy.sh logs           # 实时日志
./deploy.sh logs-tail      # 最近 100 行日志
./deploy.sh status         # 服务状态
./deploy.sh health         # 健康检查

# 数据库
./deploy.sh migrate        # 生产环境迁移
./deploy.sh migrate-dev    # 开发环境迁移
./deploy.sh db-push        # 推送 Schema
./deploy.sh prisma-studio  # 打开 Prisma Studio

# 开发
./deploy.sh shell          # 进入容器 Shell
./deploy.sh test           # 运行所有测试
./deploy.sh test-unit      # 单元测试
./deploy.sh test-integration # 集成测试
./deploy.sh test-e2e       # E2E 测试

# 清理
./deploy.sh clean          # 删除容器和镜像

服务端口

服务 开发端口 说明
Presence Service 3011 NestJS 应用
PostgreSQL 5432 数据库
Redis 6379 缓存
Kafka 9092 消息队列
Zookeeper 2181 Kafka 协调

手动操作

只启动基础设施

docker compose -f docker-compose.dev.yml up -d

只启动应用

npm run start:dev

停止所有容器

docker compose -f docker-compose.dev.yml down

清理数据

# 停止容器并删除数据卷
docker compose -f docker-compose.dev.yml down -v

故障排查

PostgreSQL 连接失败

# 检查容器状态
docker ps -a | grep presence-postgres

# 查看日志
docker logs presence-postgres-dev

# 重启容器
docker compose -f docker-compose.dev.yml restart postgres

Redis 连接失败

# 检查容器状态
docker ps -a | grep presence-redis

# 测试连接
docker exec presence-redis-dev redis-cli ping

# 重启容器
docker compose -f docker-compose.dev.yml restart redis

Kafka 连接失败

# Kafka 启动较慢,等待 30-60 秒
docker logs presence-kafka-dev

# 检查 Zookeeper
docker exec presence-zookeeper-dev nc -z localhost 2181

# 重启 Kafka 和 Zookeeper
docker compose -f docker-compose.dev.yml restart zookeeper kafka

端口冲突

# 查找占用端口的进程
lsof -i :3011
lsof -i :5432
lsof -i :6379
lsof -i :9092

# 停止冲突进程
kill <PID>

Windows 用户

这些脚本是 Bash 脚本,在 Windows 上需要:

  1. Git Bash (推荐)
  2. WSL (Windows Subsystem for Linux)
  3. Docker Desktop (已包含 Linux 环境)
# 使用 Git Bash 运行
bash ./scripts/start-all.sh

# 或者直接使用 npm 命令
npm run start:dev

完整开发流程

# 1. 克隆项目
git clone <repository-url>
cd backend/services/presence-service

# 2. 安装依赖
npm install

# 3. 复制环境配置
cp .env.example .env.development

# 4. 启动所有服务
./scripts/start-all.sh

# 5. 运行健康检查
./scripts/health-check.sh

# 6. 运行测试
npm test
npm run test:e2e

# 7. 开发完成后停止
./scripts/stop-service.sh
docker compose -f docker-compose.dev.yml down

相关文档