1. 客户端-服务器工作流程

客户端:在我们的架构中,客户端可以分为三种类型:iOS 和 Android 移动应用程序以及 Web 聊天。移动应用程序首先通过 API 网关服务与服务器进行通信,其中客户端会生成一个访问令牌,该令牌将授权每个通信和服务。

网络聊天也以相同的方式进行通信,并且与 Web 管理应用程序一起托管。由于Web客户端的请求会产生流量,因此这里使用负载均衡器。

缓存服务器: Redis 的身份服务是用于缓存访问令牌并减少数据库操作的服务器。

监控服务:我们还使用 Grafana 的监控仪表板来详细查看整个过程中发生的所有操作。现在,让我们看一下服务器的组件及其在架构中的角色。

由于微服务更容易开发、部署和调试,因此核心微服务用于扩展聊天应用程序。

使用的核心微服务:

  • 网关服务。
  • 联系服务。
  • 用户服务。
  • 媒体服务。
  • XMPP 服务。
  • 通知服务。
  • Rabbit MQ 服务。

2. 网关/认证服务

网关,顾名思义,用于进入应用程序。服务包含以下API:

  1. 登录— 用于验证用户身份。
  2. 注销— 用于从应用程序中注销用户。
  3. 注册— 用于在应用程序中注册用户。

您对该架构设置有何期望?

  • 每天 1400 万条消息。
  • 每秒最多 200 条消息。

只需花费在这样的架构上就足够了,这将为您带来企业级架构。

现在介绍一下呼叫服务系统的架构。

我们来详细列出每个组件的整体解释。

  1. WebAPI:第三方开发人员用于开发基于 Web 的视频聊天类应用程序的 API。
  2. 传输/会话:会话组件是通过重用 libjingle 中的组件来构建的,无需使用或要求 XMPP/jingle 协议。

  3. RTP 堆栈: RTP(实时协议)的网络堆栈。

  4. STUN/ICE:允许调用使用 STUN 和 ICE 机制跨各种类型的网络建立连接的组件。

  5. 会话管理:抽象的会话层,允许呼叫建立和管理层。这将协议实施的决定留给了应用程序开发人员。

  6. VoiceEngine: VoiceEngine是音频媒体链的框架,从声卡到网络。

iSAC/iLBC/Opus

  1. iSAC:用于 VoIP 和流音频的宽带和超宽带音频编解码器。iSAC 使用 16 kHz 或 32 kHz 采样频率,具有 12 至 52 kbps 的自适应可变比特率。

  2. iLBC:用于 VoIP 和流音频的窄带语音编解码器。使用 8 kHz 采样频率,20ms 帧的比特率为 15.2 kbps,30ms 帧的比特率为 13.33 kbps。由 IETF RFC 3951 和 3952 定义。

  3. Opus:支持从 6 kbit/s 到 510 kbit/s 的恒定和可变比特率编码,帧大小从 2.5 ms 到 60 ms,以及从 8 kHz(4 kHz 带宽)到 48 kHz(20 kHz 带宽)的各种采样率,可以再现人类听觉系统的整个听觉范围)。由 IETF RFC 6176 定义。NetEQ for Voice。

动态抖动缓冲区和错误隐藏算法,用于隐藏网络抖动和数据包丢失的负面影响。保持尽可能低的延迟,同时保持最高的语音质量。

声学回声消除器 (AEC)

声学回声消除器是一种基于软件的信号处理组件,可实时消除进入有源麦克风的语音所产生的声学回声。

降噪 (NR)

降噪组件是基于软件的信号处理组件,可消除通常与 VoIP 相关的某些类型的背景噪声。(嘶嘶声、风扇噪音等……)

视频引擎

VideoEngine是视频的框架视频媒体链,从摄像头到网络,从网络到屏幕。

VP8

来自 WebM 项目的视频编解码器。非常适合 RTC,因为它专为低延迟而设计。

视频抖动缓冲器

视频的动态抖动缓冲器。它有助于隐藏抖动和数据包丢失对整体视频质量的影响。

图像增强

例如,它可以消除网络摄像头捕获的图像中的视频噪声。

把它们放在一起

我们在这里展示的是 Kubernetes、微服务系统的强大功能以及可以轻松扩展超过 1,000,000 个并发连接的企业聊天 API 解决方案的本质。企业聊天架构的核心优势是投资快速、可扩展且可靠。

10-12 04:39