这是一个基于 Java Spring Boot 和 Netty 构建的高性能文件同步与通知服务。它旨在处理文件操作、项目管理,并提供实时的操作通知功能。
提供了一系列 API 用于管理文件系统,包括:
- 创建目录 (
Mkdir) - 上传文件 (
UploadFile) - 删除文件/目录 (
DeleteFile,DeleteDir) - 记录文件打开状态 (
RecordOpenFile) - 获取文件配置 (
GetFileConfig)
- 获取用户项目 (
GetUserProjects) - 移除项目 (
RemoveProjects) - 支持项目实体的管理与同步。
- 支持基于 Redis 的发布/订阅模式或直接 HTTP 回调的通知机制。
- 客户端可以注册监听特定的事件类型 (
RegisterNotification/DeregisterNotification)。 - 支持多种通知类型(如文件变更、项目更新等)。
- 异步发送通知,确保核心业务的高性能。
- 双层存储架构:使用 Redis 作为高速缓存/缓冲区,PostgreSQL 作为持久化存储。
- 自动同步:内置定时任务 (
RedisToDbSyncService),每 5 分钟自动将 Redis 中的变更数据同步到 PostgreSQL 数据库,确保数据一致性。
- 使用 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 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.ymlsrc/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: 通知服务逻辑
- 在
com.npc.sync.controller.impl包下创建新的类。 - 实现
Endpoint接口。 - Spring 容器会自动扫描并注册组件。