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

    im协议设计选型(上)

    im协议设计选型(上) 周末在一个Qcon群里分享了一些im技术,抽取出其中im协议选型相关的内容,跟大家分享。 分享人:58沈剑,58同城技术委员会主席,高级架构师,优秀讲师。 前百度hi团队成员,负责过58同城im系统的架构设计。 一、im协议的分层设计 所谓“协议”是双方共同遵守的规则,例如:离婚协议,停战协议。协议有语法、语义、时序三要素。 (1)语法:即数据与控制信息的结构或格式 (2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应 (3)时序:即事件实现顺序的详细说明 今天的重点是在“协议选型”上,重点讲选哪种协议。 im协议设计分为三层:应用层、安全层、传输层。 ? 后文将详细介绍这三层的协议应该如何选型与设计。 二、im应用层协议设计 应用层协议选型,常见的有三种:文本协议、二进制协议、流式XML协议。 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开发推荐文章:《新手入门一篇就够:从零开发移动端IM》 3、参考资料 《为什么 这些问题都是讨论�移动端IM、消息推送等类似话题时,几乎一定被问到的问题。这里尝试正本清源一下。 5、互联网、移动互联网网络环境 在分析到底应该使用UDP还是TCP之前,有必要先讨论一下互联网与移动互联网的网络环境特点。 (本文同步发布于:http://www.52im.net/thread-33-1-1.html)

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

    当前国内IM市场已形成多家成熟厂商并存的格局,环信、融云、网易云信、腾讯云IM等均具备较强技术沉淀与行业覆盖能力。 (一)高效率接入:缩短研发周期的工程化能力对于研发团队而言,IM选型的首要指标往往是“集成成本”。 在平台覆盖方面,环信实现全端支持:iOS/AndroidWebWindowsmacOS鸿蒙原生开发ReactNative/Flutter等跨平台框架小程序与H5专用SDK服务端RESTAPI与Webhook 腾讯云IM继承QQ与微信的通信技术积累,与腾讯生态体系高度协同,在社交、电商场景具备生态优势。总结:如何做IM技术选型IM选型本质上是对稳定性、扩展性、合规能力与研发效率的综合权衡。 选型中具备更全面的适配能力。

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

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

    1、前言 在IM这种讲究高并发、高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转、消息削峰、消息交换异步化等等角色,当然MQ消息中间件的作用远不止于此 但市面上的MQ消息中间件产品很多,作为IM系统中必不可少的一环,我们该如何选型?那么请继续阅读本文。 5选型要点概述 衡量一款消息中间件是否符合需求需要从多个维度进行考察,首要的就是功能维度,这个直接决定了你能否最大程度上的实现开箱即用,进而缩短项目周期、降低成本等。 举个例子:消息第一次消费失败入重试队列 Q1,Q1 的重新投递延迟为 5s,在 5s 过后重新投递该消息;如果消息再次消费失败则入重试队列 Q2,Q2 的重新投递延迟为 10s,在 10s 过后再次投递该消息 9、具体技术选型指标5:社区力度及生态发展 对于目前流行的编程语言而言,如 Java、Python,如果你在使用过程中遇到了一些异常,基本上可以通过搜索引擎的帮助来得到解决,因为一个产品用的人越多,踩过的坑也就越多

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

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

    但市面上的MQ消息中间件产品很多,作为IM系统中必不可少的一环,我们该如何选型?那么请继续阅读本文。 5选型要点概述 衡量一款消息中间件是否符合需求需要从多个维度进行考察,首要的就是功能维度,这个直接决定了你能否最大程度上的实现开箱即用,进而缩短项目周期、降低成本等。 实际应用中大多采用基于队列的延迟,设置不同延迟级别的队列,比如 5s、10s、30s、1min、5mins、10mins 等,每个队列中消息的延迟时间都是相同的,这样免去了延迟排序所要承受的性能之苦,通过一定的扫描策略 举个例子:消息第一次消费失败入重试队列 Q1,Q1 的重新投递延迟为 5s,在 5s 过后重新投递该消息;如果消息再次消费失败则入重试队列 Q2,Q2 的重新投递延迟为 10s,在 10s 过后再次投递该消息 10、具体技术选型指标5:社区力度及生态发展 对于目前流行的编程语言而言,如 Java、Python,如果你在使用过程中遇到了一些异常,基本上可以通过搜索引擎的帮助来得到解决,因为一个产品用的人越多,踩过的坑也就越多

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

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

    IM系统的MQ消息中间件选型:Kafka还是RabbitMQ? 1、前言 在IM这种讲究高并发、高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转、消息削峰、消息交换异步化等等角色,当然MQ消息中间件的作用远不止于此 但市面上的MQ消息中间件产品很多,作为IM系统中必不可少的一环,我们该如何选型?那么请继续阅读本文。 5选型要点概述 衡量一款消息中间件是否符合需求需要从多个维度进行考察,首要的就是功能维度,这个直接决定了你能否最大程度上的实现开箱即用,进而缩短项目周期、降低成本等。 10、具体技术选型指标5:社区力度及生态发展 对于目前流行的编程语言而言,如 Java、Python,如果你在使用过程中遇到了一些异常,基本上可以通过搜索引擎的帮助来得到解决,因为一个产品用的人越多,踩过的坑也就越多

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

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

    本文将要分享的是陌生人社交应用探探的IM长连接模块从技术选型到架构设计,再到性能优化的整个技术实践过程和经验总结。 (▲ 上图引用自《移动端IM/推送系统的协议选型:UDP还是TCP?》) TCP实现长连接的四个问题: 1)移动端的消息量还是比较稀疏,用户每次拿到手机之后,发的消息总数比较少,每条消息的间隔比较长。 因为国内的网络运营商对于NIT设备有一个保活机制,目前基本在5分钟以上,5分钟如果不发包的话,会把你的缓存给删掉。基本上各运营商都在5分钟以上,只不过移动4G阻碍了。 (本文已同步发布于:http://www.52im.net/thread-3780-1-1.html) 14、参考资料 [1] 移动端IM/推送系统的协议选型:UDP还是TCP? [2] 5G时代已经到来,TCP/IP老矣,尚能饭否? [3] 为何基于TCP协议的移动端IM仍然需要心跳保活机制?

    2K20编辑于 2021-12-14
  • 来自专栏H5性能优化

    H5秒开技术选型

    起本地服务器加载本地资源5.sonic技术方案:6.支付宝方案:7.爱奇艺方案:8.今日头条方案:1. 通过获取沙盒H5路径直接加载描述:通过获取沙盒H5路径直接加载 将h5文件存入沙盒,webview加载本地文件URL 。 起本地服务器加载本地资源描述:如果本地有资源可以满足该请求的话,H5 容器会使用本地资源。 如果没有可以满足请求的本地资源,H5 容器会使用线上资源。 app启动的时候,从服务端加载H5资源包的版本和地址。 URL广告落地页H5拉起时,ad-sw.js 的fetch事件监听函数被回调,以FetchEvent的request.url为Key 查找cache。

    1.6K40编辑于 2022-12-01
  • 来自专栏芋道源码1024

    5 种 API 网关技术选型,yyds

    5. 安全方面 SSL 加密及证书管理、Session 验证、授权、数据校验,以及对请求源进行恶意攻击的防范。错误处理越靠前的位置就是越好,所以,网关可以做到一个全站的接入组件来对后端的服务进行保护。 Janus、fagongzi、Grpc-gateway Dotnet :Ocelot NodeJS :Express Gateway、Micro Gateway 按照使用数量、成熟度等来划分,主流的有 55. SpringCloud Gateway 特征 SpringCloud官方,对SpringCloud Gateway 特征介绍如下: (1)基于 Spring Framework 5,Project Reactor 断路器 (3)集成 Spring Cloud DiscoveryClient (4)Predicates 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters (5

    2.3K40编辑于 2022-08-29
  • 来自专栏用户4215420的专栏

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

    1.前言: 近来笔者接到公司的一个IM开发需要,要在原来的Web业务系统、移动端系统上加入一个即时聊天的功能,具有就是能聊天就行。 相信各位也会接到需要开发IM的系统的任务,那么,开发一个im系统应选用哪种通讯协议? 开发成本高,如要支持多个平台, 每个客户端都需要定制,IM方面的开源社区不活跃,技术文档少。 跨平台: 差, 每个客户端都需要实现MQTT的聊天协议。

    3.3K00发布于 2020-06-14
  • 来自专栏即时通讯技术

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

    、打包、踩坑等)》《IM跨平台技术学习(三):vivo的Electron技术栈选型、全方位实践总结》(* 本文)《IM跨平台技术学习(四):蘑菇街基于Electron开发IM客户端的技术实践》(稍后发布 .. )《IM跨平台技术学习(五):融云基于Electron的IM跨平台SDK改造实践总结》(稍后发布.. )《IM跨平台技术学习(六):网易云信基于Electron的IM消息全文检索技术实践》(稍后发布 4、开发技术栈选型4.1编程语言选型我们最终选择的是Typescript,理由如下。 至此,技术选型就介绍完了。5、打包构建实践5.1应用图标生成不同尺寸图标的生成有以下方法。  网易云信Web端IM的聊天消息全文检索技术实践学习交流:- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》 - 开源IM框架源码:https://github.com/JackJiang2011

    2K31编辑于 2022-09-29
  • 来自专栏【腾讯云开发者】

    5大常见高并发限流算法选型浅析

    在现代高并发系统中,随着用户访问量的激增和业务需求的不断扩展,限流作为一种至关重要的保护机制,被广泛应用于防止系统过载,确保系统的稳定性和可用性。 本文将深入剖析几种常见的限流算法,探讨它们的原理、优缺点并给出代码实例,帮助读者更好地理解和应用这些算法,从而在实际项目中构建更加高效、稳定的系统。

    55610编辑于 2024-12-19
  • 来自专栏数据库与编程

    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技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)》《IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践》(* 本文)4、为什么需要分布式ID 5、我们的分布式ID架构原理5.1 技术选型下表是业内常见的分布式ID解决方案:综合考虑是否支持水平扩展以及能够显示指定ID长度,最终选择的是Leaf的Segment模式(详见《深度解密美团的分布式ID 分层编译将JVM的执行状态分为了5个层次:L0:解释执行(也会profiling);L1:执行不带profiling的C1代码;L2:执行仅带方法调用次数和循环回边执行次数profiling的C1代码;

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

    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系统设计篇

    注意:本系列是给IM初学者的文章,IM老油条们还望海涵,勿喷! ,有的只是从IM入门者的角度的思路和实战,适合IM初学者阅读。 通信技术快速入门:短轮询、长轮询、SSE、WebSocket》5IM单聊思路设计5.1 通讯架构原理以下是通讯架构原理图:如上图所示,通讯流程解析如下:1)实现客户端和客户端之间通讯,那么需要使用服务端作为通讯的中转站 、通信协议和客户端[5] 一套海量在线用户的移动端IM架构设计实践分享(含详细图文)[6] 一套原创分布式即时通讯(IM)系统理论架构方案[7]  一套高可用、易伸缩、高并发的IM群聊、单聊架构方案设计实践 [11] 基于实践:一套百万消息量小规模IM系统技术要点总结[12] 探探的IM长连接技术实践:技术选型、架构设计、性能优化(本文已同步发布于:http://www.52im.net/thread-3963

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

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

    3、技术选型 在技术选型上,除了采用SpringBoot等基础框架外,也会采用容器化方案。 同时,考虑到为了尽量降低技术门槛,在整个分布式IM即时通讯系统的技术选型中,主要采用市面上比较流行的技术框架和方案。 即时通讯服务的ID; 4)后端平台获取到用户B连接的IM即时通讯服务的ID后,会向RocketMQ中用户B连接的IM即时通讯服务ID对应的Topic发送消息; 5IM即时通讯服务会监听自身服务ID对应的 ID; 4)每个IM即时通讯服务,都只监听自身ID对应的RocketMQ中Topic的消息; 5)用户登录分布式IM即时通讯系统后,会与IM即时通讯服务建立长连接,并且会根据用户ID和所在的终端缓存长连接 [3] 一套海量在线用户的移动端IM架构设计实践分享(含详细图文) [4] 一套原创分布式即时通讯(IM)系统理论架构方案 [5] 移动端IM中大规模群消息的推送如何保证效率、实时性?

    4.6K04编辑于 2024-01-16
  • 来自专栏音视频咖

    你问我答 | 即时通信IM(2021年5月-7月)

    即时通信IM 你问我答 第1季 本期共解答10个问题 Q1:直播间群聊消息会不会存在吞消息的问题 另外一般情况下的消息接收的延迟是多久? Q4:IM创建账号提示报错怎么办? 体验版最多只能创建100个帐号,如果需要创建更多帐号,您可以购买专业版。 Q5IM的DAU如何计算? 单个用户当日登录即时通信 IM 服务会计为1个 DAU,同一用户重复登录时,DAU 不累加。 Q7:即时通信IM群聊消息中,如何保证收发消息的顺序一致? 当消息发送成功以后能够获取一个序列号,通过序列号进行排序。 Q8:应用套餐退费后会马上停用应用么? Q10:即时通信IM如何获取当前未读消息数量? 即时通信 IM 可通过 TIMConversation 的 getUnReadMessageNum 方法获取当前会话中未读消息的数量。

    1.3K10发布于 2021-08-30
  • 来自专栏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
领券