Matrix 生态 #

Matrix 被政府、军队、开源社区和财富 500 强企业使用。它不是一个"勉强能用的业余项目",而是一张承载真实流量、覆盖数千台主机服务器的运行中网络。本页快速巡视一下谁在跑 Matrix、他们用的是什么服务器软件、以及协议是怎么演进的。

Matrix.org 基金会 #

Matrix 由 Matrix.org 基金会(一家英国非营利组织)统筹,基金会拥有协议规范并运行 matrix.org(社区旗舰主机服务器)。基金会不控制网络——它的职责是保证协议规范开放,并发布官方参考实现。任何人都可以在协议之上构建,无需事先征得同意。

基金会由捐款和企业会员(Element、Automattic、Famedly、Gematik 等)资助。协议提案走公开的 MSC 流程——任何人都可以写一份,由 Spec Core Team 决定是否合入。协议是带版本号的;主机服务器和客户端会公布自己支持的版本,与旧对端通讯时自动降级。

主机服务器实现 #

目前有多个彼此独立、但在联邦层完全兼容的服务器实现:

Synapse #

最早的 Python 参考实现,部署最广。支撑着 matrix.org 本身、KDE、Mozilla、Wikimedia 以及许多企业部署。成熟、久经考验、功能完整。

  • 语言: Python(Twisted 异步运行时)
  • 存储: PostgreSQL
  • 优点: 覆盖协议的每一个特性、社区巨大、新 MSC 最先落地
  • 缺点: 大规模部署时内存占用高;Python GIL 让 CPU 扩展变得麻烦

Dendrite #

Matrix 核心团队的第二代 Go 实现。模块化架构(组件服务可以合起来跑也可以分开跑)、更好的扩展性、更低的内存底线。已有多处生产部署。

  • 语言: Go
  • 存储: PostgreSQL 或 SQLite
  • 优点: 水平扩展、更低的内存下限
  • 缺点: 部分新协议特性落地比 Synapse 晚;Appservice 生态的成熟度还在追赶

Conduit / Conduwuit #

轻量 Rust 实现,设计目标是在树莓派或廉价 VPS 上跑起来。单二进制部署、RocksDB 存储、资源占用极低。Conduwuit 是活跃维护的社区分支,发版节奏更快。

  • 语言: Rust
  • 存储: RocksDB(内嵌)
  • 优点: 单二进制、面向爱好者、速度快
  • 缺点: 功能面比 Synapse 小

Palpo #

Meldry 底层运行的 Rust 主机服务器。现代异步架构、与我们的多租户编排系统紧密集成、按租户隔离数据库。设计目标是在共享基础设施上 廉价地运行多台小主机服务器——与 Synapse 的"一台大服务器"模型恰好相反。

  • 语言: Rust
  • 存储: PostgreSQL,按租户隔离 Schema
  • 优点: 每租户开销极低、冷启动快、生来支持多租户
  • 缺点: 比 Synapse 年轻;协议功能对齐还在推进中

四者都讲同一套 client-server 和 server-server 协议,所以 Matrix 客户端不关心你用的是哪一个。

桥接与 Appservice #

Matrix 被当作"统一收件箱"使用的一个很现实的原因是:几乎所有主流聊天网络都有对应的桥接——Telegram、Slack、Discord、WhatsApp、Signal、IRC、XMPP、Google Chat、微软 Teams(社区版)、微信、LINE、iMessage(社区版)、Android SMS 网关、邮件(SMTP 桥接)等等。其中大多数由 mautrix 项目维护——一组共享框架的 Go 语言桥接。

Meldry 出厂的那些见 桥接;想自己写的见 Appservice

知名部署 #

  • Tchap——法国政府的内部即时通讯平台。一个覆盖全政府的 Matrix 部署,用来取代公务员之间的 WhatsApp 和 Telegram。基于 Synapse 加定制身份提供方构建,数十万用户。
  • BwMessenger——德国联邦国防军(Bundeswehr)的即时通讯平台,基于 Matrix,全加密,经过独立安全审计。
  • Gematik TI-Messenger——德国的医疗互联互通平台。每一家想交换患者数据的医院和诊所都使用 Matrix 客户端对接经过认证的主机服务器。以合规为先的 Matrix。
  • KDE——KDE 社区聊天跑在自托管的 Matrix 主机服务器上,并通过 IRC 桥接连到历史上的 #kde 频道。
  • Mozilla——Mozilla 社区聊天(chat.mozilla.org)跑在 Matrix 上,取代 IRC 成为社区的规范场所。
  • Wikimedia——在部分社区频道使用 Matrix,并桥接到历史上的 IRC 网络。
  • GNOME——类似的 Matrix + IRC 桥接部署。
  • Element 企业客户——许多政府、国防承包商和财富 500 强公司运行私有 Matrix 部署用于内部通讯。大多数不公开;少数在 element.io 上有案例。

协议版本 #

Matrix 协议是带版本号的。房间会声明自己的 room version(到本文写作时是 111),控制状态解析算法、事件格式和鉴权规则。现代主机服务器上创建的新房间默认是 11,老房间可以由管理员"升级"以跟上新版本——升级会创建一个新房间并把旧房间作为前驱链接起来。

主机服务器会在 GET /_matrix/client/versions 上公布它支持的协议版本。客户端在连接时跟这个列表握手,对老服务器优雅降级。偶尔你会在新服务器上加入非常老的房间(或反之)时看到"不支持的 room version"错误——解决办法通常是升级房间。

当前协议规范在 spec.matrix.org,按发布日期编号(例如 v1.11v1.12)。主机服务器按自己已实现的版本接入;协议变化有意保持保守——破坏性修改很少。

下一步 #