Leaforum 是一个使用 Go 构建的现代化、高性能论坛系统,具有可扩展的架构,专为社交互动和内容分享而设计。
功能特点
- 用户认证:完整的用户注册、登录和账户管理
- 内容管理:发布、编辑和管理文章及内容
- 社交互动:关注用户、点赞、评论和收藏文章
- 实时信息流系统:优化性能的混合推拉式信息流分发模型
- 搜索功能:基于 Elasticsearch 的内容搜索
- 通知系统:实时事件通知
- 云存储:集成阿里云 OSS 的文件上传
架构
Leaforum 采用清晰、模块化的架构:
- Web 层:基于 Gin 框架的 API 端点
- 服务层:核心业务逻辑
- 仓库层:数据访问抽象
- 领域层:业务实体和模型
- 事件系统:基于 Kafka 的事件处理
技术栈
- 后端:Go 1.23+
- 数据库:MySQL 8.0+
- 缓存:Redis
- 消息队列:Kafka
- 搜索引擎:Elasticsearch
- 云存储:阿里云 OSS
- 容器化:Docker、Kubernetes
快速开始
前置条件
- Go 1.23+
- Docker 和 Docker Compose(用于本地开发)
- MySQL 8.0+
- Redis
- Kafka
- Elasticsearch
安装
-
克隆仓库:
git clone https://github.com/inannan423/leaforum.git cd leaforum
-
配置环境: 基于示例创建配置文件:
cp config/[env].example.yaml config/dev.yaml
编辑配置文件,填入您的设置。
-
使用 Docker Compose 启动所需服务:
docker-compose up -d
-
构建并运行应用:
go build -o leaforum ./leaforum
Docker 部署
构建 Docker 镜像并在容器中运行应用:
make docker
docker run -p 8080:8080 -v $(pwd)/config:/app/config leaforum:latest
Linux 部署
构建 Linux 可执行文件:
GOOS=linux GOARCH=amd64 go build -o leaforum-linux-amd64
Kubernetes 部署
Leaforum 可以使用 k8s
目录中的配置在 Kubernetes 上部署。
详细部署说明请参阅 k8s/guide.md
。
开发
项目结构
├── config/ # 配置文件
├── docs/ # 文档
├── internal/ # 内部应用代码
│ ├── domain/ # 领域模型
│ ├── events/ # 事件处理
│ ├── job/ # 后台任务
│ ├── repository/ # 数据访问层
│ ├── service/ # 业务逻辑
│ └── web/ # Web 处理器
├── ioc/ # 依赖注入
├── pkg/ # 共享包
├── script/ # 设置和维护脚本
└── k8s/ # Kubernetes 部署配置