技能标识:teamgram-server-architecture
Teamgram Server architecture guide for building Telegram-compatible backends. Use when designing service topology, implementing MTProto services, or self-hosting Teamgram. Covers service拆分, data flow, deployment patterns, and development workflows based on the official teamgram/teamgram-server repository.
基于官方 teamgram/teamgram-server 仓库的完整架构指南。
⚠️ 免责声明与安全提示
本技能基于对开源项目 teamgram/teamgram-server 的分析整理,仅供学习参考。
重要提示:
- - 内容可能随官方仓库更新而过时,请以官方最新版本为准
- 生产环境使用前请自行验证所有配置和代码
- 部署配置中的密码、密钥等必须使用强密码并通过安全方式注入
- 建议直接参考官方文档: https://github.com/teamgram/teamgram-server
- 生产环境部署前请进行安全审计和渗透测试
Teamgram 服务器是一个非官方的开源 Go 语言 MTProto 服务器实现,兼容 Telegram 客户端并支持自托管部署。
API 层: 223(截至技能创建时,请以官方仓库最新版本为准)
MTProto 版本: Abridged、Intermediate、Padded intermediate、Full
┌─────────────────┐
│ 负载均衡器 │
│ (Nginx/HA) │
└────────┬────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌───────▼───────┐ ┌────────▼────────┐ ┌──────▼──────┐
│ gnetway │ │ httpserver │ │ session │
│ (TCP/MTProto)│ │ (HTTP API) │ │ (WebSocket) │
└───────┬───────┘ └────────┬────────┘ └──────┬──────┘
│ │ │
└────────────────────┼────────────────────┘
│
┌────────▼────────┐
│ BFF 层 │
│ (业务逻辑) │
└────────┬────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌───────▼───────┐ ┌────────▼────────┐ ┌──────▼──────┐
│ 服务层 │ │ 服务层 │ │ 服务层 │
└───────────────┘ └─────────────────┘ └─────────────┘
| 服务 | 协议 | 用途 |
|---|---|---|
| gnetway | TCP/MTProto | 主要客户端网关,处理 MTProto 加密 |
| httpserver |
后端对前端聚合层:
| 服务 | 职责 | 关键特性 |
|---|---|---|
| authsession | 认证与会话 | 认证密钥管理,会话验证 |
| biz |
| 服务 | 用途 |
|---|---|
| msg | 消息路由与投递 |
| sync |
biz 服务是一个单体业务逻辑容器:
app/service/biz/
├── biz/ # 核心业务操作
├── chat/ # 群组/频道管理
├── code/ # 验证码(短信/邮件)
├── dialog/ # 会话管理
├── message/ # 消息存储与检索
├── updates/ # 实时更新推送
└── user/ # 用户资料与设置
对于大规模部署,将 biz 拆分为:
chat-service/ - 群组与频道管理
message-service/ - 消息 CRUD 与搜索
user-service/ - 用户资料与联系人
notification-service/ - 推送通知
客户端 → gnetway → session → msg → message (biz)
↓
MySQL (持久化)
↓
Kafka (广播)
↓
sync → updates → 客户端
客户端 → gnetway → authsession
↓
MySQL (auth_keys)
↓
Redis (会话)
客户端 → gnetway → dfs → MinIO
↓
MySQL (file_metadata)
| 组件 | 用途 | 必需 |
|---|---|---|
| MySQL 5.7+ | 主数据存储 | ✅ 是 |
| Redis |
teamgram-server/
├── app/
│ ├── bff/ # 后端对前端
│ ├── interface/ # 网关层
│ │ ├── gnetway/ # MTProto 网关
│ │ ├── httpserver/ # HTTP API
│ │ └── session/ # WebSocket 会话
│ ├── messenger/ # 消息路由
│ │ ├── msg/ # 消息服务
│ │ └── sync/ # 同步服务
│ └── service/ # 核心服务
│ ├── authsession/ # 认证与会话
│ ├── biz/ # 业务逻辑
│ ├── dfs/ # 文件存储
│ ├── geoip/ # 地理位置
│ ├── idgen/ # ID 生成器
│ ├── media/ # 媒体处理
│ └── status/ # 在线状态
├── pkg/ # 共享包
│ ├── code/ # 错误码
│ ├── conf/ # 配置
│ ├── net2/ # 网络工具
│ └── ...
├── clients/ # 客户端 SDK
├── data/ # SQL 模式
├── docs/ # 文档
└── specs/ # 架构规范
Teamgram 使用 TL(类型语言)模式:
bash
bash
每个服务遵循以下结构:
app/service/
├── cmd/ # 入口点
├── etc/ # 配置
├── internal/
│ ├── config/ # 配置结构
│ ├── core/ # 业务逻辑
│ ├── dao/ # 数据访问
│ ├── server/ # gRPC/HTTP 处理器
│ └── svc/ # 服务上下文
└──
yaml
以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:
帮我安装 SkillHub 和 teamgram-server-architecture-1776081842 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 teamgram-server-architecture-1776081842 技能
skillhub install teamgram-server-architecture-1776081842
文件大小: 11.58 KB | 发布时间: 2026-4-15 14:37