m7s Console 架构解析

整体架构
背景
Console 相对 m7s 独立运行,方便部署在公网或者内网中,也方便管理多个 m7s 实例。并且实现多租户机制,方便多个用户管理自己的 m7s。
最初以纯线上方式运行,随着功能逐步成熟,现已可以通过 docker 实现私有化部署,具体方式在文末。
架构图
图示

说明
绿色虚线框代表 Console,可以部署在公网或者内网中。
橘色虚线框代表多个 m7s 实例,可以部署在公网或者内网中。
内网中的 m7s 可以访问公网的 Console,反之不行。
每个 m7s 实例和 Console 之间通过一个 quic 协议连接在一起,用于信令的通讯,不会包含任何流媒体数据,因此对 Console 的带宽没有影响。
Console 包含一个数据库,用来记录用户登录信息和 m7s 实例信息。
Console 的 Web 端会向 Console 的 Server 端发起请求,Server 端会转发这些请求到 m7s 实例中,从而实现对实例的控制。
Console 的 Web 端发起的多种不同类型的请求都会通过 quic 的 Stream 进行模拟透传。
quic 透传原理
图示

说明
quic 协议本质上是个虚拟连接,当请求进入 Console 的时候,会创建一个 quic stream 连接,该连接是一个长连接,所以可以模拟 websocket 请求等。普通 http 请求在请求完成后,随机销毁这个 quic stream。由于是虚拟连接,所以开销很小。具体可以参考 quic 协议的介绍文章。
调用时序

前端架构

版权声明: 本文为 InfoQ 作者【不卡科技】的原创文章。
原文链接:【http://xie.infoq.cn/article/2c36a88ae58eb30a5085a07ac】。文章转载请联系作者。
评论