Skip to content

Beaver IM - Open Source Enterprise IM Platform | 开源企业级即时通讯平台,基于微服务架构,支持实时聊天、跨平台部署

License

Notifications You must be signed in to change notification settings

wsrh8888/beaver-server

Repository files navigation

🦫 Beaver IM - 企业级即时通讯平台

License Go Go-Zero Build Status Coverage Stars

🚀 企业级即时通讯平台 - 基于Go-Zero微服务架构构建,支持移动端(UniApp)、桌面端(Electron)和Web端,提供实时通信能力。

English | 中文


🌟 核心特性

🔐 企业级安全

  • 多因子认证 - 邮箱验证、短信验证码、生物识别支持
  • 端到端加密 - 消息传输和存储加密
  • 基于角色的访问控制 - 细粒度权限管理和管理员控制
  • 审计日志 - 全面的安全事件追踪

💬 高级消息功能

  • 实时通信 - 基于WebSocket的即时消息
  • 多格式支持 - 文本、图片、文件、语音消息、表情
  • 消息状态 - 已读回执、正在输入提示、送达确认
  • 消息搜索 - 全文本对话搜索
  • 消息撤回 - 限时消息删除

👥 社交功能

  • 联系人管理 - 二维码扫描、联系人导入导出
  • 群组管理 - 创建、管理和审核群聊
  • 好友请求 - 带自定义消息的审批流程
  • 用户资料 - 丰富的个人资料信息和头像

🏗️ 微服务架构

  • 15+微服务 - 可扩展、可维护的服务分解
  • 高可用性 - 多实例部署支持
  • 服务发现 - 基于ETCD的服务注册
  • 负载均衡 - 智能请求分发
  • 熔断器 - 故障容忍和弹性

📱 跨平台支持

  • 移动应用 - 通过UniApp框架支持iOS/Android
  • 桌面应用 - 通过Electron支持Windows/macOS/Linux
  • API网关 - 第三方集成的RESTful API

🛠️ 技术栈

后端服务

技术 版本 用途
Go-Zero v1.6.0+ 微服务框架
gRPC v1.58+ 服务间通信
WebSocket - 实时消息
MySQL 8.0+ 主数据存储
Redis 6.0+ 缓存和会话管理
ETCD 3.5+ 服务发现和配置
Docker 20.0+ 容器化

前端技术

平台 框架 特性
移动端 UniApp + Vue 3 跨平台移动应用
桌面端 Electron + Vue 3 原生桌面体验

📊 性能指标

  • 消息延迟: 平均 < 100ms
  • 并发用户: 支持 10,000+
  • 消息吞吐量: 100,000+ 消息/秒
  • 可用性: 99.9% 正常运行时间
  • 响应时间: API响应 < 200ms

🏗️ 架构概览

┌─────────────────┐    ┌─────────────────┐
│   移动端应用     │    │   桌面端应用     │
│   (UniApp)      │    │   (Electron)    │
└─────────┬───────┘    └─────────┬───────┘
          │                      │
          └──────────────────────┘
                    │
                    ┌─────────────┴─────────────┐
                    │      API网关              │
                    │      (端口: 20800)        │
                    └─────────────┬─────────────┘
                                  │
        ┌─────────────────────────┼─────────────────────────┐
        │                         │                         │
┌───────▼────────┐    ┌───────────▼──────────┐    ┌────────▼────────┐
│   认证服务      │    │    用户服务           │    │   好友服务      │
│   API:20100    │    │   API:20000          │    │  API:20200      │
│   RPC:30100    │    │   RPC:30000          │    │  RPC:30200      │
└────────────────┘    └──────────────────────┘    └─────────────────┘
        │                         │                         │
┌───────▼────────┐    ┌───────────▼──────────┐    ┌────────▼────────┐
│   聊天服务      │    │    群组服务          │    │   文件服务      │
│   API:20300    │    │   API:20500          │    │  API:20600      │
│   RPC:30300    │    │   RPC:30500          │    │  RPC:30600      │
└────────────────┘    └──────────────────────┘    └─────────────────┘
        │                         │                         │
┌───────▼────────┐    ┌───────────▼──────────┐    ┌────────▼────────┐
│   WS服务       │    │   表情服务           │    │ 反馈服务        │
│   API:20400    │    │   API:20700          │    │  API:21400      │
│   -            │    │   -                  │    │  -              │
└────────────────┘    └──────────────────────┘    └─────────────────┘
        │
        └─────────────────────────────────────────────────────────────┐
                                                                      │
                    ┌─────────────────────────────────────────────────┴─┐
                    │              数据层                               │
                    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │
                    │  │    MySQL    │  │    Redis    │  │    ETCD     │ │
                    │  │   (8.0+)    │  │   (6.0+)    │  │   (3.5+)    │ │
                    │  └─────────────┘  └─────────────┘  └─────────────┘ │
                    └───────────────────────────────────────────────────┘

📚 文档与资源

🔗 相关项目

项目 仓库地址 说明
beaver-server GitHub | Gitee 后端微服务
beaver-mobile GitHub | Gitee 移动端应用
beaver-desktop GitHub | Gitee 桌面端应用

📱 功能展示

🔐 用户认证

登录界面 注册界面 找回密码

💬 聊天功能

消息主界面 私聊聊天 群聊聊天 发送文字 发送表情 聊天详情

👥 社交功能

好友列表 新的朋友 好友资料 编辑备注

🏠 朋友圈与群组

朋友圈 发布朋友圈 群聊列表 创建群聊 群聊详情 添加成员

