北京2015年11月26日电 /美通社/ -- 近日,全球知名技术媒体InfoQ专访了融云技术副总裁杨威。以下是访谈全文,原文出自InfoQ中文站:
目前,随着移动应用的泛社交化,移动即时通讯(IM)第三方服务被越来越多开发者所接受。对于这类服务,功能和稳定性是开发者关注的重点,但在此之外,性能和体验也是非常重要的因素。InfoQ 记者对融云技术副总裁杨威进行采访,探讨了移动 IM 服务如何做到性能和体验上的极致优化。
受访嘉宾介绍:
杨威,融云技术副总裁,移动通信技术专家,智能终端软件研发专家。北京邮电大学通信工程系学士和硕士学位,长期从事智能移动终端上的软件开发工作,曾在三星中国通信研究院工作八年。曾负责第三方软件的本地化开发工作,如高德导航等软件在全部中国三星终端上的商业化过程。曾作为项目经理领导了包括 Galaxy Note 在内等多款商业智能终端的研发和商业化项目工作。作为三星融合通信/RCS产品线研发总负责人和技术专家,参与了中国移动融合通信产品规范的整体设计,带领团队设计了三星 RCS、VoIP/VoLTE 产品线的软件架构,并负责研发和团队管理工作。
InfoQ:请介绍一下融云在哪些方面做了性能和体验优化?是否设立了性能指标?
杨威:因为融云提供的是面向开发者的云服务,我们十分重视性能和用户体验。我们在提供即时通讯服务上有三个基本原则:节省客户的资源,让客户可扩展和可定制,和提供尽量好的功能质量。根据这三个原则我们其实是有一些指标的,我们内部比较关注5个性能指标,分别是流量、电量、速度、质量和包大小。
不过,在很多时候这些指标之间其实是互相矛盾或者冲突的,所以需要权衡,不可能在每一个方面都做到完美。
InfoQ:目前市面上比较主流的通讯协议有哪些?融云在通讯协议方面做了哪些优化,和业界主流或标准相比有哪些优势?
杨威:对于通讯协议,可能不了解的人觉得它很神秘,但像我们这种整天面对它们的人觉得并没有什么特别的地方。用通俗的话来讲,就是两者之间制定一条规则,然后遵守这个规则我把一个东西传给你,你确认收到了,这个规则就是通讯协议。在通信、电信行业里,比较常用的 IM 协议可以举三个例子:
第一类常用的是 SIP/SIMPLE 等协议,这个在电信网络用的比较多,包括全球运营商都在推广的下一代融合通信。这类协议的特点是非常健壮,但是规范非常复杂,光是看英文规范文档可能就要学习一两年,它能够让信息在通信节点之间传输得到很好的安全保障,非常高的互通行,扩展性,同时在私有部署 的时候也可裁剪,所以实际上现在仍然非常多的业务在使用这类协议。
第二类常用的就是 XMPP 协议,XMPP 是互联网开源标准的典范。常用的还是 C/S 架构。XMPP 协议的初衷是为互联网设计的一套协议,基于 XML协议,是可扩展的,所以理论上你可以将它扩展和配置成你想要的业务。但是,XMPP 协议是基于互联网早期标准所衍生的,所以它在某些特性上是不适合 移动端的,更适合于 PC 端,比如它的数据包比较大,另外在断线重连上做的也不够好。一般来讲,我还是推荐初学者用 XMPP 来搭建系统,因为有非常丰富的开源资源,但往往在一段时间之后你会发现进入瓶颈,比如丢消息,延迟响应慢等等,根源还在于 XMPP 机制上更多的还是考虑了稳定的网络环境设计的。XMPP 虽然是开源的软件,开源代表免费,但开源不代表不需要花时间,很多时候为了解决一个小小的问题,你必须通读它的源代码,你才知道问题出在哪里,如何解决。我们接触了很多客户,都是因为解决不了开源协议带来的复杂问题而重新改变了方案。
第三类常用是物联网协议,比如目前比较知名的MQTT协议,这是 IBM 开发的一款支持多平台的,非常节省资源的一套通信协议。这类协议的特点就是预设场景很简单,发送和接收信息都是一次,报文尽量简短。融云在设计自己的协议 的时候参考了物联网协议,当然,我们也参考了其他业界比较优秀的协议,比如我们还要发送图片、多媒体内容,所以加了很多自己的业务模型在基本协议里。
这第三类例子,其实代表的是业内很大一部分的通讯协议,即各个公司私有定制的通信协议,从互联网早期的雅虎、MSN、到移动互联网时代的微信,它们其实都是私有协议。这些私有协议支撑的是一种 OTT 业务,跨过电信运营商来提供即时通讯服务。移动互联网时代,App 开发者和他们的用户们其实并不需要关心底层是怎么实现的,只要一个用户能和另一个用户发送信息就可以,对于这样的场景,其实根据它们的需求定制一套私有协议是最好的,事实上,这也是即时通讯(软件)领域主流甚至唯一的实现方法。
即时通讯-单聊功能表-聊天功能-聊天app-聊天信息加密沟通-聊天文本-聊天技术-聊天构架源码-聊天 记录同步云储存-聊天消息测回-哇谷即时通讯IM源码
InfoQ:你们在省电上做了哪些优化?
杨威:省电也是开发者和用户比较关心的问题,特别是安卓平台。电量问题分为两类,一类是前台耗电,就是应用启动时消耗的电量,另一类是后台耗电,就是应用被关闭或屏幕熄灭时候的耗电。前台耗电的主要指标是:1)流量,2)内存,3)方法。第一在手机上,当我们在使用数据网络传输时的耗电量是使用 Wi-Fi 或者不使用网络时候的几倍到上百倍之间,因为通信芯片的功耗是非常高的,所以减小流量就是减小电量的消耗,同时还有减少通信次数,同样的留言,发送两次和发送一次,电量消耗其实差别很大;第二就是内存,尽量不使用压缩算法和其他消耗内存大的方法,消耗内存越大,使用内存越频繁,耗电量也越高。这里提到压缩算法,其实就是指标冲突的一个例子,像你用压缩算法将内容体积减少一半,流量减少一半,但是使用内存多了,增加了耗电量,这是个度的问题,如何选择,需要反复的测试和调整。因为我们传输的数据本来就是二进制数据,压缩作用不大,所以选择不压缩。最后就是流 程问题,不必要的操作和数据会加大耗电量。在序列化和反序列化方面我们使用 JSON 和 protobuffer,这是谷歌官方推荐的省流量省内存的方法,当然这也是业内比较通用的方案。
还有后台耗电,IM 类服务在后台时为了保持长连接,需要向服务端发送心跳包。这里我们除了做了减少心跳包大小这样常规的优化以外,还做了智能心跳的优化,在不同的网络条件下发送心跳的间隔时间不同,比如 2G 连接和响应速度慢,会消耗更多的电量。这里面的很多数据其实是一种“Magic Number”,因为这是根据大量的经验和测试数据对比,以及内部的数据得到的,并经常调整。
最后其实很多用户都有一个误区,因为安卓手机比较耗电,其实根据我们的测试,后台耗电其实还是远远小于前台耗电的。耗电往往是因为手机软件有各种bug。一些开发者会觉得IM类的软件比较耗电,其实 IM 类的软件一定是相对最耗电软件品类,因为你要不断跟其他人保持通信,如果其他软件耗电超过了 IM 软件,那才是问题。之所以大家觉得安卓手机后台耗电大的原因,一是因为手机上不止装一个 IM 软件,二是不光 IM 软件发心跳,其实所有的 App 都在做类似的事情,融云作为开发包的提供者,每个版本都会对电量和流量进行监控和测试,我们对此会比应用开发者付出更多的努力,也会有更强的保证。
InfoQ:你们在快速响应和传输速度上做了哪些优化?
杨威:第一点是数据包尽量小,第二点是我们尽量不分包,一次传输完所有信息,我们目前服务的使用场景,用户发送的信息往往比较短的,第三点是链路尽量短,服务器对数据做完处理后就发出去,一些阻塞的操作都是异步进行的,另外一些比较耗时的处理我们会放到客户端,第四点是“先收先发”,比如说在客户端,收到消息之后马上把它展现出来,然后再做其他操作。比如图片这类收发比较慢的消息,我们会优先展示,然后异步再收发。
InfoQ:融云在SDK上是否做了多路复用,安卓后台服务如何防杀死?
杨威:多路复用是肯定的,如果后台有多个使用我们 SDK 的应用在运行,我们可以保证它们同时只使用一个心跳。另外还有一个方面,就是我们在后台其实是需要保持两个通道的,一个是 TCP 的长连接,就是 IM 的,另外还有一个推送的长连接。对于移动 IM 来说,推送是必须要有的,因为手机熄屏后其实后台的服务已经停止工作了,只有推送能够提醒用户有新消息。对于这两个通道,我们也将它合并为一个心跳,只需要一个心跳就可以保持和服务端的两个长连接。另外在前台,我们的多路复用使用进程池,保证多条消息的收、发能够同时进行,这些进程池在使用后也会回收掉。总之就是,能少发出一个心跳消息,我们尽量少发出去一次,同时还要一定确保通信链路的稳定。
至于后台进程防杀这是个比较敏感的问题,因为现在用户不喜欢有一堆进程在后台消耗它的电量,而且国内的各个 ROM 厂商也在这方面做了一些工作,有些应用长时间占用系统资源的做法可能会被封禁。以前业内一般常用的做法是做了很多技术性工作来保证后台进程永远杀不死,因为唤醒率对于很多 App 厂商都 是很重要的评测指标,把后台杀死消息就收不到了。不过融云作为一家服务提供商,我们优先还是要对客户负责,因此所有的灰色地带都是不碰的,我们现在的 SDK 默认设置是一定不触犯系统或者 ROM 厂商的红线,如果系统一定要杀进程还不想你重启,那我们的后台就不再启动,我们一定优先遵从手机操作系统的规定,也就是用户的意愿。
InfoQ:融云用户目前有哪些使用场景,针对这些场景做过哪些优化?
杨威:有用户对我们总结说,融云最大的价值就是提供了一个稳定的长连接,用这个长连接其实可以干很多事。我们认为融云最大的价值是服务,客户想到的点子我们可以快速的研发和实现业务。群众的力量是无穷的,我们的用户发掘了很多以前我们从来也想不到的用法。比如做视频直播、发信令(遥控器)、弹幕,还有做像滴滴打车一样的实时地理位置共享。像微信一样的聊天界面很容易相信,但很多应用场景的界面完全都不是 IM,但其实他就是 IM。比如滴滴打车的首页,因为你可以想一下它那个界面,每个车都定时发送自己的地理位置,然后一起显示,其实原理和聊天室是一样的。我们经常和用户沟通,也为这些场景做了很多优化,举个例子,比如视频直播的聊天室,我们之前做得比较简单,就是满足了收发信息的需求,但是有些做视频直播的开发者还希望有排队、进场顺序等等,对于有些客户,我们会为它做一个定制版系统,有些如果是非常好的建议,我们也会吸收到我们的主系统里面。
InfoQ原文链接:http://www.infoq.com/cn/news/2015/11/yangwei-interview






