Files
obsidian_vault/技术研究/OpenIM/OpenIM源码分析之一---项目部署与结构.md
T
2025-12-27 11:44:50 +08:00

4.2 KiB
Raw Blame History

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

主服务与底层服务之间的关系 |center|800

SDK结构

OpenIM的SDK支持多平台,核心使用golang编写,封装了对API服务请求,与长链接的处理逻辑。而各端的封装主要完成了客户端参数配置,与桥接Golang的部分。 800