👤 个人中心

我的主界面 编辑个人资料 二维码功能

⚙️ 系统功能

设置 更新 反馈 关于 声明

📁 项目结构

beaver-server/
├── app/                          # 微服务应用
│   ├── auth/                     # 认证服务
│   │   ├── auth_api/            # HTTP API层
│   │   └── auth_rpc/            # gRPC服务层
│   ├── chat/                     # 聊天服务
│   │   ├── chat_api/            # HTTP API层
│   │   ├── chat_rpc/            # gRPC服务层
│   │   └── chat_models/         # 数据模型
│   ├── dictionary/               # 字典服务
│   │   ├── dictionary_api/      # HTTP API层
│   │   └── dictionary_rpc/      # gRPC服务层
│   ├── feedback/                 # 反馈服务
│   │   ├── feedback_api/        # HTTP API层
│   │   └── feedback_models/     # 数据模型
│   ├── file/                     # 文件管理服务
│   │   ├── file_api/            # HTTP API层
│   │   ├── file_rpc/            # gRPC服务层
│   │   └── file_models/         # 数据模型
│   ├── friend/                   # 好友管理服务
│   │   ├── friend_api/          # HTTP API层
│   │   ├── friend_rpc/          # gRPC服务层
│   │   └── friend_models/       # 数据模型
│   ├── gateway/                  # API网关
│   ├── group/                    # 群组管理服务
│   │   ├── group_api/           # HTTP API层
│   │   ├── group_rpc/           # gRPC服务层
│   │   └── group_models/        # 数据模型
│   ├── moment/                   # 朋友圈服务
│   │   ├── moment_api/          # HTTP API层
│   │   └── moment_models/       # 数据模型
│   ├── user/                     # 用户管理服务
│   │   ├── user_api/            # HTTP API层
│   │   ├── user_rpc/            # gRPC服务层
│   │   └── user_models/         # 数据模型
│   └── ws/                       # WebSocket服务
│       └── ws_api/              # HTTP API层
├── common/                       # 共享组件
│   ├── middleware/              # HTTP/gRPC中间件
│   ├── models/                  # 共享数据模型
│   ├── response/                # 响应工具
│   └── validator/               # 请求验证
├── core/                        # 核心配置
│   ├── etcd.go                 # ETCD客户端
│   ├── gorm.go                 # 数据库连接
│   └── redis.go                # Redis客户端
├── static/                      # 静态资源
├── template/                    # 代码生成模板
└── utils/                       # 工具函数

🤝 贡献指南

我们欢迎社区贡献!详情请参阅贡献指南

如何贡献

  1. Fork 本仓库
  2. 创建 特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交 更改 (git commit -m 'Add some AmazingFeature')
  4. 推送 到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

贡献领域

  • 🐛 Bug报告 - 帮助我们识别和修复问题
  • 💡 功能建议 - 建议新功能和改进
  • 📝 文档 - 改进文档和示例
  • 🔧 代码贡献 - 提交代码改进和新功能
  • 🧪 测试 - 帮助测试和质量保证

📄 开源协议与免责声明

本项目基于 MIT 协议开源 - 详情请参阅 LICENSE 文件。

⚖️ 使用说明

项目定位:本项目主要用于技术学习和交流,希望为开发者提供一个学习和研究的平台。

使用建议

  • 📚 学习交流 - 欢迎用于个人学习、技术研究、学术交流
  • 🤝 开源贡献 - 欢迎提交代码改进、Bug修复、功能建议
  • 🔒 合规使用 - 请确保使用方式符合当地法律法规
  • 💡 创新应用 - 鼓励基于本项目进行创新性应用开发

温馨提示

  • 本项目采用 MIT 开源协议,您可以自由使用、修改和分发
  • 建议在使用前仔细阅读相关法律法规,确保合规使用
  • 如有疑问或需要帮助,欢迎通过 QQ 群或 GitHub Issues 交流

📋 项目来源标注要求

重要:如果您基于本项目进行二次开发或发布,必须在项目中保留以下信息:

🖥️ 前端项目(移动端/桌面端/Web应用)

  • 关于页面:必须在"关于我们"、"关于应用"或类似页面中包含项目来源标注
  • 必需文本:"基于 Beaver IM 开源IM项目开发"
  • 链接:必须提供可点击的原始项目链接

🔧 后端项目(服务器/API服务)

  • README.md:必须在项目介绍或描述中包含来源标注
  • 必需文本:"基于 Beaver IM 开源IM项目开发"
  • 链接:必须提供可点击的原始项目链接

📄 通用要求

  • LICENSE 文件:保留原项目 MIT 协议信息
  • 商业使用:公司或企业级商业应用必须事先获得明确授权

💡 友好提醒:本项目支持个人学习和个人商业使用。如果是公司或企业级商业应用,必须事先获得我们的明确授权,否则不得用于商业目的。

📖 详细法律条款:请参阅 LEGAL.md 文件了解完整的法律免责声明和使用要求。

⭐ Star历史

Star History Chart

☕ 请作者喝杯茶

如果这个项目对你有帮助,欢迎请作者喝杯茶 ☕

微信赞助码 支付宝赞助码

⭐ 支持项目

如果这个项目对你有帮助,请在GitHub上给我们一个 ⭐ Star!


Made with ❤️ by Beaver IM Team
企业级即时通讯平台

About

Beaver IM - Open Source Enterprise IM Platform | 开源企业级即时通讯平台,基于微服务架构,支持实时聊天、跨平台部署

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •