Matrix

Matrix

Matrix 是一套用于实时通信的开放协议与开放标准,采用联邦式架构:用户各自连接到独立的服务器,消息经由服务器之间的接口在全局网络中同步,试图让即时通信像电子邮件一样可以跨服务商互通[1]。它由 Matthew Hodgson 与 Amandine Le Pape 于 2014 年在 Amdocs 内部发起,随后交由英国的 Matrix.org 基金会维护,规范与参考实现均以开源方式发布[2][3]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

Matrix 是一种面向实时通信的应用层开放标准,定义了客户端与服务器、服务器与服务器之间的接口,用于在多个独立运营的服务器之间分发并持久化消息[4]。它不依赖某个既有协议的扩展,而是自行设计了一套消息与状态的数据模型,并以 HTTP 加 JSON 作为最基本的传输方式[1]。

在 Matrix 的术语里,用户通过客户端连接到自己选定的服务器,该服务器称为 homeserver,保存账号信息与聊天记录;不同 homeserver 之间按服务器间接口互相推送事件,形成一张没有单一控制点的网络[5]。用户标识形如 @用户名:服务器名,房间则可以借助可读别名被公开和发现[4]。

项目名中的「matrix」指向「矩阵」的意象,其设计目标是把碎片化的通信孤岛重新连接起来,因此跨网络桥接从一开始就是核心关注点之一[6]。

原理

Matrix 把房间内发生的一切抽象为事件。事件分为两类:描述消息、通话建立、文件传输等一次性活动的时间线事件,以及描述房间名称、主题、成员、参与服务器等持久信息的状态事件;状态被建模为每个房间一张键值表,键由事件类型与状态键共同构成[4]。这一模型使聊天、编辑、回应、投票等特性都可以归结为「内容格式」问题,而不是各自独立的协议机制[7]。

事件在房间内按有向无环图组织。某一时刻的房间状态,由该事件及其之前所有事件共同计算得出;当多个事件描述同一状态时,通过状态解析算法进行合并冲突处理。该算法具有传递性且不依赖服务器自身的状态,从而保证不同服务器、不同接收顺序下选出的结果一致[4]。事件由发起服务器签名,签名涵盖父关系、类型、深度与负载哈希,随后经联邦推送给房间内各参与服务器;当前推送给所有参与者的拓扑为全互联结构,服务器也可以向其他参与者回溯请求历史事件[4]。

服务器在 /_matrix/key/v2/server 下公布自己的签名公钥,其他服务器可直接查询,也可通过中间公证服务器间接获取,并比对多家公证结果以降低对单一信任根的依赖[8]。端到端加密使用协议自有的 Olm 与 Megolm 算法,加密内容作为事件负载传输,因此服务器只承担存储与转发[7]。

在数据流向上,客户端经客户端—服务器接口读写房间,服务器之间经服务器—服务器接口交换事件,推送网关负责把新事件转成移动端通知,应用服务接口则供桥接与机器人等特权插件接入[9]。为保证互操作性,非规范定义的事件类型须采用 Java 包命名风格的自定义命名空间,规范自身的事件类型统一使用 m. 前缀[4]。

发展历程

Matrix 源于 Matthew Hodgson 与 Amandine Le Pape 在 Amdocs 构建统一通信产品时的工作。团队长期从事 VoIP 与消息系统,认为 SIP/RTP 与 XMPP 等既有标准不足以支撑可自由联邦的现代通信应用,于是在 2014 年 9 月公开发布了新的开放标准,并以 Apache 许可证发布 Python 编写的参考服务器与若干客户端代码[2]。同年 10 月,项目方说明团队约 10 人,多数成员日常供职于 Amdocs 或 OpenMarket[10]。

2014 年至 2017 年 10 月,Amdocs 是项目的主要资助方。2015 年 Amdocs 设立子公司 Vector Creations Limited 安置 Matrix 团队;2017 年资助终止后,核心团队在英国成立 New Vector,以咨询业务和服务器托管服务维持开发,并通过众筹与周更的社区简报维系社区[3]。2015 年 6 月,项目宣布与 IRC 网络 Freenode 完成互联,每个频道对应一个 Matrix 房间[3]。

2018 年 10 月,作为规范的中立托管方,The Matrix.org Foundation C.I.C. 依英国法律注册为社区利益公司,明确其非营利性质,并在 2019 年正式运作[11][12]。2019 年 6 月,规范各 API 完成稳定版发布、参考服务器 Synapse 进入 1.0 版本,协议结束测试阶段[3]。

治理结构上,规范由基金会下属的规范核心团队维护,重大变更以 Matrix Spec Change 提案流程推进,需取得核心团队 75% 以上同意才能进入最终评论期;基金会的守护者构成法定董事会,对核心团队人事与指导原则变更拥有批准权[13]。2024 年 10 月,项目公布 Matrix 2.0,包含简化同步、基于 MatrixRTC 的原生端到端加密群组音视频,以及让加密更少打扰用户的改进[14]。

