## 项目背景
本项目是一个高性能、可扩展的分布式通讯系统。项目名称为im, 使用·go语言开发
## 项目架构
### 整体架构
```
┌───────────────┐
│ 客户端层 │ (Web/Mobile/Desktop)
└───────┬───────┘
│
┌───────▼───────┐
│ 网关服务层 │ (API Gateway/负载均衡)
└───────┬───────┘
│
┌───────▼───────┐
│ 微服务层 │
├───────────────┤
│ 1.用户服务 │
│ 2.连接服务 │
│ 3.消息服务 │
│ 4.推送服务 │
└───────┬───────┘
│
┌───────▼───────┐
│ 基础服务层 │
├───────────────┤
│ 1.注册中心 │
│ 2.配置中心 │
│ 3.消息队列 │
│ 4.缓存服务 │
└───────────────┘
```
### 架构特点
- 微服务解耦
- 水平可扩展
- 高可用设计
- 松耦合架构
## 项目技术栈
### 后端
- 语言:Go 1.21+
- 框架:
- gRPC
- go-zero
- gin
- RPC:Protocol Buffers
### 中间件
- 注册中心:Etcd
- 消息队列:Kafka
- 缓存:Redis
- 数据库:PostgreSQL
- 监控:Prometheus + Grafana
- 链路追踪:Jaeger
### 部署
- 容器化:Docker
- 编排:Kubernetes
- 持续集成:GitHub Actions
## 第三方库
### 基础库
```go
package dependencies
var CoreLibs = []string{
"github.com/gorilla/websocket", // WebSocket支持
"github.com/golang-jwt/jwt", // JWT认证
"github.com/spf13/viper", // 配置管理
"go.uber.org/zap", // 日志库
"gorm.io/gorm", // ORM
"github.com/google/uuid", // UUID生成
}
var MicroserviceLibs = []string{
"google.golang.org/grpc", // gRPC框架
"github.com/go-kratos/kratos", // 微服务框架
"github.com/opentracing/opentracing-go", // 链路追踪
}
var CacheAndMQLibs = []string{
"github.com/go-redis/redis/v8", // Redis客户端
"github.com/Shopify/sarama", // Kafka客户端
}
```
## 项目目录结构
```
im-system/
│
├── api/ # API定义
│ ├── proto/ # Protobuf定义
│ └── openapi/ # Swagger文档
│
├── app/ # 微服务
│ ├── user/ # 用户服务
│ ├── message/ # 消息服务
│ ├── connection/ # 连接服务
│ └── push/ # 推送服务
│
├── pkg/ # 公共包
│ ├── auth/ # 认证模块
│ ├── logger/ # 日志模块
│ ├── middleware/ # 中间件
│ └── utils/ # 工具函数
│
├── configs/ # 配置文件
├── deployments/ # 部署相关
│ ├── docker/
│ └── kubernetes/
│
├── scripts/ # 开发脚本
├── test/ # 测试用例
└── docs/ # 项目文档
```
## 项目开发规范
### 代码规范
1. 遵循官方Go编码规范
2. 使用golangci-lint进行代码静态检查
3. 代码必须有完善注释
4. 单个函数不超过50行
5. 变量命名清晰、语义化
6. 引入本地文件使用本地引用,例如:
```go
import (
"im/pkg/logger"
)
```
### 测试要求
- 单元测试覆盖率>70%
- 所有核心服务必须有集成测试
- 使用golang/mock进行依赖模拟
docker
dockerfile
go
golang
jwt
kubernetes
postgresql
redis
+2 more
First Time Repository
go im
Go
Languages:
Dockerfile: 1.2KB
Go: 36.4KB
Shell: 9.9KB
Created: 1/9/2025
Updated: 1/9/2025
All Repositories (1)
go im