new
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
---
|
||||
opp_publish_id: "944175079304876032"
|
||||
opp_publish_status: published
|
||||
opp_publish_title: OpenIM源码分析之一---项目部署与结构
|
||||
---
|
||||
# 开始
|
||||
部署一套体验环境,参考[官方指引](https://docs.openim.io/zh-Hans/guides/gettingStarted/dockerCompose),Docker方式当然最便捷的。不过我们的目的当然不仅是,体验一下发个消息,对于项目结构本身依然还是0认知,通过源码部署,依照[官方文档-源码部署](https://docs.openim.io/zh-Hans/guides/gettingStarted/imSourceCodeDeployment),完成部署也不是什么难事。那么让我们从这里开始,一起走进OpenIM项目。
|
||||
# 部署结构
|
||||
## 依赖服务安装
|
||||
OpenIM已经准备好的依赖组件的Docker服务配置,位于项目[open-im-server](https://github.com/openimsdk/open-im-server)下。
|
||||
|
||||
`$ git clone https://github.com/openimsdk/open-im-server && cd open-im-server
|
||||
|
||||
| 组件类别 | OpenIM依赖以下组件 | 运维组件 | 测试组件 |
|
||||
| ---- | ------------------------------------------ | ------------------------------------- | ------------------------ |
|
||||
| 组件列表 | mongodb<br>redis<br>kafka<br>MinIO<br>etcd | prometheus<br>alertmanager<br>grafana | admin-front<br>web-front |
|
||||
| 可选 | 必选 | 可选 | 可选 |
|
||||
| 启动命令 | `$ docker compose up -d` | `$ docker compose --profile m up -d` | 跟随依赖组件启动 |
|
||||
### 文档补充说明:
|
||||
* [Minior的访问配置](https://docs.openim.io/zh-Hans/guides/gettingStarted/imSourceCodeDeployment#23-%E8%AE%BE%E7%BD%AE%E5%A4%96%E7%BD%91-ip-%E6%88%96%E5%9F%9F%E5%90%8D%E5%8F%82%E8%80%83-nginx-%E9%85%8D%E7%BD%AE)Minio主要用于存储用户对话过程中的文件,而这些请求是直接进minio的,因此需要配置域名,或用户可以访问的IP地址。若是内网,给Minio一个内网IP即可。端口号默认Docker启动Minio使用的端口,映射到了主体的10005,具体查看minio.yml配置确认。
|
||||
* [Go的代理](https://docs.openim.io/zh-hans/guides/gettingstarted/imsourcecodedeployment#24-%EF%B8%8F-%E5%88%9D%E5%A7%8B%E5%8C%96),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的部分。
|
||||

|
||||
Reference in New Issue
Block a user