本项目是我在 高性能IM, 微服务, 分布式, 项目架构等方面从零基础开始的一次实践, 希望可以给你带来一些帮助.
- Redis
- MySQL
- ETCD:
./cmd/script/etcd
- NSQ:
./cmd/script/nsq
目录 ./cmd/run
下为不同模式下的入口, 目录名即为服务/模式
- 分布式相关入口
- api_rpc API 服务
- dispatch 消息分发服务
- gateway 用户连接, 网关服务
- group 群聊服务
- messaging 消息路由服务
- HTTP API
- api_http 通过 HTTP 服务访问 API 接口
- 单实例运行
- singleton
项目中提交的 /protobuf/gen
目录就是已经编译好的 go 源码.
/protobuf/compile.sh
为了方便调试, 部分情况下只需要单实例运行即可, 例如调试客户端, 消息收发流程, 分布式部署的调试要部署整个流程是比较麻烦的, 所以一般是每个服务单独调试.
go run ./cmd/run/singleton/main.go
如果觉得编译麻烦, 或者依赖出问题, 这里有编译好的.
这个是已经编译好的 Linux x64 环境下的单例模式可执行文件, 只需要在配置文件中改一下数据库相关即可运行.
Windows 环境在 Releases 中下载即可.
wget https://raw.githubusercontent.com/Glide-IM/Glide-IM/master/cmd/script/glide_im/fast_deploy.sh && chmod +x fast_deploy.sh && ./fast_deploy.sh
单机支持约 20w(4万消息吞吐量) 活跃用户同时聊天(100Mbps), 查看测试数据
介绍文章: GlideIM - Golang 实现的高性能的分布式 IM
- 微信群
参见 LICENSE