InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

OpenIM:如何打造安全可靠的即时通讯服务

  • 2015-07-02
  • 本文字数:3131 字

    阅读完需:约 10 分钟

即时通讯作为移动应用的常用组件,开发起来却并不简单,除了需要研究通讯协议,保证安全性,还要应对复杂的移动网络情况,以提供高可用性的服务。 OpenIM 是阿里巴巴推出的,集成于阿里百川项目中的移动端 IM 开放服务。阿里百川是阿里巴巴集团无线开放平台,为移动开发者(涵盖移动创业者)提供快速搭建APP、加速APP 商业化、提升用户体验的解决方案。

InfoQ 记者采访了该服务的研发负责人敖闰,了解如何打造一个高可用的安全可靠的即时通讯服务。

受访嘉宾介绍:
敖闰(符小宝),旺旺团队技术总监。一直从事移动互联网相关产品研发工作。加入阿里前,主导开发 Qualcomm BREW 平台上 WWW Embedded Browser。2009 年加入阿里后负责云 OS Framework 及 Apps 工作,2012 年开始负责阿里旺旺团队的研发工作。

InfoQ:请简单介绍一下 OpenIM 目前的团队配置情况。

敖闰:OpenIM 来自于旺旺事业部,旺旺事业部历史比较悠久,从 2003 年淘宝成立初期,旺旺团队同时成立,旺旺产品和淘宝一起成长,迅速成长为全球最大的客服沟通平台 (日均消息量 10 亿级,DAU 亿级)。目前团队上百人,包括产品运营团队,技术团队,测试团队等,其中技术团队含 IM 服务端技术团队,及全平台的客户端技术团队 (Android, iOS, Windows, Mac, H5) 。已授权 IM 相关专利数近百项。

InfoQ:请介绍一下 OpenIM,以及淘宝为何将这项能力开放出来?在业务上有什么特色?

敖闰:OpenIM 是阿里巴巴面向应用开发者开放的免费即时通信服务,由阿里旺旺团队提供。作为即时通讯基础组件,已经支持了手机淘宝,阿里旺旺,旺信,天猫,聚划算,去啊等阿里系内部应用。现在,开发者基于 OpenIM,可量身定制“类微信”“类旺信”“类千牛”的应用。

阿里希望构建云(阿里提供的基础服务)+ 端(各类 APP)的全新移动时代商业生态,来满足消费者个性化、场景化的无线生活和无处不在的需求。移动互联网时代,为了增强人与人之间的连接,各类 App 都需要基础的沟通功能。开发者开发一套高可用性的 IM 系统,成本非常高。我们将拥有 12 年技术沉淀、历经多次双十一考验的即时通讯能力及客服平台能力开放出来,帮助开发者轻松实现沟通功能,降低 App 开发成本。

OpenIM 除了基础的 IM 功能之外,同时开放的还有全球最大的客服平台功能。基于该客服平台的旺旺 / 千牛,目前在电商行业已服务上千万卖家。

InfoQ:您刚才提到开发者开发一套高可用性的 IM 系统成本非常高,那么大规模的即时通讯在技术上有什么难点?

敖闰:我们梳理了一下,大概有下面四个技术难点:

  • 如何确保系统的高可用性?因为 IM 服务一旦中断,对用户体验的伤害非常大,所以,一定要保证服务的高可用性。
  • 如何在移动网络环境下优化电量,流量,及长连接的健壮性?现在移动网络有 2G、3G、4G 各种制式,并且随时可能切换和中断,移动网络优化可以说是面向移动服务的共同问题。
  • 如何确保 IM 系统的整体安全?因为用户的消息是个人隐私,因此要从多个层面来保证 IM 系统的安全性。
  • 如何降低开发者集成门槛?这个是针对第三方 IM 服务来说的,如果集成成本太高,开发者用起来不方便,在实际使用中也会出现各种问题。

InfoQ:如何确保 IM 的高可用性?OpenIM 的服务端架构是怎样的?

