从根上理解高性能、高并发(三):深入操作系统,彻底理解I/O多路复用

2021-01-05
阅读 7 分钟
1.4k
作为即时通讯技术的开发者来说,高性能、高并发相关的技术概念早就了然与胸,什么线程池、零拷贝、多路复用、事件驱动、epoll等等名词信手拈来,又或许你对具有这些技术特征的技术框架比如:Java的Netty、Php的workman、Go的nget等熟练掌握。但真正到了面视或者技术实践过程中遇到无法释怀的疑惑时,方知自已所掌握的不...

从根上理解高性能、高并发(二):深入操作系统,理解I/O与零拷贝技术

2020-12-28
阅读 6 分钟
1.9k
作为即时通讯技术的开发者来说,高性能、高并发相关的技术概念早就了然与胸,什么线程池、零拷贝、多路复用、事件驱动、epoll等等名词信手拈来,又或许你对具有这些技术特征的技术框架比如:Java的Netty、Php的workman、Go的nget等熟练掌握。但真正到了面视或者技术实践过程中遇到无法释怀的疑惑时,方知自已所掌握的不...

从根上理解高性能、高并发(一):深入计算机底层,理解线程与线程池

2020-12-23
阅读 11 分钟
2.1k
作为即时通讯技术的开发者来说,高性能、高并发相关的技术概念早就了然与胸,什么线程池、零拷贝、多路复用、事件驱动、epoll等等名词信手拈来,又或许你对具有这些技术特征的技术框架比如:Java的Netty、Php的workman、Go的nget等熟练掌握。但真正到了面视或者技术实践过程中遇到无法释怀的疑惑时,方知自已所掌握的不...

阿里技术分享:电商IM消息平台,在群聊、直播场景下的技术实践

2020-12-18
阅读 8 分钟
3.3k
本文来自淘宝消息业务团队的技术实践分享,分析了电商IM消息平台在非传统IM应用场景下的高发并、强互动群聊和直播业务中的技术特点,总结并分享了在这些场景下实现大量多对多实时消息分发投递的一些架构方面的设计实践。

不为人知的网络编程(十):深入操作系统,从内核理解网络包的接收过程(Linux篇)

2020-12-09
阅读 22 分钟
3.5k
因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对网络底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。

Java对IPv6的支持详解:支持情况、相关API、演示代码等

2020-12-07
阅读 10 分钟
3.7k
本文由朱益盛、杨晖、傅啸分享,来自IBM Developer社区,原题“使用 Java 开发兼容 IPv6 的网络应用程序”,本次收录时有改动。

史上最通俗Netty入门长文:基本介绍、环境搭建、动手实战

2020-11-18
阅读 13 分钟
1.7k
本文适合对Netty一无所知的Java NIO网络编程新手阅读,为了做到这一点,内容从最基本介绍到开发环境的配置,再到第一个Demo代码的编写,事无巨细都用详细的图文进行了说明。

实时音视频面视必备:快速掌握11个视频技术相关的基础概念

2020-11-12
阅读 10 分钟
5.3k
随着移动互联网的普及,实时音视频技术已经在越来越多的场景下发挥重要作用,已经不再局限于IM中的实时视频聊天、实时视频会议这种功能,在远程医疗、远程教育、智能家居等等场景也司空见惯。

零基础IM开发入门(四):什么是IM系统的消息时序一致性?

2020-11-04
阅读 6 分钟
2.3k
本文引用了沈剑《如何保证IM实时消息的“时序性”与“一致性”?》一文的图片和内容(由于太懒,图没重新画),原文链接在文末。1、引言本文接上篇《零基础IM开发入门(三):什么是IM系统的可靠性?》,讲解IM系统中消息时序的一致性问题。所谓的一致性,在IM中通常指的是消息时序的一致性,那就是:1)聊天消息的上下文连续...

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

2020-10-29
阅读 6 分钟
1.6k
上一篇《零基础IM开发入门(二):什么是IM系统的实时性?》讲到了IM系统的“立足”之本——“实时性”这个技术特征,本篇主要讲解IM系统中的“可靠性”这个话题,内容尽量做到只讲原理不深入展开,避开深层次的技术性探讨,确保通俗易懂。

WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器

