互联网时代下,“即时通讯”(简称IM)已经是系统平台最简单的社交功能,用户更个性化的需求及大量通讯用户的涌入催生出更复杂的IM技术架构体系,IM区域人工与智能的相结合,让人与人之间的距离。企业互联网下,只有将技术与业务结合在一起,才可以使“即时通讯”服务在企业中发挥的作用最大化。用友UAP平台中提供的IM功能已经将企业业务中所出现的常用信息处理场景进行了人工与智能方式的穷举,并提炼出适用于企业集成的技术解决方案。
主流IM设计按平台可以划分为桌面IM、移动IM和WEB IM。从协议和连接实现角度划分可分为基于长连接的IM和基于短连接的IM。这两种实现方式也衍生出很多适用于不同场景实现方案,例如:模拟长连接、特定协议连接等。桌面IM、移动IM实现方式相对固定,往往无法实现跨平台通讯。WEB IM跨平台能力强并具有发展前景,但性能相对一般。因此,无论是桌面IM,还是移动IM和WEB IM,都存在一定的短板需要解决。
桌面IM和移动IM:架构设计非常灵活,可以基于TCP 或 UDP之上编写自己定义的应用层协议,传输与部署效率高,开发者如需构建网络服务主要精力应放在线程控制、编解码、锁与资源、粘包丢包、压缩与加密、内存管理等问题上,同时业务上需要支持可插拔机制,下表为设计通讯服务首要考虑内容。
浏览器处理能力和终端性能的提升使WEB IM 作为IM独立的分支作用日趋重要,碎片化的WEB IM插件可以锲入到任意WEB平台中实现信息流通。目前主流WEB IM的设计包括四种模式:
RIA Socket、WEB Socket、Ajax轮询、Long Polling & Comet。服务端常见开源框架包括Comet4J、Pushlet、Dwr。
以上IM实现都受限于特定场景,除了桌面IM、移动IM和WEB IM,特定协议在开发中也起到关键要素。抛开TCP、UDP和应用层的HTTP协议,目前主流用于IM协议的还包括XMPP和MQTT 两种,基于这两种协议实现的项目均已证明足以稳定支撑大量用户接入并进行通讯,下面是对这两种协议流程实现的示意:
服务端 <--> XMPP协议 <--> 客户端
客户端 --> 服务端 --> RSMB队列服务器 --> 客户端
谈了如此多IM的实现方式,不难发现各有千秋。目前企业系统都在向互联网化转型,希望将所有和企业业务相关的信息都收集起来,以发现更多商机。那么社交化是不可获取的一个部分。
企业即时通讯不再是新技术,而我们今天要说的是,如何在互联网趋势下,使企业即时通讯与时俱进,和企业不断变化的业务相联系,和不断发展的新技术相结合,让它发挥出更大作用。用友UAP计算平台,在十几年时间中,一直以服务大型企业和组织为主,为他们构建企业信息化平台。帮10000多家企业解决了系统集成、数据挖掘、移动开发、云服务等问题。在企业互联网驱使下,用友UAP又不断研究企业社交,为企业挖掘社交中的大数据。
那么,企业级“即时通讯”应具备什么能力?如何满足企业通讯的诉求呢?用友UAP通过研究和实践认为:首先,作为IM本身,需要融合桌面IM、移动IM和WEB IM各自特点,技术实现上可以认为通讯服务支持不同终端接入,同时智能适配不同终端的通讯接口;其次,企业级IM要具备企业应用的业务特性,提供业务接口,满足企业业务流的快速接入;最后,企业IM要能满足智能和自身云化,智能包括自然语言处理、语音识别和图像分析,云化则要满足自身可以包裹成SAAS应用或BAAS服务。同时,用友UAP提醒,在具体操作上给出以下几点建议:
第一,在技术实现方案上,要具备一定的通用性,可以通过使用开源体系框架和技术进行快速实现,支持多端适配和自定义协议。这里可以从客户端和服务端两个技术角度去讨论,关注的侧重点也是不同。
第二,客户端方面,需具备通讯模块插件化,保障用户可以通过不同终端和浏览器与其他用户正常通讯,需要集成桌面IM、移动IM和WEB IM的端实现细节,而其中协议可以不同,这个需要服务端提供网关进行转义。
第三,在服务端,重点考虑接入网关的设计和处理高并发高TPS的场景。接入网关主要用于适配不同终端的连接方式,满足数据正常传输,同时数据即可是字节流也可是字符流,数据格式和协议可自定义。在处理高并发高TPS场景时,行业内已经给出了非常多的技术解决方案,通过框架可以轻易实现进程与线程模型、资源复用、异步处理等核心问题,某些编程语言的出现如:Erlang、GoLang、NodeJS也是开发高性能通讯服务的一个备选方案。
第四,集群通讯场景的构建是企业级IM服务在规模化发展过程中所不可以避免的。传统单服务器的IM需要进行较大的改造才可以适应集群环境下的高性能。比如,当用户A连接服务器A,用户B连接服务器B时,用户A给用户B发消息,服务器A需要知道用户B在哪一台服务器才可以进行通讯,当用户B在服务器A时可以进行进程线程间通讯,若不在则需要访问中心注册服务、调度服务或者自行探测。满足这样一个简单的场景,IM服务也是需要发生巨大的变化,同时从架构层面上还需增加中间数据管理节点。
用友UAP就以往的项目经验发现,企业级“即时通讯”是否接地气主要取决于业务集成的好坏。IM服务在客户端需要实现自定义数据扩展机制和数据事件机制,UAP建议,开发者可以基于“信息流”中的关键字将数据封装成功能,并为功能注册处理机制。关键字的提供主要由服务端提供,模型可以从文字、视频、音频和图片中挖掘抽取。举一个恰当的场景,用户之间进行聊天的过程中,用户A想让用户B处理一张自己的单据,这时候用户A的IM客户端会自动关联本地或远程单据资源使用户完成单据处理。通过数据扩展和数据事件机制,IM终端将成为了用户日常主要办公的平台。
企业互联网下,只有将技术与业务看似紧密又不紧密的放在一起,才可以使“即时通讯”服务在企业中发挥的作用最大化。用友UAP平台中提供的IM功能已经将企业业务中所出现的常用信息处理场景进行了人工与智能方式的穷举,并提炼出适用于企业集成的技术解决方案。