敖闰:经过多年双 11 的考验,我们 IM 服务的可用性持续保持 99.99% 以上。旺旺团队逐步形成了系统高可用性解决方案,具体策略包括:

  • 水平伸缩的系统架构:全系统无单点设计,各个业务系统环节均可水平伸缩,同时负载均衡系统,会实时的进行流量分配,让整个系统运行在合理的水位。
  • 异地多活去中心化部署:去中心化的异地多机房部署,多个机房同时提供服务,任何一个点的故障,其他机房能够即时承接。
  • 自动化故障隔离容灾系统:对于服务器的故障,能够实时的检测并且自动的隔离,快速的切换流量到正常的服务器。
  • 完备的监控和预警体系:基于阿里巴巴运维体系的完备的监控和预警,让我们对整个系统的运行状态了如指掌。

整个系统分为:

  • 接入层 (客户端):负责客户端接入,
  • 接入层 (服务端):负责 App Server 和 OpenIM 服务器的对接。
  • 协议路由:消息路由和业务逻辑层,负责消息路由和各种业务逻辑处理;
  • 数据层:负责用户、业务数据的缓存,持久化等。

InfoQ:OpenIM 针对移动网络的特点做了哪些优化?

敖闰:我们做的优化有:

  • 极简协议:OpenIM 采用完全私有的二进制协议:确保数据加密安全的同时,流量消耗极少。同时心跳包协议对 IM 的电量和流量影响很大,OpenIM 在心跳包协议上进行了极简设计:仅 1 Byte 。
  • 智能心跳:OpenIM 独特的保活机制, 自动适应不同的网络环境,智能调整心跳频率,将参数调整到最优状态。
  • 智能唤醒: 众所周知,Android 手机电量消耗一直为大家所诟病。 后台各种应用不断唤醒手机,致使手机待机时间大为缩短。OpenIM 能以最低限度唤醒手机进行必要的保活,保证连接的健康及消息的及时到达: OpenIM 与系统以及其他应用进行交互,如果有其他应用唤醒了手机,OpenIM 将避免冗余唤醒,节约设备的电量消耗。
  • 多路复用,共享连接:OpenIM 的 SDK 广泛使用在阿里的各移动应用中,如手机淘宝、天猫、旺信、千牛、去啊等。通常来说,多个 IM App 会有多条物理 TCP 长连接,OpenIM 支持多应用共享复用一条 TCP 长连接,保活的流量将从 N 倍变为 1 倍 ; 唤醒手机次数也由 N 个应用唤醒变为 1 个应用唤醒。由于这些阿里应用覆盖用户群较大,OpenIM 会自动共享阿里应用已经存在的物理连接,极大减少电量和流量开销。
  • 多路复用, 共同保活:同时,Android 系统资源紧张时会在后台清理进程,当某个 OpenIM 所在应用被清理后,通常 OpenIM 消息也就无法实时触达。但由于“多路复用”机制,只要当前任一应用 (包括阿里应用) 还存活,OpenIM 均能顺利工作,有效提升了长连接的健壮性。

InfoQ:OpenIM 在安全上做了哪些事情?

敖闰:基于旺旺海量消息 (每日十亿级) 数据样本及旺旺安全的多年技术沉淀,OpenIM 为开发者提供了与支付宝,淘宝,天猫同等级别的安全服务,从账号安全,传输安全,存储安全,内容安全等各个维度提供了完整的安全方案。

  • 帐号安全。OpenIM 各自域的用户帐号经过 MD5 加密后进行传输和存储,保证开发者用户数据的私密性及安全。OpenIM 客服帐号,享受阿里系账号的所有安全功能:数字证书,一键校验,手机验证等。

  • 数据传输安全。包括:完全私有的二进制通讯协议;动态秘钥,全链路加密传输。

  • 本地存储安全。就是将本地数据库加密。

  • 内容安全。

    • 恶意内容检测:支持可配置的关键字系统,支持风险提醒和过滤;支持恶意链接 (钓鱼链接等) 和二维码图片的风险识别:基于阿里系内最大的恶意链接库 (WenKing)。
    • 反垃圾安全。基于每天海量消息(十亿级)和用户(亿级)综合行为的基础数据,构建的大型反垃圾系统,实现恶意行为的实时监控。基于文本及图片模型的垃圾识别算法,支持恶意内容的实时监控。恶意内容样本的系统自学习,提升系统的召回率。

