一款高可靠, 高性能的 IM 服务, 支持分布式集群部署, 单机(单实例)部署.
GlideIM 是一款完全开源的 IM 服务, 支持单实例, 微服务等多种方式部署. 支持 WebSocket, TCP 两种连接协议, 内置 JSON, ProtoBuff 两种消息交换协议, 并支持添加协议解析过程, 消息加密等. GlideIM 还实现了智能心跳保活机制, 死链接检测, 消息 ACK 机制等功能.
- 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