2020-10-21
阅读 13 分钟
3.3k
最近正在研究 WebSocket 相关的知识,想着如何能自己实现 WebSocket 协议。到网上搜罗了一番资料后用 Node.js 实现了一个WebSocket协议服务器,倒也没有想象中那么复杂,除去注释语句和 console 语句后,大约 200 行代码左右。

WebSocket从入门到精通,半小时就够!

2020-10-14
阅读 11 分钟
1.9k
自从HTML5里的WebSocket出现后,彻底改变了以往Web端即时通讯技术的基础通道这个“痛点”(在此之前,开发者们不得不弄出了诸如:短轮询、长轮询、Comet、SSE等技术,可谓苦之久矣...),如今再也不用纠结到底该用“轮询”还是“Comet”技术来保证数据的实时性了,幸福来的就是如此突然 ^-^。

融云技术分享:基于WebRTC的实时音视频首帧显示时间优化实践

2020-09-28
阅读 12 分钟
4.4k
本文由融云技术团队原创投稿,作者是融云WebRTC高级工程师苏道,转载请注明出处。1、引言在一个典型的IM应用里,使用实时音视频聊天功能时,视频首帧的显示,是一项很重要的用户体验指标。本文主要通过对WebRTC接收端的音视频处理过程分析,来了解和优化视频首帧的显示时间,并进行了总结和分享。(本文同步发布于:[链...

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

2020-09-18
阅读 5 分钟
3k
随着移动互联网络的发展,IM技术的应用已经不仅限于聊天应用本身,它早已融入各种应用形态中,比如:直播中的主播互动、联网游戏中的玩家互动、外卖/打车应用中的实时位置共享、在线教育应用中的互动白板等。

IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)

2020-09-08
阅读 7 分钟
2.6k
在中大型IM系统中,聊天消息的唯一ID生成策略是个很重要的技术点。不夸张的说,聊天消息ID贯穿了整个聊天生命周期的几乎每一个算法、逻辑和过程,ID生成策略的好坏有可能直接决定系统在某些技术点上的设计难易度。有中小型IM场景下,消息ID可以简单处理,反正只要唯一就行,而中大型场景下,因为要考虑到分布式的性能、...

高性能网络编程(七):到底什么是高并发?一文即懂!

2020-09-03
阅读 9 分钟
4.1k
本文由小米信息技术团队研发工程师陈刚原创,原题“当我们在谈论高并发的时候究竟在谈什么?”,为了更好的内容呈现,即时通讯网收录时有修订和改动。

社交软件红包技术解密(十一):最全解密微信红包随机算法(含代码实现)

2020-08-26
阅读 9 分钟
4.4k
本文内容编写时,参考了网上的资料,详见“参考资料”部分,感谢分享者。1、引言这个系列文章已经整理了10篇,但都没有涉及到具体的红包算法实现,主要有以下两方面原因。一方面是各社交/IM产品中的红包功能同质化严重,红包算法的“可玩性”便是“核心竞争力所在”,这是同质化功能的差异化竞争思路,不会随便公开。另一方面...

淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路

2020-08-19
阅读 7 分钟
2.6k
本文由手机淘宝技术团队原创分享,吴志华(天施)、洪海(孤星)、陈虓将(仲升)等专家参与了本文创作,首次发表于公众号“淘系技术”,收录整理时有修订和改动。

脑残式网络编程入门(九):面试必考,史上最通俗大小端字节序详解

2020-08-13
阅读 5 分钟
1.7k
最近在从头重写 MobileIMSDK 的TCP版,自已组织TCP数据帧时就遇到了字节序大小端问题。所以,借这个机会单独整理了这篇文章,希望能加深大家对字节序问题的理解,加强对IM这种基于网络通信的程序在数据传输这一层的知识掌控情况。

Web端即时通讯实践干货:如何让WebSocket断网重连更快速?

2020-08-05
阅读 6 分钟
3.2k
在一个完善的即时通讯IM应用中,WebSocket是极其关键的一环,它为基于Web的即时通讯应用提供了一种全双工的通信机制。但为了提升IM等实际应用场景下的消息即时性和可靠性,我们需要克服WebSocket及其底层依赖的TCP连接对于复杂网络情况下的不稳定性,即时通讯的开发者们通常都需要为其设计一套完整的连接保活、验活以及...

IM开发干货分享:有赞移动端IM的组件化SDK架构设计实践

2020-07-29
阅读 10 分钟
2.9k
本文主要以Android客户端为例,记录了有赞旗下 App 中使用自研 IM,并将IM提炼成组件化SDK的设计思路。此项工作由有赞移动开发组 IM SDK 团队共同讨论完成。

零基础入门:实时音视频技术基础知识全面盘点

2020-07-24
阅读 8 分钟
9.5k
虽然网上有很多的博文总结了实时音视频技术的学习路线,但是相关的知识都相对独立,有讲“音视频解码相关”的、有讲“OpenGL相关”的、也有讲“FFmpeg相关的”、还有讲“RTP/RTCP、RTMP、HLS、QUIC等通信相关的”,但是对于新手来说,把所有的知识衔接串联起来,并很好的理解所有的知识,却是非常困难的。

IM开发干货分享:如何优雅的实现大量离线消息的可靠投递

2020-07-21
阅读 7 分钟
3.8k
IM聊天消息能保证可靠送达,对于用户来说,就好比把钱存在银行不怕被偷一样,是信任的问题。试想,如果用户能明显感知到聊天消息无法保证送达,谁还愿意来用你的APP?谁也不希望自已的话就像浮云一样随风飘逝。

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

2020-07-09
阅读 8 分钟
13.8k
IM系统看似简单(没错,很多土老板认为开发个qq和微信也就是几万块钱的事... ),实责是众多技术的应用合体,包括网络编程、移动开发、后端开发、高并发、高可用、高安全等技术范畴,再加上多端使用不同的编程语言,想要凑齐一个典型的IM产品技术栈那也不是个容易事。

IM群聊消息的已读未读功能在存储空间方面的实现思路探讨

2020-07-02
阅读 5 分钟
3.6k
以阿里的钉钉为例,钉钉的产品定位是用于商务交流,其“强制已读回执”功能,让职场人无法再“假装不在线”、“假装没收到”。更有甚者,钉钉的群聊“强制已读回执”功能,甚至能够知道谁读了消息,谁没有读消息(老板的福音啊)。

Android保活从入门到放弃:乖乖引导用户加白名单吧(附7大机型加白示例)

2020-06-24
阅读 6 分钟
7.3k
IM在Android上的保活问题经常在即时通讯网的论坛和技术群里被讨论,自从Android 8.0后系统大大降低了后台运行应用的保活容忍度(详见《Android P正式版即将到来:后台应用保活、消息推送的真正噩梦》),保活从黑科技横行的时代进入了技术蛮荒阶段,真要实现保活,技术难度越来越大。

IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的

2020-06-17
阅读 10 分钟
6.4k
好久没写技术文章了,今天这篇不是原理性文章,而是为大家分享一下由笔者主导开发实施的IM即时通讯聊天系统,针对大量离线消息(包括消息漫游)导致的用户体验问题的升级改造全过程。

爱奇艺技术分享:轻松诙谐,讲解视频编解码技术的过去、现在和将来

2020-06-10
阅读 9 分钟
5.2k
本文并未就具体的视频编解码概念进行深入的讨论,目的是尽可能以浅显易懂的方式让读者轻松了解本文标题想呈现的内容。如果您想深入了解视频编解码技术,可继续阅读以下文章。

网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!

2020-06-03
阅读 7 分钟
3k
本文中文译文由作者“ably.io”发布于公众号“高可用架构”,译文原题:《深入解读HTTP3的原理及应用》、英文原题:《HTTP/3 deep dive》(文末有译文和原文链接),即时通讯网收录时有少许改动,感谢原作者和译者的分享。

美团点评的移动端网络优化实践:大幅提升连接成功率、速度等

2020-05-29
阅读 12 分钟
10.3k
1、引言 网络优化对于移动端App产品的用户体验至关重要,也与公司的运营和营收息息相关。 这里列举两个公开的数据: “《页面加载超过3秒,57%的用户会离开》”“《Amazon页面加载延长1秒,一年就会减少16亿美金营收》” 网络性能对于用户体验的影响,将非常直接地反馈到业务的运营上。 而且,移动网络固有的弱网问题、DNS问...