Skip to content

Latest commit

 

History

History
83 lines (66 loc) · 2.8 KB

File metadata and controls

83 lines (66 loc) · 2.8 KB

Sync Service (同步服务)

这是一个基于 Java Spring Boot 和 Netty 构建的高性能文件同步与通知服务。它旨在处理文件操作、项目管理,并提供实时的操作通知功能。

主要功能

1. 文件与目录管理

提供了一系列 API 用于管理文件系统,包括:

  • 创建目录 (Mkdir)
  • 上传文件 (UploadFile)
  • 删除文件/目录 (DeleteFile, DeleteDir)
  • 记录文件打开状态 (RecordOpenFile)
  • 获取文件配置 (GetFileConfig)

2. 项目管理

  • 获取用户项目 (GetUserProjects)
  • 移除项目 (RemoveProjects)
  • 支持项目实体的管理与同步。

3. 实时通知系统

  • 支持基于 Redis 的发布/订阅模式或直接 HTTP 回调的通知机制。
  • 客户端可以注册监听特定的事件类型 (RegisterNotification/DeregisterNotification)。
  • 支持多种通知类型(如文件变更、项目更新等)。
  • 异步发送通知,确保核心业务的高性能。

4. 数据同步与持久化

  • 双层存储架构:使用 Redis 作为高速缓存/缓冲区,PostgreSQL 作为持久化存储。
  • 自动同步:内置定时任务 (RedisToDbSyncService),每 5 分钟自动将 Redis 中的变更数据同步到 PostgreSQL 数据库,确保数据一致性。

5. 高性能网络层

  • 使用 Netty 作为底层网络通信框架,替代传统的 Tomcat 容器,以处理高并发的 I/O 请求。
  • 自定义协议处理与端点分发 (EndpointFactory)。

技术栈

  • 核心框架: Spring Boot 3.4.0
  • 网络框架: Netty
  • 数据库: PostgreSQL
  • 缓存/消息中间件: Redis
  • ORM/数据访问: MyBatis, Druid 连接池
  • 工具库: FastJSON2, Commons IO
  • 构建工具: Maven
  • JDK 版本: Java 17

快速开始

环境要求

  • JDK 17+
  • Maven 3.x
  • PostgreSQL
  • Redis

配置

src/main/resources/application.yml (或 application-dev.yml/application-prod.yml) 中配置:

  • 数据库连接信息 (PostgreSQL)
  • Redis 连接信息
  • Netty 监听端口
  • 文件存储路径

Docker 部署

使用以下命令启动服务:

docker run -p 8888:8888 \
  -v /home/npc/docker/sync:/data/sync \
  --name sync \
  -d openjdk:17 \
  java -jar /data/sync/sync-service-0.1.jar \
  --spring.config.location=file:/path/to/your/application.yml

开发说明

目录结构

  • src/main/java/com/npc/sync/server: Netty 服务端实现
  • src/main/java/com/npc/sync/controller: API 端点定义与实现
  • src/main/java/com/npc/sync/scheduler: 定时任务(如 Redis 到 DB 的同步)
  • src/main/java/com/npc/sync/notification: 通知服务逻辑

添加新 API

  1. com.npc.sync.controller.impl 包下创建新的类。
  2. 实现 Endpoint 接口。
  3. Spring 容器会自动扫描并注册组件。