# distributed_server **Repository Path**: bit--dream/distributed_server ## Basic Information - **Project Name**: distributed_server - **Description**: 分布式的服务器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-16 - **Last Updated**: 2026-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Distributed Server 分布式服务端微服务框架,基于 gRPC/Brpc 构建的高性能聊天服务器系统。 ## 项目简介 这是一个用 C++ 开发的高性能分布式服务端微服务框架,采用微服务架构设计,支持多种通信协议和服务发现机制。系统包含用户管理、消息收发、文件传输、好友关系、消息转发、语音识别等功能模块。 ## 技术栈 | 类别 | 技术 | |------|------| | RPC 框架 | gRPC, Brpc | | 数据序列化 | Protocol Buffers | | 数据库 | MySQL, Elasticsearch | | 缓存 | Redis | | 消息队列 | RabbitMQ | | 服务注册与发现 | etcd | | ORM | ODB | | 日志 | spdlog | | HTTP 客户端 | httplib | | 第三方 AI | 百度 AI 开放平台 (ASR) | ## 微服务模块 ``` distributed_server/ ├── gateway/ # 网关服务:客户端连接入口 ├── user/ # 用户服务:注册、登录、用户信息管理 ├── message/ # 消息服务:消息收发、历史记录、搜索 ├── file/ # 文件服务:文件上传下载 ├── friend/ # 好友服务:好友关系管理、好友申请 ├── transmit/ # 消息转发服务:跨服务消息路由 ├── speech/ # 语音服务:语音识别 (ASR) └── common/ # 公共组件:数据库、缓存、日志等工具库 ``` ### 各服务功能 - **gateway_server**: 客户端接入、连接管理、协议转发 - **user_server**: 用户注册/登录、获取/修改用户信息、邮箱验证、设置头像/昵称/个人描述 - **message_server**: 消息存储、历史查询、最近消息、关键词搜索 - **file_server**: 单文件/多文件上传下载 - **friend_server**: 好友列表管理、好友申请处理、黑名单 - **transmite_server**: 消息转发、会话成员管理 - **speech_server**: 语音识别 (集成百度 AI 开放平台 ASR) ## 系统架构 ``` ┌─────────────┐ │ Gateway │ │ Server │ └─────┬───────┘ │ ┌───────────────┼───────────────┐ │ │ │ ┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐ │ User │ │ Message │ │ File │ │ Server │ │ Server │ │ Server │ └──────────┘ └──────────┘ └──────────┘ │ │ │ ┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐ │ Friend │ │Transmit │ │ Speech │ │ Server │ │ Server │ │ Server │ └──────────┘ └──────────┘ └──────────┘ │ ┌───────────┼───────────┐ │ │ │ ┌─────┴─────┐┌─────┴─────┐┌───┴────┐ │ MySQL ││ Redis ││ etcd │ └───────────┘└───────────┘└───────┘ │ │ ┌─────┴─────┐┌───┴────┐ │Elasticsearch││RabbitMQ│ └───────────┘└───────┘ ``` ## 构建要求 - CMake >= 3.22 - GCC/G++ (支持 C++17) - Protocol Buffers >= 3.0 - MySQL >= 5.7 - Redis >= 5.0 - etcd >= 3.4 ## 快速开始 ### 编译 ```bash cd code mkdir build && cd build cmake .. make -j$(nproc) ``` 编译完成后,可执行文件位于 `code/build/bin/` 目录。 ### 配置 各服务配置文件位于 `code/` 目录下,使用 gflags 管理配置: ```bash # 示例配置 --rpc_listen_port=8000 --mysql_host=localhost --mysql_user=root --mysql_password=password --redis_host=localhost --etcd_host=localhost ``` ### 运行 ```bash # 启动用户服务 ./build/bin/user_server --flagfile=conf/user.conf # 启动消息服务 ./build/bin/message_server --flagfile=conf/message.conf # 启动文件服务 ./build/bin/file_server --flagfile=conf/file.conf # 启动好友服务 ./build/bin/friend_server --flagfile=conf/friend.conf # 启动转发服务 ./build/bin/transmite_server --flagfile=conf/transmite.conf # 启动语音服务 ./build/bin/speech_server --flagfile=conf/speech.conf ``` ### Docker 部署 项目提供了各服务的 Dockerfile,可使用 docker-compose 一键部署: ```bash cd code docker-compose up -d ``` ## 项目结构 ``` code/ ├── proto/ # Protocol Buffer 定义 ├── odb/ # ODB 对象映射模型 │ ├── user.hxx # 用户数据模型 │ ├── message.hxx # 消息数据模型 │ ├── relation.hxx # 好友关系模型 │ ├── friend_apply.hxx # 好友申请模型 │ ├── chat_session.hxx # 会话数据模型 │ └── chat_session_member.hxx # 会话成员模型 ├── common/ # 公共工具库 │ ├── logger.hpp # 日志 (spdlog) │ ├── mysql*.hpp # MySQL 连接池 │ ├── redis*.hpp # Redis 连接 │ ├── etcd.hpp # etcd 客户端 │ ├── es_data.hpp # Elasticsearch 操作 │ ├── rabbitmq.hpp # RabbitMQ 客户端 │ ├── smtp.hpp # 邮件发送 │ ├── utils.hpp # 工具函数 │ └── asr.hpp # 语音识别 ├── user/ # 用户服务源码 ├── message/ # 消息服务源码 ├── file/ # 文件服务源码 ├── friend/ # 好友服务源码 ├── transmit/ # 转发服务源码 ├── speech/ # 语音服务源码 ├── gateway/ # 网关服务源码 └── third/ # 第三方依赖 └── include/aip-cpp-sdk/ # 百度 AI SDK ``` ## 测试 项目中包含了各服务的测试用例: ```bash # 用户服务测试 ./build/bin/user_client # 消息服务测试 ./build/bin/message_client # 文件服务测试 ./build/bin/file_client # 转发服务测试 ./build/bin/transmite_client # 语音服务测试 ./build/bin/speech_client ``` ### 示例代码 项目提供了丰富的示例代码,位于 `example/` 目录: ```bash example/ ├── brpc/ # Brpc 服务端和客户端示例 ├── rpc/ # gRPC 示例 ├── redis/ # Redis 操作示例 ├── mysql/ # MySQL 操作示例 ├── mq/ # RabbitMQ 示例 ├── etcd/ # etcd 操作示例 ├── es/ # Elasticsearch 示例 ├── speech/ # 语音识别示例 ├── smtp/ # 邮件发送示例 ├── json/ # JSON 处理示例 ├── gtest/ # 单元测试示例 ├── spdlog/ # 日志示例 └── websocketpp/ # WebSocket 示例 ``` ## License MIT License