热门搜索:
什么是私有云? 私有云、公有云还是混合云?企业该如何选? 企业聊天APP有什么作用,可以带来哪些便利? 企业选择混合云的优势 聊天APP应该具备哪些功能?怎么确保信息不被泄露? 企业即时通讯的使用价值有哪些 企业IM是什么,有什么使用优势? JM沟通优势有哪些,安全性怎么样? JM沟通APP功能强大且安全性高 IM云系统即时通讯公有云、私有云、企业云、海外云-哇谷IM团队 对于IM即时通讯的性能与并发性问题xmpp等各种通信协议 sso登录统一账号体系和集中认证授权 MongoDB数据库百万并发设计使用方法 WebRTC视频会议服务器性能10万并发 办公协同解决方案的意义 有什么优势? 美国FBI遭黑客攻击 超10万人收到垃圾邮件!这家零佣金券商也被攻击 用户数据泄露-企业即时通讯安全 工作台支持私有化部署-企业办公通信管理-软件开发管理系统-哇谷云 Application scenarios of wagu im cloud service A typical IM architecture might look like this 哇谷IM实现原理讲解-哇谷IM即时通讯云 JM沟通功能图片演示-哇谷IM即时通讯云 硬件配置选择-哇谷IM即时通讯云 IM私有化价格服务系统-哇谷IM即时通讯云 哇谷云服务项目表 哇谷IM定制私有化搭建资料准备工单-哇谷IM即时通讯云 APP中红包功能技术最常见的形式-哇谷im即时通讯云 私有云、公有云还是混合云?企业该如何选? 租用海外云服务器时应注意的事项 私有云比起公有云安全性大大提高 哇谷云服务应用场景十分丰富多元 聊天APP功能强大 用户群体越来越广泛 企业打造私有云平台需要注意的几点 企业聊天办公软件如何挑选,需要具备哪些功能? IM的作用可不只是单纯的聊天工具 企业使用即时通讯的好处有哪些? 企业通讯常见的困扰:有什么办法提高通讯质量? 聊天APP应该具备哪些功能?怎么确保信息不被泄露? 语音会议软件越来越多:到底哪个软件适合开会? 使用手机能否召开视频会议?哪些软件值得选择? JM沟通与传统通讯软件有何区别?是否只能用于社交? 语音会议效果难以保障 你有准备专业会议软件吗 专业企业通讯软件功能齐全 让办公变得更加轻松快捷 业应不应该开发聊天APP 三个不容拒绝的理由 企业通讯软件如何选择 隐私保护终于一切 视频会议没有专用软件 很多事情都无法处理 哪些是常用的微服务框架? 企业如何搭建私有云? 即时通讯软件是否具有聊天回执的功能? 企业即时通讯软件支持多设备登陆吗? 企业即时通讯适合中小企业的即时通讯软件? 盘点全球几大即时通讯软件 介绍两款国外大佬级别的即时通讯APP Short video features 即时通讯短视频功能的基本特点主要有哪些 Features of chat function 聊天功能在即时通讯软件中的产品特色体现在哪里 Increase the function of red envelope 为什么在即时通讯软件中会增加红包功能 instant messaging 即时通讯 办私密软件公 Office privacy software Cloud service 云服务 Im definition IM定义 How to meet office requirements Main features of instant messaging 即时通讯云软件应该如何达到集团办公的需求 企业即时通讯软件设计的特点主要有哪些 Instant messaging cloud red packet 福利发送新办法,IM即时通讯云红包功能的大势所趋 LAN communication 区域网通讯可以促进企业发展,使信息传输更快捷 Production guide of enterprise specific app 企业专属聊天APP的生产指南,这里应有尽有! Waguyun privacy protection 企业通讯无法得到私密保障?哇谷云上办公为您提供专业服务! Choose Wawa Guyun for internal communication 企业内部交流怎么办?现在有了哇谷云! Advantages of LAN 局域网通讯企业真的需要吗?它有哪些优点? Enterprise instant messaging voice conference app 新发展、新机遇 全球疫情下的企业即时通讯语音会议 Provide efficient enterprise communication 专业呼叫中心 提供高效企业通信解决方案 New layout of global economic integration 协同办公解决方案,全球一体化经济新布局 There is more than one way for IM tools 还在使用微信?IM工具不止有一条途径 Power source for efficient operation 选择办公协同解决方案,现代企业高效运转的动力源 Efficient enterprise specific instant messaging 企业聊天APP,私密度高的高效企业专属即时通讯APP 新一代私有云与早期私有云的区别 The difference between private clouds What are the advantages of private cloud 新一代私有云有哪些优势? 单聊功能 群聊功能红包功能源码 实时音视频 短视频 音视频会议源码 低延迟直播 哇谷IM云服务 IM私有化搭建源码 私有化搭建准备文件 TF签名知识 企业即时通讯 IM 即时通讯 IM定制功能 语音聊天室 在线教育 金融服务 sso单点登录系统 政府加密沟通 企业通信办公 KTV点唱系统 局域网通讯 知识库 企业即时通讯 sso单点登录系统 KTV点唱系统版本Demo JM沟通2.0版本Demo 哇谷IM企业办公版本 哇谷工作台 短视频源码 音视频会议源码 直播聊天源码 ios超级签名服务 哇谷云 哇谷科技 即时通讯



