Path-IM-Server
使用go-zero框架开发的IM服务器。 有高度定制IM需求的开发者,可以使用这个项目。
普通开发者可以在演示项目 基础上进行开发。
文档入口
优势
- 使用go-zero微服务框架 开发更方便 自带
链路追踪
,p2c服务负载均衡
,熔断限流
,自适应降载
等功能
- 不依赖
mysql
所有业务逻辑均请求你自己的业务rpc接口 你只需实现rpc接口即可
- 可以使用
cassandra
来替代 mongodb
- 类似
QQ
群聊的读扩散
模式 妈妈再也不用担心mongodb
/cassandra
写入性能问题了
- 使用dart开发sdk, 使用flutter做客户端, 直接生成5端代码
开源组件依赖
- mongodb or cassandra (离线消息存储 个人推荐cassandra)
- kafka (消息队列)
- redis (存储seq)
etcd (不依赖etcd)
mysql (不依赖mysql)
rancher 查看服务运行情况
业务架构图
业务流程图
部署运行
docker-compose
目录:deploy/local/pathim-docker
- !!!一定要先替换内网地址 目录下文件全部替换 替换ip地址
10.1.3.12
为内网/公网ip
- !!!一定要先替换内网地址 目录下文件全部替换 替换ip地址
10.1.3.12
为内网/公网ip
- !!!一定要先替换内网地址 目录下文件全部替换 替换ip地址
10.1.3.12
为内网/公网ip
如何安装docker-compose
linux
wget https://github.91chi.fun//https://github.com//docker/compose/releases/download/v2.5.1/docker-compose-linux-x86_64
chmod +x docker-compose-linux-x86_64 && mv docker-compose-linux-x86_64 /usr/bin/docker-compose
依赖
cd deploy/local/pathim-docker/dependencies
docker-compose up -d
打开内网/公网ip
:8081 进入kafka-ui 主动创建以下topic
- im_msg
- im_msg_push_single
- im_msg_push_group
Path-IM-Server各服务
确定你要使用的离线消息存储 mongo/cassandra
假设你使用mongo做离线消息存储
- 修改
deploy/local/pathim-docker/msg-rpc.yaml
--> HistoryDBType:mongo
- 删除
deploy/local/pathim-docker/docker-compose.yaml
中 msgtransfer-history-cassandra
服务
假设你使用cassandra做离线消息存储
- 修改
deploy/local/pathim-docker/msg-rpc.yaml
--> HistoryDBType:cassandra
- 删除
deploy/local/pathim-docker/docker-compose.yaml
中 msgtransfer-history-mongo
服务
cd deploy/local/pathim-docker
docker-compose up -d
服务运行情况
docker ps
jaeger
打开内网/公网ip
:16686 进入jaeger-ui
源码部署
编译命令
go build -o bin .
Dockerfile
FROM showurl/zerobase
WORKDIR /app
COPY ./bin /app/zeroservice
RUN chmod +x /app/zeroservice && mkdir /app/etc
CMD ["/app/zeroservice"]
docker容器中运行
docker run -v ./xxx.yaml:/app/etc/xxx.yaml your-image:tag