时信魔方是什么? 时信魔方是面向开发者的实时协作开发框架。帮助开发者快速、高效的在项目中集成实时协作能力。从广义上讲,即时消息、音视频通话、实时白板、文档互传、在线会议都属于实时协作的功能范畴。这些功能帮助人们迅速地传递消息,同步资料并跟踪信息流,从而达到高效协作的目的。 时信魔方是开源项目 ,基于 MIT/Expat License 条款发布,在 Gitee 和 GitHub 上托管源代码。 支持的操作系统有:Windows、Linux 、macOS 、Android、iOS 等,支持的浏览器有:Chrome、Firefox、Safari 等。 ## 即时消息 即时消息(Instant Messaging / IM),消息全域投送,通过插件化进行消息类型的扩展。消息中心可以串接所有业务模块。支持客户端消息推送通知。 - 文本消息 - 图片消息 - 文件消息 - 卡片消息 - 日程消息 - 通知消息 - 短语音 - 短视频 - 位置消息 - 消息回执 - 消息撤回 - 自定义表情 - 自定义消息 ## 实时音视频 实时多人语音/多人视频(Multipoint RTC)支持自适应码率、超低延迟等,支持实时图像识别等。 - 基于点对点的视频通话 - 基于点对点的语音通话 - 多方视频融屏会议 - 多方视频单路多画会议 - 多方音频混码会议 - 音视频协作权限控制 - 音视频协作媒体控制 - 实时媒体转直播 - 服务端音视频记录 - 音视频回放 ## MCU & SFU 会议 超大规模(100+)视频会议 (Video Conference)支持会议控制、演讲模式,自定义 MCU 和 SFU 布局等。 - 会议预约 - 会议邀请 - 会议人员管理 - 会议人员媒体管理 - 静默参会 - 第三方访客参会 - 会议文档管理 - 会议记录管理 - 支持拓展会议管理方式 - 支持多点会控 - 会议资料云端存储 - 会议回放 ## 社交关系管理 群组管理(Group management)与组织架构管理(Organization structure)支持集成式管理和扩展组织架构等。 - 支持独立联系人表 - 支持联系人分组与标签 - 支持人数1000+超大群组 - 使用创建人+管理员模式的分级权限管理 - 独立群空间管理 - 群成员管理 - 群语音 - 群视频 - 群名片 - 群公告 - 群组历史记录管理 - 多人群任务 - 多人分组话题 - 群/组织安全控制策略 ## 文件传输与存储 文件存储(File Storage)与传输支持超大文件管理,小文件管理支持分区存储。 - 文件上传与下载 - 文件存储加密 - 消息文件零流量转储 - 分布式归档 - 动态空间分配 - 云端文件预览 ## 互动白板与共享桌面 实时白板(Realtime Whiteboard)支持集成媒体回放、远程桌面和文档分享等。共享桌面(Remote Desktop Sharing)支持无缝集成白板等。 - 常用涂鸦工具 - 在线文档实时分享 - 操作记录动画记录 - 录制带语音的动画回放 - 矢量绘图 - 白板消息 - 远程桌面 ## 视频直播 视频直播(Live video)支持第三方推流和 CDN ,无缝支持会议直播和回放等。 - 直播间管理 - 多源合并 - 对接会议模块实现会议直播 ## 在线文档 在线文档协作(Online Document Collaboration)支持 Word、PowerPoint、Excel 等主流格式文多人在写协作。 ## 运维与风控 安全与运维管理(Operation and Maintenance management)。所有数据通道支持加密,可支持国密算法等。风控管理(Risk Management)。对系统内所有文本、图片、视频、文件等内容进行包括 NLP、OCR、IR 等技术手段的风险控制和预警等。 - 采用统一控制台管理所有服务器 - 所有信息流都加密。 - 所有数据内容无缝对接风控中心。 # 为什么需要时信魔方? 时信魔方的目标是协作能力“超级集线器” 。 当下,用户对即时通讯产品无论功能还是易用性都提出了越来越多的挑战,单一功能维度已经不足以满足用户多样化、个性化的需求,功能之间的衔接与互动变得越来越重要和迫切。 实时协作产品不是简单的多个协作功能的堆砌,而应该是按照用户预期的操作体验进行功能之间的衔接与互动,时信魔方将这个设定为自己的目标,实现对实时协作体验的持续改进,因此,时信魔方里各能力模块被按照一定的规则组织起来,从而形成有效的、高效的协作软件系统。 其次,一些看似技术简单的功能实则需要复杂的业务管理,例如,即时消息从技术上讲就是简单的消息发送和接收,但是每个消息的状态管理、内容形式触发的业务逻辑则各不相同。因此,时信魔方帮助开发者快速建立基础的实时协作能力,让开发者集中精力解决用户的复杂业务需求,而不需要关注更多细节,提升用户满意度。 而对于那些技术复杂度更高的功能,例如实时视频画面的物体识别等,更需要专业的技术组件进行支持,甚至是“合纵连横”的方式来协同完成,时信魔方就是这样的“ 超级集线器 ”。 # 时信魔方的设计要点 ## 独立的内核模块与开放的脚手架 时信魔方按照经典的“面向接口的开发”原则设计脚手架。各个功能模块各自独立且遵循单向依赖原则,各个功能模块依赖的技术组件,例如:缓存器、消息队列、存储器等,都按照提供接口调用,便于开发者按照自身的开发需求选择和适配不同的技术组件来适应不同的运行环境和性能要求。 时信魔方的基础功能集均为独立开发,不依赖第三方业务组件,一方面提高模块之间的集成度和耦合度可以对性能进行架构级的优化,并且因为功能集适用范围广进行二次开发时不会带来引入第三方框架的适配和调试风险,另一方面,耦合度较高导致扩展的便利性降低,有时我们需要符合自身需求的第三方模块进行替换。因此时信魔方遵照上述结构,提供从底层的数据库存储,信息数据缓存到上层的业务功能的接口拓展,方便进行二次开发和维护,开发者根据需要选择自己熟悉的数据库系统进行存储,或者选择第三方网盘替换魔方的文件存储模块,依然能保证文件高效地在即时消息、会议等模块中传输。 ## 基于 SHM 的私有通信协议 时信魔方没有采用通用的通信协议方案,而是针对性的开发了 Simple Hybrid Messaging 简单混合消息传输协议,简称: SHM 。 Cell 通信结构 Cell 通信结构 在时信魔方里实现该协议的工程是 Cell ,Cell 支持 direct TCP 和 WebSocket 两种连接方式。 SHM 链路支持快速加密和数据压缩,同时 SHM 链路上允许同一连接同时投送报文数据和流数据,从而减少客户端设备对于链路的管理(不需要像 HTTP/HTTPS 协议那样需要连接池同时管理数个 TCP 连接)。 ## 多平台适用 多平台适用性是时信魔方开发的重要目标。时信魔方提供所有主流平台适用的接入方案,采用客户端 SDK 的接入方式接入客户端服务能力,服务器端适用于虚拟化部署或混合部署。 时信魔方框架结构 时信魔方框架结构 时信魔方针对大规模并发的实时业务请求进行了访问层级划分,分为接入层和业务层,接入层负责对接接入服务的客户端,业务层作为具体功能的执行层执行业务逻辑操作。 对于服务节点之间的通信可按照不同的工作强度选择集群、分区或主从,这主要是考虑不同功能需要不同的技术特征来支持,例如,即时消息业务在10+W访问量级适用使用全局集群,实时音视频流适合使用主从结构为媒体单元分配可用的带宽和资源。 ## 分域管理 时信魔方严格按照“域”进行数据管理,也就是时信魔方是多租户系统。每个域都拥有自己独立的资源,包括自己的库表系统,自己的存储空间等。 “域”是每个数据实体的基础属性,每个数据实体都在自己所属的域里进行工作。 # 时信魔方的主要技术特征 - 使用私有数据协议 SHM 协议 - NBTA (Non-blocking Transactional Atomicity)算法的集群适配器 - 基于 UDP 的集群数据传输 - 客户端支持原生代码插件 - 服务器端支持基于 Lua 脚本的热部署插件 - 使用 JSON 作为内部数据交换格式 - 无服务端缓存系统 - 基于路由表定义的事件通知 - 兼容 SIP 协议(RFC3261) - RTP/RTCP 实时音视频传输 - RTMP/RTSP 音视频流 - 支持 WebRTC 技术 - 支持 iSAC,iLBC,G711 等音频编解码 - 支持 H.264,VP8,VP9 等视频编解码 - 屏幕纵横比自适应 - 自适应码率控制 - 视频文件数据格式支持:MP4(H.264、MPEG4)、WebM、OGG 等 - 音频文件数据格式支持:OGG、WAV、AMR、MP3 等