[关闭]
@pockry 2015-07-02T16:14:52.000000Z 字数 3325 阅读 2274

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

即时通讯 移动


即时通讯作为移动应用的常用组件,开发起来却并不简单,除了需要研究通讯协议,保证安全性,还要应对复杂的移动网络情况,以提供高可用性的服务。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日阿里百川无线开放大会将于杭州举行,来自阿里的技术专家将为大家分享移动时代的开发技术和经验,欢迎开发者报名参加。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注