在企业数字化建设过程中,如何与客户保持线上链接是重要的组成部分。而IM通信系统就属于数字化建设的基础设施。那么,如何实现一个符合企业需求的IM系统呢?采购当然是其中需要考虑的方式之一。但就我个人的经验来看,市面上好的IM厂商很稀少,因为IM厂商需要做标准化产品,所以如果公司的业务并不是传统意义上的社交IM业务。那么IM厂商提供的功能大部分用不到,并且对于群聊,单聊等基础功能还要做二次开发。

今天,我们并不讨论在什么情况下需要采购,什么情况下需要自研,等后面写产品思考类的文章时可以分享这些。现在我们只讨论一个话题,如何设计开发一个属于自己的IM系统?

首先,熟悉业务场景是架构设计的一部分,因为它决定了IM系统的功能范围。我们可以为这个IM定义某个业务场景:

客服网聊场景:

1,如果该用户有专属客服,则和专属客服进行会话 如果专属客服不在线,进入等待队列,等坐席应答;如果该用户为VIP,则可以进入优先级较高的等待队列。否则正常排队;

2,客服可以在线邀请投顾或者其他专家,进入服务客户的三方会话

3,自定义消息卡片:

支持注册绑卡/产品预约;

支持当前业务进度通知:“用户正在填写身份证”,“用户绑卡失败” ,

支持消息优先级,比如“用户支付失败”

支持进入场景提前通知:比如用户从某会议进入,用户从app端会议/直播/交易页面进入

4,超大群聊:可以支持3000人的聊天群(需要设计“读扩散”和“写扩散”问题的解决机制)

结合以上的场景,我们接下来可以定义我们的功能设计:

各业务根据分配到的appid接入IM服务 (前端SDK植入)

支持PC/H5/小程序通过websocket连接,APP通过socket连接

支持单聊/群聊/超大群(3000人)/聊天室

支持文本/图文/音视频/自定义消息

支持离线/历史消息存储

支持单聊转群聊场景

支持可集群部署,gRPC远程调用

应用架构设计:

首先,IM包括最基本的三个功能模块,分别是IM Server负责连接管理,IM Route负责路由管理,以及IM stroage负责消息存储管理。

从前面的场景中,我们也能发现在IM通信过程中,需要考虑两个最重要的ID的设计:用户id,群id。可以说这两个id在消息的分库分表,负载均衡,服务扩容,服务宕机等场景中都会起到很重要的作用。其中,我们考虑两个方面:

A,平衡性:每台服务器均匀处理请求

B,单调性:扩容或者宕机时,部分数据迁移即可

如何实现IM即时通信系统(一)相关推荐

  1. 计算机网络即时通信系统设计_天天玩微信,Spring Boot 开发私有即时通信系统了解一下...

    概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 所需依赖 Spring Boot 版本 1.5.3, ...

  2. 【Golang 快速入门】项目实战:即时通信系统

    Golang 快速入门 即时通信系统 - 服务端 版本一:构建基础 Server 版本二:用户上线功能 版本三:用户消息广播机制 版本四:用户业务层封装 版本五:在线用户查询 版本六:修改用户名 版本 ...

  3. spring boot websocket 客户端_Spring Boot 开发集成 WebSocket,实现私有即时通信系统

    ###1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. ###2/ 所需依赖 Spring Bo ...

  4. 基于TCP Socket和Websocket实现的相互即时通信系统

    目录 摘 要 III ABSTRACT IV 第一章 引言 1 1.1 即时通信系统基本概念 1 1.2 即时通信系统的发展历程 1 1.3 系统研究目的和意义 1 1.4 系统可行性分析 2 第二章 ...

  5. 2019吉大软件C++课设——模拟即时通信系统

    吉林大学大三学生 东北师范大学附属中学OJ jinxi20111 2019.08.28 首先第一点,如果你是来学习和提问的,直走请进,如果你还没有仔细阅读完并感受到难度,我的建议是多阅读两遍,或者先动 ...

  6. 儒猿秒杀季!互联网大厂的IM即时通信系统项目实战

    疯狂秒杀季:499元秒杀 原价 1899元 的 <互联网大厂的IM即时通信系统项目实战> 今天 上午10点,仅 40 套,先到先得! === 课程背景 === 随着企业不断发展,业务扩大, ...

  7. 基于XMPP的即时通信系统的建立(二)— XMPP详解

    XMPP详解 XMPP(eXtensible Messaging and Presence Protocol,可扩展消息处理和现场协议)是一种在两个地点间传递小型结构化数据的协议.在此基础上,XMPP ...

  8. Gprs通信协议服务器,基于GPRS的即时通信系统协议设计与开发

    摘要: 在全球所有的第二代移动通信中,GSM通信网络的使用人数最多,中国目前的大部分移动通信网络都是GSM系统.GSM网络主要用于语音通信,GSM与Internet相结合,出现了GPRS网络,使无线终 ...

  9. (三)打造华丽的即时通信系统主界面,让你的聊天体验更有质感

    文章目录 一.引言 1.即时通信系统的基本概念和应用场景 2.Qt框架在实现即时通信系统中的应用 二.主界面设计 2.1 界面设计的基本要求 2.2 主界面的设计 三.通信功能实现 3.1 通信协议的 ...

  10. 基于CS结构的即时通信系统的设计与实现(QT开发)

    4 基于C/S结构的即时通信系统开发的系统详细设计 4.1 系统设计目标 随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流 方式已经难以满足人们的交流要求,在互联网或局域网上即时的和好 ...

最新文章

  1. 自动驾驶中图像与点云融合的深度学习研究进展综述
  2. 使用BootStrap制作用户登录UI
  3. Hadoop2异常分析(二):Sqoop导出数据错误
  4. 6.22软件工程总结
  5. 这是一则计算机视觉顶级会议CVPR与腾讯的爆闻,啥?
  6. 用eslint + prettier + pre-commit管理项目(React)
  7. CCF 送货(满分代码)2015-12-4
  8. 面试技巧,如何通过索引说数据库优化能力
  9. POJ 2431 Expedition (贪心+优先队列)
  10. 翻译:图解HTTPS工作原理、秘钥、握手、HTTPS,SSL,TLS的区别、证书
  11. 器件基础知识——电容
  12. 吃货在东京 -- 记那段吃不饱的日子 之二 丰州的雪花牛肉
  13. dnf丢失clientbase_登录dnf时出现dnfbase.dll的丢失
  14. 大一计算机科学化学,核心导读: 王 龙(北京大学计算机科学技术系学生,江西省高考理科状元): 化学被称为理科中的文科。题目量较多,单题分较...
  15. 秀才seo博客:搜索引擎优化的前身和未来
  16. unity制作小地图
  17. 养兔子c语言sdut,SDUT 养兔子
  18. python如何爬取网站所有目录_python 爬取网站的博客目录
  19. C#拆分Excel工作表
  20. EasyExcel 实现单元格数据下拉选

热门文章

  1. 诺基亚8110能玩java吗_诺基亚81104G版评测 买不了吃亏也买不了上当
  2. Python的制表符和运算符
  3. office使用问题和解决方法总结
  4. HTTP服务器远程控制,求关注:远程控制你的打印机,附详细步骤
  5. Palette的使用
  6. matlab psk 信号,急求···psk信号载频估计的matlab算法
  7. 《Python 黑帽子》学习笔记 - 命令行选项和参数处理 - Day 4
  8. java--日期时间处理
  9. 2.2 在Matlab中进行相机标定
  10. at91sam9g25处理器uboot移植 个人笔记一