InfoQ:OpenIM 如何降低开发者的集成门槛?

敖闰:针对客户端集成,OpenIM 对外提供两种集成方式 (OpenIMKit , OpenIMCore), 其中 OpenIMKit 提供了高度集成的 IM 组件,用户只需调用三个接口 (初始化,登录,创建聊天) 即可完成简单地集成。同时针对用户的定制化需求,OpenIMKit 提供了丰富的定制化接口,用户可以按需定制整体界面及风格。

InfoQ:请介绍一下 OpenIM 未来的计划。

敖闰:未来我们一方面会丰富即时通讯的能力,不仅是文字、语音、图片、自定义消息,还包括类似 VoIP、阅后即焚、收发红包等能力。另一方面,我们会更深入了解垂直类行业 App 的沟通诉求,结合客服能力特色,为不同行业的 App 提供基础定制即时通讯的解决方案,比如社交互动、企业协同、生活服务等。

7 月 16 日阿里百川无线开放大会将于杭州举行,来自阿里的技术专家将为大家分享移动时代的开发技术和经验,欢迎开发者报名参加。

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2015-07-02 03:1415528
用户头像

发布了 164 篇内容, 共 100.9 次阅读, 收获喜欢 388 次。

关注

评论 1 条评论

发布
用户头像
好难啊,最近需求来了
2020-12-09 10:09
回复
没有更多了
发现更多内容

虽不能至,心向往之|靠谱点评

无量靠谱

ArrayList与LinkedList性能大PK

Damon

java基础 5月日更

模块4-作业

yu

编辑器的江湖

ES_her0

5月日更

低代码/无代码和简单API

YonBuilder低代码开发平台

低代码

加密货币终将替代黄金?总价值已接近私人持有黄金价值

CECBC

梯度下降法 - DAY12

Qien Z.

5月日更 过拟合 梯度下降法

加油!未来的每一天

Sherry

520单身福利 520 单身福利

Python数据科学基础-Pandas介绍

五分钟学大数据

数据科学 5月日更

☕【JVM技术之旅】彻底弄清楚Minor GC和Major GC及Full GC

洛神灬殇

JVM 垃圾回收 GC 5月日更

InnoDB 锁类型及其分析

luojiahu

innodb 死锁 间隙锁 意向锁

今年过一次不一样的520!

liuzhen007

520单身福利 520 单身福利

领奖

IT蜗壳-Tango

5月日更

Python自动化神器-Fabric

小圆子

520 单身福利

Vue-2-常用指令

Python研究所

520 单身福利

模块四:课后作业

菲尼克斯

架构实战营

🚄【Redis 干货领域】帮你完全搞定Cluster原理(架构篇)

洛神灬殇

redis redis集群 5月日更 redis架构

爱情从来都不是简单的事

阿泽🧸

520单身福利

密码学基础

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

C语言不完全类型是什么?有什么用途?

不脱发的程序猿

C语言 C语言不完全类型

缅怀袁老

topsion

随笔杂谈

设计千万级学生管理系统的考试试卷存储方案

Vincent

架构训练营

Python - 日志处理(logging模块)

若尘

日志 log Python编程 5月日更

架构实战营 模块四作业

netspecial

架构实战营

网络攻防学习笔记 Day22

穿过生命散发芬芳

5月日更 网络攻防

感恩父母

若兮

520 单身福利

Flink的程序结构

大数据技术指南

flink 5月日更

打击挖矿和交易行为!

CECBC

【渗透测试】hackthebox靶场之ScriptKiddie

Thrash

【音视频】基于声网实时音视频能力的音视频质量体系建设

轻口味

音视频 WebRTC 声网 质量指标

模块4作业4

dwade

#架构实战营

  • 扫码添加小助手
    领取最新资料包
OpenIM:如何打造安全可靠的即时通讯服务_安全_徐川_InfoQ精选文章