4.2 KiB
opp_publish_id, opp_publish_status, opp_publish_title
| opp_publish_id | opp_publish_status | opp_publish_title |
|---|---|---|
| 944175079304876032 | published | OpenIM源码分析之一---项目部署与结构 |
开始
部署一套体验环境,参考官方指引,Docker方式当然最便捷的。不过我们的目的当然不仅是,体验一下发个消息,对于项目结构本身依然还是0认知,通过源码部署,依照官方文档-源码部署,完成部署也不是什么难事。那么让我们从这里开始,一起走进OpenIM项目。
部署结构
依赖服务安装
OpenIM已经准备好的依赖组件的Docker服务配置,位于项目open-im-server下。
`$ git clone https://github.com/openimsdk/open-im-server && cd open-im-server
| 组件类别 | OpenIM依赖以下组件 | 运维组件 | 测试组件 |
|---|---|---|---|
| 组件列表 | mongodb redis kafka MinIO etcd |
prometheus alertmanager grafana |
admin-front web-front |
| 可选 | 必选 | 可选 | 可选 |
| 启动命令 | $ docker compose up -d |
$ docker compose --profile m up -d |
跟随依赖组件启动 |
文档补充说明:
- Minior的访问配置Minio主要用于存储用户对话过程中的文件,而这些请求是直接进minio的,因此需要配置域名,或用户可以访问的IP地址。若是内网,给Minio一个内网IP即可。端口号默认Docker启动Minio使用的端口,映射到了主体的10005,具体查看minio.yml配置确认。
- Go的代理,golang语言没限制,不过golang依赖库的机制对github有非常强的依赖,大部分的依赖库都在github上,源码运行,需要配置go依赖的代理。
核心服务
在上面的准备基础完成之后,使用openim的指定的编译工具,mage start就可以直接启动核心服务了,这里看原文,不赘述。 如果自己的系统需要IM,那么到此为止,便可以基于OpenIM,来进行二次开发了。 但如果你想直接上手试一下消息,就需要下面的AppServer演示服务接口。
AppServer演示接口服务
核心服务中,有USER的逻辑,但是却没有账号体系,因此上面的web-front和admin-front项目,可以打开,但却没办法登录,这需要另外的实现账号机制的后端的API服务。这个服务即AppServer,需要另外部署。
服务获取:$ git clone https://github.com/openimsdk/chat&& cd chat
如果您是在本地部署,那么admin-front的默认端口应该是11002,浏览器打开http://localhost:11002即可。
系统初始的管理员账号与密码是:chatAdmin/chatAdmin。
核心服务结构
- 主服务:
- openim-api:对客户端曝露的核心服务,http协议,信息查询,与消息发送请求。
- openim-msggateway:对客户端曝露的核心服务,ws协议,处理客户端实时消息发送与监听。
- openim-cmdutil
- openim-crontask
- openim-msgtransfer
- openim-push
- 底层服务
- openim-rpc-auth
- openim-rpc-conversation
- openim-rpc-friend
- openim-rpc-group
- openim-rpc-msg
- openim-rpc-third
- openim-rpc-user
SDK结构
OpenIM的SDK支持多平台,核心使用golang编写,封装了对API服务请求,与长链接的处理逻辑。而各端的封装主要完成了客户端参数配置,与桥接Golang的部分。

