首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏架构师之路

    im协议设计选型(上)

    im协议设计选型(上) 周末在一个Qcon群里分享了一些im技术,抽取出其中im协议选型相关的内容,跟大家分享。 分享人:58沈剑,58同城技术委员会主席,高级架构师,优秀讲师。 (1)语法:即数据与控制信息的结构或格式 (2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应 (3)时序:即事件实现顺序的详细说明 今天的重点是在“协议选型”上,重点讲选哪种协议。 im协议设计分为三层:应用层、安全层、传输层。 ? 后文将详细介绍这三层的协议应该如何选型与设计。 二、im应用层协议设计 应用层协议选型,常见的有三种:文本协议、二进制协议、流式XML协议。 (3)流式XML协议 im的准标准协议xmpp就是使用流式XML,像gtalk,校内通这些im都是基于xmpp的,让我们来看一个xmpp协议的例子: <message to=’romeo@example.net ps:文本只介绍了im协议选型,只是协议设计的上半部分,选型完之后,协议细节如何设计也没有展开讲,后续会撰文讨论《im协议设计细节(下)》。

    1.5K110发布于 2018-03-01
  • 来自专栏即时通讯技术

    移动端IM系统的协议选型:UDP还是TCP?

    从PC时代的IM开始,IM开发者就在为数据传输协议的选型争论不休(比如:《为什么QQ用的是UDP协议而不是TCP协议?》这样的问题,隔一段时间就能在社区里看到)。 (本文同步发布于:http://www.52im.net/thread-33-1-1.html) 2、学习交流 - 移动端IM开发推荐文章:《新手入门一篇就够:从零开发移动端IM3、参考资料 《为什么 :TCP协议的3次握手与4次挥手过程详解》 《微信对网络影响的技术试验及分析(论文全文)》 4、UDP vs TCP TCP还是UDP? 而移动互联网,由于涉及到无线电话网络基站、2G、3G和4G技术的不断发展,其稳定性、带宽、资源分配等各方面虽日趋完善,但当前终究还有不少问题的存在。 由于需要动态分配IP地址(这里不仅仅指互联网入口的IP,还包括局域网内部的IP),路由器的工作原理都是经过端口映射,把内部网络(包括PC、手机、平板、Wifi、2G、3G、4G)IP与端口映射成外部IP

    2.3K10发布于 2018-08-23
  • 2026年IM(即时通讯)厂商如何选型

    在移动互联网深度渗透的背景下,即时通讯(IM)早已从“功能模块”演变为“基础设施能力”。 当前国内IM市场已形成多家成熟厂商并存的格局,环信、融云、网易云信、腾讯云IM等均具备较强技术沉淀与行业覆盖能力。 (一)高效率接入:缩短研发周期的工程化能力对于研发团队而言,IM选型的首要指标往往是“集成成本”。 腾讯云IM继承QQ与微信的通信技术积累,与腾讯生态体系高度协同,在社交、电商场景具备生态优势。总结:如何做IM技术选型IM选型本质上是对稳定性、扩展性、合规能力与研发效率的综合权衡。 选型中具备更全面的适配能力。

    25010编辑于 2026-02-22
  • 来自专栏IT技术精选文摘

    IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?

    1、前言 在IM这种讲究高并发、高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转、消息削峰、消息交换异步化等等角色,当然MQ消息中间件的作用远不止于此 但市面上的MQ消息中间件产品很多,作为IM系统中必不可少的一环,我们该如何选型?那么请继续阅读本文。 6、具体技术选型指标2:性能 功能维度是消息中间件选型中的一个重要的参考维度,但这并不是唯一的维度。 7、具体技术选型指标3:可靠性 + 可用性 消息丢失是使用消息中间件时所不得不面对的一个同点,其背后消息可靠性也是衡量消息中间件好坏的一个关键因素。尤其是在金融支付领域,消息可靠性尤为重要。 想要尽可能的保障消息的可靠性也并非单单只靠消息中间件本身,还要依赖于上下游,需要从生产端、服务端和消费端这 3 个维度去努力保证,《RabbitMQ 消息可靠性分析》这篇文章就从这 3 个维度去分析了

    2K30发布于 2018-06-22
  • 来自专栏即时通讯技术

    IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?

    但市面上的MQ消息中间件产品很多,作为IM系统中必不可少的一环,我们该如何选型?那么请继续阅读本文。 3、内容概述 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 7、具体技术选型指标2:性能 功能维度是消息中间件选型中的一个重要的参考维度,但这并不是唯一的维度。 8、具体技术选型指标3:可靠性 + 可用性 消息丢失是使用消息中间件时所不得不面对的一个同点,其背后消息可靠性也是衡量消息中间件好坏的一个关键因素。尤其是在金融支付领域,消息可靠性尤为重要。 想要尽可能的保障消息的可靠性也并非单单只靠消息中间件本身,还要依赖于上下游,需要从生产端、服务端和消费端这 3 个维度去努力保证,《RabbitMQ 消息可靠性分析》这篇文章就从这 3 个维度去分析了

    2.4K30发布于 2018-08-29
  • 来自专栏Lambda

    IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?

    IM系统的MQ消息中间件选型:Kafka还是RabbitMQ? 1、前言 在IM这种讲究高并发、高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转、消息削峰、消息交换异步化等等角色,当然MQ消息中间件的作用远不止于此 但市面上的MQ消息中间件产品很多,作为IM系统中必不可少的一环,我们该如何选型?那么请继续阅读本文。 8、具体技术选型指标3:可靠性 + 可用性 消息丢失是使用消息中间件时所不得不面对的一个同点,其背后消息可靠性也是衡量消息中间件好坏的一个关键因素。尤其是在金融支付领域,消息可靠性尤为重要。 想要尽可能的保障消息的可靠性也并非单单只靠消息中间件本身,还要依赖于上下游,需要从生产端、服务端和消费端这 3 个维度去努力保证,《RabbitMQ 消息可靠性分析》这篇文章就从这 3 个维度去分析了

    1.3K20编辑于 2022-04-13
  • 来自专栏即时通讯技术

    探探的IM长连接技术实践:技术选型、架构设计、性能优化

    本文将要分享的是陌生人社交应用探探的IM长连接模块从技术选型到架构设计,再到性能优化的整个技术实践过程和经验总结。 3、项目缘起 我们这个项目是2018年下半年开始,据今天大概1年半时间。 (▲ 上图引用自《移动端IM/推送系统的协议选型:UDP还是TCP?》) TCP实现长连接的四个问题: 1)移动端的消息量还是比较稀疏,用户每次拿到手机之后,发的消息总数比较少,每条消息的间隔比较长。 (本文已同步发布于:http://www.52im.net/thread-3780-1-1.html) 14、参考资料 [1] 移动端IM/推送系统的协议选型:UDP还是TCP? [3] 为何基于TCP协议的移动端IM仍然需要心跳保活机制?

    2K20编辑于 2021-12-14
  • 来自专栏用户4215420的专栏

    即时通讯(im)框架系统开发思考(1)-通讯协议选型

    1.前言: 近来笔者接到公司的一个IM开发需要,要在原来的Web业务系统、移动端系统上加入一个即时聊天的功能,具有就是能聊天就行。 相信各位也会接到需要开发IM的系统的任务,那么,开发一个im系统应选用哪种通讯协议? 为网络不可靠的环境下提供一套消息重传协议.3. 基于TCP/IP, 消息载体轻, 耗电量小. 优势: 已实现消息丢失重传功能, 消息载体轻, 耗电量小. 开发成本高,如要支持多个平台, 每个客户端都需要定制,IM方面的开源社区不活跃,技术文档少。 跨平台: 差, 每个客户端都需要实现MQTT的聊天协议。

    3.3K00发布于 2020-06-14
  • 选型踩雷3次后,我们总结了这份AllData选型清单

    官方手册:https://www.yuque.com/aolingdata/product✨AllData正式环境:http://43.138.156.44:5173/ui_moat《 AllData选型清单

    16821编辑于 2025-10-10
  • 来自专栏即时通讯技术

    IM跨平台技术学习(三):vivo的Electron技术栈选型、全方位实践总结

    2、系列文章本文是系列文章中的第3篇,本系列总目录如下:《IM跨平台技术学习(一):快速了解新一代跨平台桌面技术——Electron》《IM跨平台技术学习(二):Electron初体验(快速开始、跨进程通信 、打包、踩坑等)》《IM跨平台技术学习(三):vivo的Electron技术栈选型、全方位实践总结》(* 本文)《IM跨平台技术学习(四):蘑菇街基于Electron开发IM客户端的技术实践》(稍后发布 .. )《IM跨平台技术学习(五):融云基于Electron的IM跨平台SDK改造实践总结》(稍后发布.. )《IM跨平台技术学习(六):网易云信基于Electron的IM消息全文检索技术实践》(稍后发布 4.3Web方案选型我们采用的是 Vue3 ,同时使用 Vite 作为构建工具,具体优点,大家可以查看官网介绍,这套组合是目前主流的 Web 开发方案。 Electron本地数据库技术选型考虑因素主要有:1)生态(使用者数量、维护频率、版本稳定度);2)能力;3)性能;4)其他(和使用者技术匹配度)。

    2K31编辑于 2022-09-29
  • 来自专栏毛毛v5

    MP3、故事机MCU选型记录

    要弄一个mp3音频硬件。没有接触过,所以开始找了好多方案,by8001+51(stm32),vs1003+51(stm32)。后来发现stm32太贵了。所以开始琢磨51+vs1003,电路图找了好多。 双mcu,可以自己写代码,内置mp3解码,有sdio,gpio,spi,i2c,adc,dac,内置蓝牙,wifi,运行freertos,内置wifi,蓝牙协议栈。开发环境也挺好配置。 另外该琢磨哪里去找做玩具外壳,或者音箱外壳,或者mp3外壳的注塑厂了。。。

    72320发布于 2021-03-16
  • 来自专栏数据库与编程

    IM表达式的目的(IM 5.2)

    上接IM 5.1,本章为IM系列第五章 使用In-Memory表达式优化查询第二部分IM表达式的目的。 IM表达式的目的 IM表达式通过预先计算计算密集表达式来加速大数据集的查询速度。 IM表达式和物化视图解决了相同的问题:如何避免重复计算表达式。然而,IM表达式具有优于物化视图的优点: · IM表达式可以捕获未持久存储的数据。 (IM-4.2 第二部分) 第四章 为IM 启用填充对象之启用和禁用列(IM-4.3 第三部分) 第四章 为IM 启用填充对象之在NO INMEMORY表上指定INMEMORY列属性:示例(IM-4.4 第四部分) 第四章 为IM 启用填充对象之启用和禁用表空间的IM列存储(IM 4.5) 第四章 为物化视图启用和禁用IM列存储(IM 4.6) 第四章 为IM 启用填充对象之强制填充In-Memory 对象:教程(IM 4.7) 第四章 为IM 启用填充对象之为IM列存储启用ADO(IM 4.8) 第五章 使用In-Memory表达式优化查询(IM 5.1) 山东Oracle用户组(Shandong

    1.5K30编辑于 2022-04-23
  • 来自专栏数据库与编程

    用户接口和IM表达式(IM 5.6)

    上接IM 5.5。本章为IM系列第五章 使用In-Memory表达式优化查询第六部分用户接口和IM表达式。 · DISABLE 数据库不会将IM表达式(无论是静态还是动态)都填充到IM列存储中。 注: IM表达式不支持依赖于NLS的数据类型。 (IM-4.2 第二部分) 第四章 为IM 启用填充对象之启用和禁用列(IM-4.3 第三部分) 第四章 为IM 启用填充对象之在NO INMEMORY表上指定INMEMORY列属性:示例(IM-4.4 第四部分) 第四章 为IM 启用填充对象之启用和禁用表空间的IM列存储(IM 4.5) 第四章 为物化视图启用和禁用IM列存储(IM 4.6) 第四章 为IM 启用填充对象之强制填充In-Memory 对象:教程(IM 4.7) 第四章 为IM 启用填充对象之为IM列存储启用ADO(IM 4.8) 第五章 使用In-Memory表达式优化查询(IM 5.1) IM表达式的目的(IM 5.2) IM表达式如何工作

    1.6K20编辑于 2022-04-23
  • 来自专栏即时通讯技术

    IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践

    本篇中的订单ID虽然不同于IM系统中的消息ID,但其技术实践仍然相通,希望能给你的IM系统消息ID技术选型也来更多的启发。 3、系列文章本文是系列文章中的第7篇,本系列总目录如下:《IM消息ID技术专题(一):微信的海量IM聊天消息序列号生成实践(算法原理篇)》《IM消息ID技术专题(二):微信的海量IM聊天消息序列号生成实践 (容灾方案篇)》《IM消息ID技术专题(三):解密融云IM产品的聊天消息ID生成策略》《IM消息ID技术专题(四):深度解密美团的分布式ID生成算法》《IM消息ID技术专题(五):开源分布式ID生成器UidGenerator 的技术实现》《IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)》《IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践》(* 本文)4、为什么需要分布式ID 5、我们的分布式ID架构原理5.1 技术选型下表是业内常见的分布式ID解决方案:综合考虑是否支持水平扩展以及能够显示指定ID长度,最终选择的是Leaf的Segment模式(详见《深度解密美团的分布式ID

    46420编辑于 2022-11-03
  • 来自专栏即时通讯技术

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

    (稍后发布)》 3、本文内容概述 本文将带你快速了解一个主流IM系统的应用场景、典型架构、技术特点和功能组成,帮你快速建立对IM系统的主观认知。 下面这些场景是我们大家都熟悉的,都用到了IM技术: 1)微信、qq、钉钉等主流IM应用:这是IM技术的典型应用场景; 2)微博、知乎等社区应用:它们利用IM技术实现了用户私信等点对点聊天; 3)抖音、快手等直播 ; 2)接入层:也叫网关层,为客户端收发消息提供入口; 3)逻辑层:负责IM系统各功能的核心逻辑实现; 4)存储层:负责IM系统相关数据的持久化存储,包括消息内容、账号信息、社交关系链等; 5)第三方服务 通俗易懂:一篇掌握即时通讯的消息传输安全原理》 7、IM的功能组成 浅显的角度讲,一个典型的IM功能组成,无非就是以下5样: 1)联系人列表; 2)聊天界面; 3)消息发送通道; 4)消息接收通道; 5 3)多终端情况下,怎么保证未读数的一致性(我在这台设备上读没读,那台设备怎么知道的?)? 是的,看起来就这么简简单单的3件事,但深入思考一下,还真的简单不起来。

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

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

    这个系列的几篇文章分享的是:假设在没有任何成型的第3IM库或SDK的情况下,以网络编程的基础技术视野,思考和实践如何基于Netty网络库从零写一个可以聊天的IM系统的过程,没有眼花缭乱的架构设计、也没有高端大气的模式设计方法论 3)Java的BIO和NIO很难懂?用代码实践给你看,再不懂我转行! 3)成员加入某个群聊组的时候,往映射表新增一条记录,如果成员退群的时候则删除对应的映射记录。通过上面的架构图可以发现,群聊和单聊相比,其实就是多了一份映射关系而已。 9、参考资料[1] 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析[2] 理论联系实际:一套典型的IM通信协议设计详解[3] 浅谈IM系统的架构设计[4] 简述移动端IM开发的那些坑:架构设计 [11] 基于实践:一套百万消息量小规模IM系统技术要点总结[12] 探探的IM长连接技术实践:技术选型、架构设计、性能优化(本文已同步发布于:http://www.52im.net/thread-3963

    2.7K12编辑于 2022-07-04
  • 来自专栏即时通讯技术

    一套分布式IM即时通讯系统的技术选型和架构设计

    为了更好的理解分布式IM即时通讯系统的设计,我站在架构师的角度,在充分了解系统需求、业务流程和技术流程后,从全局视角为系统设定方案目标,对技术方案进行选型,对系统进行总体架构设计和分层架构设计,并梳理清楚发送消息的交互链路 3、技术选型 在技术选型上,除了采用SpringBoot等基础框架外,也会采用容器化方案。 同时,考虑到为了尽量降低技术门槛,在整个分布式IM即时通讯系统的技术选型中,主要采用市面上比较流行的技术框架和方案。 具体选型如下所示: 1)开发框架:SpringBoot、SpringCloud、SpringCloud Alibaba、Dubbo; 2)缓存:Redis分布式缓存+Guava本地缓存; 3)数据库:MySQL [3] 一套海量在线用户的移动端IM架构设计实践分享(含详细图文) [4] 一套原创分布式即时通讯(IM)系统理论架构方案 [5] 移动端IM中大规模群消息的推送如何保证效率、实时性?

    4.6K04编辑于 2024-01-16
  • 来自专栏gglinux.com

    IM系统设计

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

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

    抖音技术分享:飞鸽IM桌面端基于Rust语言进行重构的技术选型和实践总结

    1)历史技术选型,包含者成本、人力、效率等考量,飞鸽客户端使用的技术栈是react + electron:* im sdk与业务渲染代码都由 js 编写,im sdk同时是cpu密集型 & io 密集型的组件 对于以上这些挑战,我们给出的解法是:对现有架构进行调整,使用Rust语言对im sdk进行重写,彻底解除这一块的性能瓶颈!3、为什么选Rust语言? 通过POC,我们得出的结论是:具体就是:1)rust 整体优于 js,计算占比越重,优势越明显(高压时cpu差别能到达3倍以上);2)架构选型上,rust进程独立是最好的方案,稳定性更优、性能损耗相差较小 10、 新架构实施阶段3:使用Rust实现IM SDK全部能力夯实基础后,我们开始发力冲刺,大刀阔斧的对IM SDK进行重新设计、实现、联调以及上线。 的移动端跨端改造实践[2] IM开发干货分享:有赞移动端IM的组件化SDK架构设计实践[3] IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的[4] 如约而至:微信自用的移动端IM网络层跨平台组件库

    78910编辑于 2024-02-29
  • 来自专栏自动化大师

    三菱PLC不会选型3分钟搞懂命名规则+快速选型技巧!

    +FX2N-CNV-BC转接模块) 三、三菱PLC选型指南 1. 选型核心参数 –本体I/O点数 •电源类型: –E:AC电源,D:DC电源,UA1:AC100V输入。 •输出类型: –T:晶体管(高速响应),R:继电器(通用型),S:晶闸管。 选型工具与步骤 1.在线选型工具(可以复制到浏览器打开)https://www.mitsubishielectric-fa.cn/site/selsystem-detail? 2.选型示例: –需求:FX3U系列,16输入/16输出,AC电源,继电器输出。 –结果:FX3U-32MR/ES(32点:16输入 + 16输出)。 四、产品替代说明 原型号 替代型号 说明 FX3G FX3GA FX3GA为国内组装,功能相同 FX3S FX3SA FX3SA为国内组装,兼容性一致 FX1N FX3GA FX1N停产,由FX3GA替代

    2.6K10编辑于 2025-03-17
领券