1. 客户端-服务器工作流程
客户端:在我们的架构中,客户端可以分为三种类型:iOS 和 Android 移动应用程序以及 Web 聊天。移动应用程序首先通过 API 网关服务与服务器进行通信,其中客户端会生成一个访问令牌,该令牌将授权每个通信和服务。
网络聊天也以相同的方式进行通信,并且与 Web 管理应用程序一起托管。由于Web客户端的请求会产生流量,因此这里使用负载均衡器。
缓存服务器: Redis 的身份服务是用于缓存访问令牌并减少数据库操作的服务器。
监控服务:我们还使用 Grafana 的监控仪表板来详细查看整个过程中发生的所有操作。现在,让我们看一下服务器的组件及其在架构中的角色。
由于微服务更容易开发、部署和调试,因此核心微服务用于扩展聊天应用程序。
使用的核心微服务:
- 网关服务。
- 联系服务。
- 用户服务。
- 媒体服务。
- XMPP 服务。
- 通知服务。
- Rabbit MQ 服务。
2. 网关/认证服务
网关,顾名思义,用于进入应用程序。服务包含以下API:
- 登录— 用于验证用户身份。
- 注销— 用于从应用程序中注销用户。
- 注册— 用于在应用程序中注册用户。
您对该架构设置有何期望?
- 每天 1400 万条消息。
- 每秒最多 200 条消息。
只需花费在这样的架构上就足够了,这将为您带来企业级架构。
现在介绍一下呼叫服务系统的架构。
我们来详细列出每个组件的整体解释。
- WebAPI:第三方开发人员用于开发基于 Web 的视频聊天类应用程序的 API。
-
传输/会话:会话组件是通过重用 libjingle 中的组件来构建的,无需使用或要求 XMPP/jingle 协议。
-
RTP 堆栈: RTP(实时协议)的网络堆栈。
-
STUN/ICE:允许调用使用 STUN 和 ICE 机制跨各种类型的网络建立连接的组件。
-
会话管理:抽象的会话层,允许呼叫建立和管理层。这将协议实施的决定留给了应用程序开发人员。
-
VoiceEngine: VoiceEngine是音频媒体链的框架,从声卡到网络。
iSAC/iLBC/Opus
-
iSAC:用于 VoIP 和流音频的宽带和超宽带音频编解码器。iSAC 使用 16 kHz 或 32 kHz 采样频率,具有 12 至 52 kbps 的自适应可变比特率。
-
iLBC:用于 VoIP 和流音频的窄带语音编解码器。使用 8 kHz 采样频率,20ms 帧的比特率为 15.2 kbps,30ms 帧的比特率为 13.33 kbps。由 IETF RFC 3951 和 3952 定义。
-
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 解决方案的本质。企业聊天架构的核心优势是投资快速、可扩展且可靠。