IM客户端架构设计

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 一些关于IM客户端架构的总结

前言

我目前负责一个办公类App开发,为用户提供在线聊天,音视频通话,文件传输,以及办公小程序容器等功能,同时还提供PC、Pad、Phone三个平台设备客户端。RD们需要提供的能力有:IM基础通讯,IM消息端对端加密,OSS文件存储与上传下载管理,用户权限控制等等功能。

从功能复杂度上看,这将是一个大型的开发项目,所以架构设计将对项目的迭代非常重要,不论是业务功能的可维护性还是在模块的低耦合都是架构设计需要考虑的。

架构大纲

kCO5Dk-202102071042211612665741

主业务模块

主业务模块,从名字上可以看出是一个偏向业务定制的模块。

这个模块中页面或者功能在设计时更多考虑的是业务快速实现。例如:注册登录界面,用户详情展示页,第三方库的封装配置,通用模块的注册与配置。

当某个功能经过迭代成长,具有一定的通用业务能力时,会从主业务模块中拆分出来,封装成单独模块供其他业务使用。例如:用户的权限管理,网络时钟工具,HTTP连接管理模块。

IM模块

作为一个办公类IM App,IM模块是最重要的一个模块。这个模块从功能上,分为通讯数据管理与UI展示两个部分。

UI展示的功能有:聊天会话列表,聊天会话的定制化(输入控制面板,气泡样式定制等),音视频通话界面等。

通讯数据管理的功能有:IM的连接状态管理,IM的消息收发管理,信令管理,数据库管理等。

OSS与文件管理模块

源于IM模块,为IM提供文件传输的功能。由于OSS上传下载以及本地文件管理有着很强的通用性,于是对这个模块进行了单独分装。

这个模块提供本地文件存储,下载进度管理,断点续传,分片上传等OSS功能。

端对端加密能力模块

通过DH、AES、RSA等加密算法,提供两个设备端之间可以通过公私钥交换搭建安全信道的协议。同时需要实现证书结构,与后台CA共同维护设备证书。

这模块属于专业功能,封装了整套端对端加密的算法实现。

身份与权限模块

源于主业务模块,维护用户的鉴权信息,如token有效性,用户的基础信息等。同时也维护服务端下发的用户权限配置,实现客户端用户权限管理。

App业务配置模块

管理通用模块的注册逻辑,提供优先级管理,自动注册等功能。

搜索模块

负责如首页搜索,全局或局部的数据搜索业务。

注册和管理不同模块的搜索能力,方便在不同的模块中使用搜索功能。

需要注意的是搜索API需要异步实现,并且当出现高并发时需要取消失效的搜索任务,只匹配最新的搜索条件。比如用户开始搜索,在第一次搜索结果未返回时,用户又连续搜索了4次,如果不做处理,则会生成5个搜索结果,而其中的2,3,4其实是无效的搜索条件,当第1次搜索结束后,可以直接进行第5次搜索的匹配。

Hybrid容器模块

为H5提供Native的能力支持,发展小程序业务,利用H5迭代更快,实时接入的优点来为App赋能。

提供Native与JS的通信能力,提供与JS异步/同步通信的API,对Native函数与JS函数实现注册管理。

基础能力模块

日志管理模块

​ 提供日志文件管理、上传管理、日志等级管理等功能。

基础功能模块

​ 提供工具类,系统类方法扩展等。

网络模块

​ HTTP网络管理,请求/响应插件管理。

​ TCP网络管理,粘包/解包处理。

埋点模块

​ 根据业务配置表来管理客户端的埋点,管理数据上报逻辑,也负责预处理上报数据。

路由模块

​ 提供配置注册功能,可由服务端下发路由配置。

​ 提供App外部(如通知、网页)通过URL跳转App页面能力。

​ 提供App内部通过URL跳转页面,或者执行预设函数的能力,解耦模块。

目录
相关文章
|
17天前
|
存储 算法 安全
微信团队分享:来看看微信十年前的IM消息收发架构,你做到了吗
好的架构是迭代出来的,却也少不了良好的设计,本文将带大家回顾微信背后最初的也是最核心的IM消息收发技术架构,愿各位读者能从中获得启发。
37 1
|
1月前
|
存储 NoSQL Redis
陌陌技术分享:陌陌IM在后端KV缓存架构上的技术实践
在本文中,陌陌数据库负责人冀浩东将聚焦探讨陌陌的 KV 系统架构选型思路,深入解析如何进行此类系统的甄选决策,同时进一步分享陌陌团队在采用 OceanBase(OBKV)过程中所经历的探索与实践经验。
33 0
|
4月前
|
消息中间件 缓存 开发工具
一套分布式IM即时通讯系统的技术选型和架构设计
为了更好的理解分布式IM即时通讯系统的设计,我站在架构师的角度,在充分了解系统需求、业务流程和技术流程后,从全局视角为系统设定方案目标,对技术方案进行选型,对系统进行总体架构设计和分层架构设计,并梳理清楚发送消息的交互链路、单聊和群聊的交互链路。希望对你有帮助。
193 0
|
6月前
|
存储 监控 数据库
揭秘企业微信是如何支持超大规模IM组织架构的——技术解读四维关系链
本文将摘取企业微信的其中一个技术分支——IM体系之下的“关系链”内核要素,为你揭秘企业微信是如何支持超大规模IM组织架构的。
62 0
|
7月前
|
消息中间件 存储 RocketMQ
即时通讯技术文集(第20期):IM架构设计技术文章(Part3) [共14篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第20 期。
70 0
|
7月前
|
存储 自然语言处理 容灾
即时通讯技术文集(第19期):IM架构设计基础知识合集 [共13篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第19 期。
57 0
|
7月前
|
边缘计算 调度 开发工具
海量用户IM聊天室的架构设计与实践
聊天室是一类非常重要的 IM 业务形态,不同于单聊和群聊,聊天室是一种大规模的实时消息分发系统。聊天室有多种技术实现方案,业界也有一些开源的实现,每种实现都有自己的特点和应用场景。 本文将分享网易云信针对海量用户IM聊天室的架构设计与应用实践,希望能带给你启发。
205 0
|
9月前
|
缓存 监控 网络协议
IM通讯模块架构设计
一些在设计IM通讯模块时的架构经验
219 0
|
10月前
|
消息中间件 负载均衡 NoSQL
即时通讯技术文集(第18期):IM架构设计基础知识合集 [共16篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第18 期。
107 0
|
10月前
|
存储 运维 算法
即时通讯技术文集(第16期):IM架构设计技术精选(第一部分) [共17篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第16 期。
140 0

热门文章

最新文章