应用

最常见的用途是群组与一对一聊天。由于一切都在房间中进行、且房间并不驻留于单一服务器,同一房间可以被多个独立运营方共同承载[15]。除消息之外,Matrix 也被用作 WebRTC 的信令通道、物联网数据的发布订阅通道,以及各类通信服务的桥接底座[6]。

客户端方面,Element 是覆盖面最广的客户端,提供网页、桌面、Android 与 iOS 版本;生态中还存在着大量由社区贡献的客户端与到其他消息网络的桥接器[1]。服务器端,Python 编写的 Synapse 部署最广,Dendrite 与 Conduit 是分别以 Go 和 Rust 写成的其他实现,实现多样性被视作网络韧性的来源[1][16]。

自托管能力使 Matrix 常被用于对数据存放位置有要求的场景。法国政府基于 Element 与 Matrix 开发的 Tchap 于 2019 年 4 月以开源形式发布;德国联邦国防军运行了内部 Matrix 实例,联合国将其用于内部隔离环境的通信工具,国际刑事法院所采用的 OpenDesk 平台也以 Element 承担聊天功能[3][16][17]。此外,Thunderbird 自 102 版本起内置了对 Matrix 的原生支持[17]。

局限

联邦架构意味着加入房间即分发数据。任何有成员在房间内的 homeserver 都会保存该房间的一份副本,因此引入一名来自不受信任服务器的成员,就等于向该服务器交出此后房间内容的一份拷贝;加密可以把暴露范围收窄到元数据,但许多大型公共房间为保证审核工具可用而有意不启用加密[18]。

加密的覆盖范围同样有限。端到端加密保护的是消息内容,房间成员关系、时间戳、设备列表等信息并不在保护范围内,参与服务器的管理员可以看到这些元数据;房间状态本身的加密仍在推进中,相关提案也承认加密状态会带来房间名称与主题在加入前不可见、无法列入房间目录等副作用[18][19]。

运维成本与协议复杂度是另一类限制。全互联的联邦拓扑使繁忙房间的服务器需要同时连接数百个对端,容易耗尽文件句柄,这一路由方式长期未获改进;参考实现 Synapse 为提速而大量缓存房间数据,内存占用偏高[20]。围绕状态解析与存储效率的批评也持续存在,社区讨论中既有认为 Project Hydra 已修复最严重问题的说法,也有对存储膨胀与状态重置风险的保留意见[21]。

在可用性方面,账户与用户标识绑定于具体 homeserver 且无法改名,用户难以在服务商之间迁移,这被视为与房间层去中心化程度不匹配的一环[6]。同时,matrix.org 这一公共服务器承载了网络中相当大比例的用户,一旦其故障会影响大量会话,理论上分散的网络的实际上仍存在集中点[16]。

参见

  • XMPP —— 同为开放即时通信协议,常被拿来与 Matrix 比较架构与资源开销。

  • Element —— 基于 Matrix 协议的最主要客户端,并提供服务器软件与商业服务。

  • Synapse —— 由核心团队维护的 Python 参考 homeserver 实现。

  • WebRTC —— Matrix 用以承载语音与视频通话的媒体与信令相关技术。

  • 端到端加密 —— Matrix 通过 Olm 与 Megolm 算法实现的消息内容保护机制。

  • 去中心化 —— Matrix 联邦架构所属的总体设计思路。

参考资料

  1. Matrix.org [引用日期2026-10-29]
  2. Hello world [引用日期2026-10-29]
  3. Matrix (协议) [引用日期2026-10-29]
  4. Matrix Specification [引用日期2026-10-29]
  5. pypi.org 上的网页 [引用日期2026-10-29]
  6. Use Matrix for: [引用日期2026-10-29]
  7. draft-ralston-mimi-matrix-framework-00 [引用日期2026-10-29]
  8. Server-Server API [引用日期2026-10-29]
  9. Matrix Specification Overview | Matrix Docs [引用日期2026-10-29]
  10. Who is Matrix.org? [引用日期2026-10-29]
  11. Matrix [引用日期2026-10-29]
  12. THE COMPANIES ACT 2006 COMPANY LIMITED BY GUARANTEE [引用日期2026-10-29]
  13. Proposal for Open Governance of Matrix.org [引用日期2026-10-29]
  14. Matrix 2.0 Is Here! [引用日期2026-10-29]
  15. matrix-synapse [引用日期2026-10-29]
  16. Is matrix decentralized? [引用日期2026-10-29]
  17. Matrix悄然成为追求数字主权政府的通信基础层 [引用日期2026-10-29]
  18. Matrix [引用日期2026-10-29]
  19. github.com 上的网页 [引用日期2026-10-29]
  20. matrix-synapse [引用日期2026-10-29]
词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:54:31Z

历史版本

本条目引用的词条
XMPP Element Synapse WebRTC 端到端加密 去中心化