首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏gglinux.com

    IM系统设计

    即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。实现方式有两种。 总体架构图 时序图 详细实现 接入层实现 接入层的目的:1保证IM服务的可靠性,避免用户同时集中在同一聊天服务器中。2当聊天服务器压力过大时,能实现扩容。 客户端请求接入IM,调用接入API。参数为:接入类型(群聊,私聊),接入uid,群聊ID 群聊:保证隶属同群ID的用户落在同一Socket实例上。 是对所有在线用户或者特定群ID(会话ID),发送消息(系统消息)。实现方法为:遍历所有在线socket句柄,发送内容。 监控服务 在运营管理或者监控上,需要对聊天服务性能加以判定。 http://gglinux.com/2017/04/15/IM_design/

    4.3K81发布于 2019-02-23
  • 来自专栏即时通讯技术

    IM开发快速入门(一):什么是IM系统

    /短视频应用:它们利用IM技术实现了与主播的实时互动; 4)米家等智能家居物联网应用:利用IM技术实现实时控制、远程监控等; 5)滴滴、Uber等共享家通类应用:利用IM技术实现位置共享; 6)在线教育类应用 5IM的典型架构 一个典型的IM架构类似于下图这样: (本图引用自《即时消息技术剖析与实战》学习笔记1——IM系统的架构》一文) 如上图所示,IM架构中的各分层职责如下: 1)客户端:作为与服务端进行消息收发通信的终端 ; 2)接入层:也叫网关层,为客户端收发消息提供入口; 3)逻辑层:负责IM系统各功能的核心逻辑实现; 4)存储层:负责IM系统相关数据的持久化存储,包括消息内容、账号信息、社交关系链等; 5)第三方服务 通俗易懂:一篇掌握即时通讯的消息传输安全原理》 7、IM的功能组成 浅显的角度讲,一个典型的IM功能组成,无非就是以下5样: 1)联系人列表; 2)聊天界面; 3)消息发送通道; 4)消息接收通道; 55)消息存储: 消息存储这个功能好理解,聊天的消息如果存储,下次再聊的时候就不知道之前聊过什么,做不到这一点,这个IM系统的聊天体验好不起来。

    3.4K22发布于 2020-07-09
  • 来自专栏即时通讯技术

    基于Netty,徒手撸IM(一):IM系统设计篇

    2、知识准备* 重要提示:本系列文章主要是代码实战分享,如果你对即时通讯(IM)技术理论了解的不多,建议先详细阅读:《零基础IM开发入门:什么是IM系统?》、《新手入门一篇就够:从零开发移动端IM》。 (一):IM系统设计篇》(* 本文)《基于Netty,徒手撸IM(二):编码实践篇(单聊功能)》《基于Netty,徒手撸IM(三):编码实践篇(群聊功能)》《基于Netty,徒手撸IM(一):编码实践篇 通信技术快速入门:短轮询、长轮询、SSE、WebSocket》5IM单聊思路设计5.1 通讯架构原理以下是通讯架构原理图:如上图所示,通讯流程解析如下:1)实现客户端和客户端之间通讯,那么需要使用服务端作为通讯的中转站 《移动端IM中大规模群消息的推送如何保证效率、实时性?》《现代IM系统中聊天消息的同步和存储方案探讨》《关于IM即时通讯群聊消息的乱序问题讨论》《IM群聊消息的已读回执功能该怎么实现?》 、通信协议和客户端[5] 一套海量在线用户的移动端IM架构设计实践分享(含详细图文)[6] 一套原创分布式即时通讯(IM)系统理论架构方案[7]  一套高可用、易伸缩、高并发的IM群聊、单聊架构方案设计实践

    2.7K12编辑于 2022-07-04
  • 来自专栏普通程序员

    IM系统的SESSION结构

    一、IM系统基本结构 一个IM系统的基本结构如下图所示 ? 1、msg-gate模块是接入层,核心功能是连接整流。 二、session维护方式及原因 1、session维护模块 整个系统中维护session总共有两个模块,msg-gate和redis。 至此,IM系统各个模块均能高效定位某个客户端位置及状态。

    1.2K10发布于 2019-10-23
  • 来自专栏普通程序员

    IM系统如何调试TCP协议

    最近负责瓜子IM系统开发。客户端选用了微信开源的Mars库。定义通讯协议如下图。 工具wireshark,安装在IM服务器pigeon-gate 所在的机器,安装方式自己百度。 IM客户端,发送一条消息,工具抓取到若干TCP数据包,其中红框标记的数据是客户端发到服务器的消息数据(多试几次就知道有效的数据是哪一条了)。 点击数据看到该条TCP消息包内容如下图。 比如红色方框6个字节表示目的地(IM服务器)物理地址,测试服务器物理地址为 68-07-15-29-FE-3B;紫色方框表示消息来源(手机 )物理地址,其他内容可以查看TCP协议细节。

    97510发布于 2019-10-23
  • 来自专栏即时通讯技术

    IM开发快速入门(二):什么是IM系统的实时性?

    区别于强大的原生应用,Web端的IM系统,在很长一段时间内想实现真正的“实时性”,是非常困难的,因为无法直接使用UDP、TCP通信协议,在HTML5中的WebSocket出现之前,Web端几乎没有真正意义上的 《IM开发快速入门(二):什么是IM系统的实时性?》(* 本文) 《IM开发快速入门(三):什么是IM系统的可靠性? (稍后发布)》 《IM开发快速入门(四):什么是IM系统的一致性?  (稍后发布)》 《IM开发快速入门(五):什么是IM系统的安全性? (稍后发布)》 《IM开发快速入门(六):什么是IM系统的的心跳机制?  (稍后发布)》 《IM开发快速入门(七):如何理解并实现IM系统消息未读数? (稍后发布)》 《IM开发快速入门(八):如何理解并实现IM系统的多端消息漫游?  6、WebSocket让Web端IM真正的“实时性”变成可能 好消息是,HTML5中带来了WebSocket技术。

    1.5K30发布于 2020-09-18
  • 来自专栏即时通讯技术

    IM开发快速入门(二):什么是IM系统的实时性?

    区别于强大的原生应用,Web端的IM系统,在很长一段时间内想实现真正的“实时性”,是非常困难的,因为无法直接使用UDP、TCP通信协议,在HTML5中的WebSocket出现之前,Web端几乎没有真正意义上的 正因为如此,理解Web端即时通信技术的演进,也就自然而然能循序渐进地体会到IM系统中的“实时性”了。所以本文将围绕Web端即时通讯技术,为你展开IM“实时性”这个话题。 友情提示:本系列文章侧重于理论概念的讲述,篇幅有限,点到即止,如需系统、深入、具体地学习IM技术的方方面面,请从此文入手:《新手入门一篇就够:从零开发移动端IM》(史诗级文章,适合从入门到放弃)。 这种依赖于用户“主动”请求的数据获取模式,如果想实现IM系统,是无法即时获得最新的聊天消息的,因为用户并不知道新消息什么时候到来,而服务端也没有办法主动通知用户。 5、WebSocket让Web端IM真正的“实时性”变成可能 好消息是,HTML5中带来了WebSocket技术。

    1.9K41发布于 2020-09-22
  • IM 系统开发中的 5 个常见问题及解决方案

    IM系统开发中的5个常见问题及解决方案在IM系统开发中,会遇到消息重复、死连接、消息丢失、性能瓶颈等问题。本文介绍AQChat中这些问题的解决方案。 10ms<1ms5-10倍总响应时间50-80ms<5ms10-16倍五、问题五:AI响应阻塞问题问题描述场景:AI处理耗时:每次AI调用需要5-10秒同步处理:AI处理阻塞MQ消费线程并发限制:多个AI 请求串行处理后果:MQ消费线程被阻塞其他消息无法处理系统吞吐量下降解决方案:独立线程池1.独立线程池配置展开代码语言:JavaAI代码解释@ComponentpublicclassThreadPoolUtil 响应阻塞独立线程池ThreadPoolExecutor经验总结:幂等性设计:消息去重保证幂等性资源管理:及时清理无效连接,避免内存泄漏可靠性保障:多重保障机制,确保消息不丢失性能优化:异步处理+缓存,提升系统性能错误隔离 :独立线程池,避免相互影响通过以上解决方案,AQChat解决了IM系统开发中的常见问题,提升了系统的可靠性、性能和用户体验。

    17410编辑于 2026-01-12
  • 来自专栏AI系统

    【AI系统Im2Col 算法

    Im2Col 是计算机视觉领域中将图片转换成矩阵的矩阵列的计算过程。 Im2Col+Matmul 方法主要包括两个步骤: 使用 Im2Col 将输入矩阵展开一个大矩阵,矩阵每一列表示卷积核需要的一个输入数据,按行向量方式存储。 2. 这个重排操作是 Im2Col 算法的核心部分。 后处理阶段:在卷积操作完成后,如果需要,推理引擎可能会将数据从 Im2Col 格式转换回原始格式。 Im2Col 算法总结 Im2Col 计算卷积使用 GEMM 库的代价是额外的内存开销。 和 Col2Im 操作。

    1.7K10编辑于 2024-12-17
  • 来自专栏普通程序员

    从零开始搭建瓜子IM系统

    之前在滴滴技术沙龙上的分享

    1.3K40发布于 2019-10-23
  • 来自专栏全栈程序员必看

    IM在线客服系统_开源在线客服系统附源码

    在线客服系统比以往任何时候都更受欢迎,随着即时通讯巨头WhatsApp、Facebook Messenger和微信的崛起,即时通讯平台也正在接管商业通信。 在线客服系统及源码:zxkfym.top   什么是在线客服系统?   线客服系统是数字化工作场所的重要工具之一。它用于远程工作的员工之间的沟通和协作,从而使工作更容易、更快。 如何为您的组织选择正确的在线客服系统源码?   当今市场上有许多在线客服系统源码。选择最适合您业务的解决方案并不总是容易的。那么,即时消息解决方案的哪些特性和功能值得关注呢?    首先,如果你的在线客服系统源码能够支持除短信之外的其他通讯功能,那就太棒了,例如,寻找支持视频通话和会议的解决方案。   此外,在线客服系统源码的数据保护和安全性应该是一个重要因素。 因此,安全性是在线客服系统源码考量最重要的方面之一,应该成为您决策选择的指导原则。

    14.9K20编辑于 2022-09-09
  • Redis 在 IM 系统中的 5 种应用场景:从缓存到去重

    Redis在IM系统种的5种应用场景:从缓存到去重在IM系统中,Redis用于缓存、存储和去重。本文介绍AQChat项目中Redis的五种应用场景。 凭证过期时间策略数据类型过期时间原因用户信息30分钟平衡缓存命中率和数据一致性OSS凭证1小时与STS凭证有效期一致房间信息永久房间数据需要持久化房间号映射永久映射关系需要持久化消息去重永久需要长期去重七、总结Redis在IM 系统中的5种应用场景:1.用户信息缓存:String结构,30分钟过期,提升查询性能20-30倍2.房间信息存储:Hash结构,减少Key数量,支持部分更新3.消息去重:List结构(可优化为Set), 保证消息幂等性4.OSS凭证缓存:String结构,1小时过期,减少API调用成本5.房间号映射:String结构,永久存储,快速查询房间ID性能提升总结场景数据库查询Redis查询性能提升用户信息20 -30ms<1ms20-30倍房间信息10-20ms<1ms10-20倍房间号映射10-20ms<1ms10-20倍OSS凭证100-200ms<1ms100-200倍通过合理使用Redis,IM系统在保证功能完整性的同时

    20500编辑于 2025-12-25
  • 来自专栏即时通讯技术

    零基础IM开发入门(三):什么是IM系统的可靠性?

    本文编写时引用了“聊聊IM系统的即时性和可靠性”一文的部分内容和图片,感谢原作者。 1、引言 上一篇《零基础IM开发入门(二):什么是IM系统的实时性?》 2、系列文章 《零基础IM开发入门(一):什么是IM系统?》 《零基础IM开发入门(二):什么是IM系统的实时性?》 《零基础IM开发入门(三):什么是IM系统的可靠性?》 (* 本文) 《零基础IM开发入门(四):什么是IM系统的消息时序一致性?》 《零基础IM开发入门(五):什么是IM系统的安全性?  5、TCP并不能保证在线消息的“可靠性” 接上节,在一个典型的服务端中转型IM架构中,即使使用“可靠的传输协议”TCP,也不能保证聊天消息的可靠性。为什么这么说? [4] 从客户端的角度来谈谈移动端IM的消息可靠性和送达机制 [5] 聊聊IM系统的即时性和可靠性 [6] 学习笔记4——IM系统如何保证消息的可靠性 [7] IM群聊消息如此复杂,如何保证不丢不重?

    1.2K61发布于 2020-10-29
  • 来自专栏CDN及云技术分享

    IM系统的消息序列号服务

    seq_alloc:当前id,预取(seq_info存到seq_stroe),每个seq_alloc管理号段

    1.4K40发布于 2021-02-14
  • 来自专栏陶士涵的菜地

    在线客服系统源码IM源码框架架构

    在线客服系统概述 1.1 系统定义与功能 在线客服系统是一种基于网络的即时通讯工具,旨在提供实时的客户服务和支持。这种系统允许客户通过文字、图片或文件与客服人员进行交流,从而解决他们的疑问或问题。 源码框架架构解析 3.1 系统架构概览 在线客服系统的源码框架架构是构建高效、稳定客服系统的基础。一个典型的在线客服系统架构包括前端用户界面、后端服务器、数据库以及可能的中间件服务。 安全性组件:包括数据加密、访问控制、安全审计等,确保系统的安全性和用户数据的隐私保护。 可扩展性设计:系统设计时考虑未来可能的功能扩展和用户增长,确保系统的可扩展性。 通过以上步骤,可以完成在线客服系统的部署搭建,并确保系统的性能和安全性满足企业的需求。 5. 维护与升级策略 7.1 系统维护要点 在线客服系统的维护是确保系统长期稳定运行的关键环节。 定期检查:定期对系统进行健康检查,包括硬件、软件和网络连接状态,确保系统稳定运行。

    1.2K10编辑于 2024-06-22
  • 来自专栏码农编程进阶笔记

    基于go语言搭建高性能IM系统

    ,同时帮助读者了解IM系统后续可以做哪些优化和改进。 为了帮助读者更清楚的理解IM系统的原理,第3节我会专门深入讲解一下websocket协议,websocket是长链接中比较常用的协议;然后第4节会讲解快速搭建IM系统的技巧和主要代码实现;在第5节笔者会对 4.快速搭建高性能、可拓展的IM系统 4.1 系统架构和代码文件目录结构 下图是一个比较完备的IM系统架构:包含了C端、接入层(通过协议接入)、S端处理逻辑和分发消息、存储层用来持久化数据。 在当今这个时代,5G将要普及,流量不再昂贵,IM系统已经广泛渗入到了用户日常生活中。 对于程序员来说,搭建一个IM系统不再是困难的事情, 如果读者根据本文的思路,理解Websocket,Copy代码,运行程序,应该用不了半天的时间就能上手这样一个IM系统

    1.2K20编辑于 2022-12-21
  • 来自专栏数字资产

    区块链im及时通讯系统app开发

    Im即时通讯系统app是现在市场中应用比较广泛的产品,像我们现在使用的微信、QQ等等都属于im即时通讯系统app。 Im的范围比较大,现在很多的行业都会有自己行内的通讯系统,这样能够保证用户之间都是同一个领域的人,并且有足够多的话题去交流,相应的还会出现这个行业独有的一些功能。 icon13.jpg 比如就像是区块链im即时通讯系统app则全是区块链行业内的用户才会去使用的,里面的共包含随时随地聊天、社区群组、商务沟通、娱乐直播, 红包打赏,朋友圈分享等核心场景,海量消息一触即达 此款区块链im即时通讯系统app不仅仅只是提供一个简单的沟通交流分享等功能,其中的数字资产互转功能也是带有的,这样的区块链im系统app不仅仅是个交易工具,还是一个掌上钱包,更加方便了币圈朋友。 区块链im即时通讯系统app开发能够给币圈的人带来更多的方便,让用下载一个app就可以搞定一切事情,所以对于用户来说,出现这样的app则是一项好的消息,试想如果一个手机app就可以搞定交流、直播还有数字资产互转等功能时

    2.2K00发布于 2018-07-30
  • 来自专栏即时通讯技术

    IM开发技术分享:浅谈IM系统中离线消息、历史消息的最佳实践

    IM庞大的技术体系中,消息系统无疑是最核心的,而消息系统中,最关键的部分是消息的分发和存储,而离线消息和历史消息又是这个关键环节中不可回避的技术要点。 本文将基于IM消息系统的技术实践,分享关于离线消息和历史消息的正确理解,以及具体的技术配合和实践,希望能为你的离线消息和历史消息技术设计带来最佳实践灵感。 3、IM消息投递的一般做法 在通常的IM消息系统中,对于实时消息、离线消息、历史消息大概都是下面这样的技术思路。 5IM消息的发送及存储流程 以下是我们系统整体的消息发送及存储流程:  如上图所示:当用户发送聊天消息到服务器端后,首先会进入到消息系统中,消息系统会对消息进行分发以及存储。 一个优化好的IM系统,必须从设计上平衡读写压力,避免读或者写任意一个维度达到天花板。 当然扩散写这种模式也有其弊端,比如万人群,会导致一条消息,写入了一万次。

    3.4K31编辑于 2022-04-19
  • 来自专栏即时通讯技术

    零基础IM开发入门(五):什么是IM系统的端到端加密?

    而为了让即时通讯更安全,高安全场景下的IM系统通常会使用端到端加密技术进行通讯加密。下面我们就来了解一下端到端加密技术在IM系统中的应用。2、系列文章《零基础IM开发入门(一):什么是IM系统?》 《零基础IM开发入门(二):什么是IM系统的实时性?》《零基础IM开发入门(三):什么是IM系统的可靠性?》《零基础IM开发入门(四):什么是IM系统的消息时序一致性?》 《零基础IM开发入门(五):什么是IM系统的端到端加密?(* 本文)》《零基础IM开发入门(六):什么是IM系统的的心跳机制?  没有使用端到端加密时的聊天消息存在诸多风险:使用了端到端加密后的聊天就安全多了:5IM系统使用端到端加密的好处数据安全性:在IM系统中,端到端加密可以确保消息在传输过程中始终保持加密状态,防止黑客和第三方窃取用户的通信内容 深入浅出,探密短连接的安全性[4] 理论联系实际:一套典型的IM通信协议设计详解(含安全层设计)[5] 微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解[6] 移动端安全通信的利器——端到端加密

    47810编辑于 2025-03-20
  • 来自专栏即时通讯技术

    跟着源码学IM(九):基于Netty实现一套分布式IM系统

    各模块的作用,具体解释如下: 5系统设计 在这套IM中,服务端采用DDD领域驱动设计模式进行搭建。 手把手教你撸一个Andriod版IM》 《跟着源码学IM(三):基于Netty,从零开发一个IM服务端》 《跟着源码学IM(四):拿起键盘就是干,教你徒手开发一套分布式IM系统》 《跟着源码学IM(五) :正确理解IM长连接、心跳及重连机制,并动手实现》 《跟着源码学IM(六):手把手教你用Go快速搭建高性能、可扩展的IM系统》 《跟着源码学IM(七):手把手教你用WebSocket打造Web端IM聊天 [5] 史上最通俗Netty框架入门长文:基本介绍、环境搭建、动手实战 [6] 理论联系实际:一套典型的IM通信协议设计详解 [7] 浅谈IM系统的架构设计 [8] 简述移动端IM开发的那些坑:架构设计 IM系统 [15] 基于实践:一套百万消息量小规模IM系统技术要点总结 (本文已同步发布于:http://www.52im.net/thread-3789-1-1.html)

    1.8K20编辑于 2021-12-20
领券