• 企业聊天应用程序使用 Kubernetes


    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 解决方案的本质。企业聊天架构的核心优势是投资快速、可扩展且可靠。

  • 相关阅读:
    【vue+nestjs】gitee第三方授权登录【超详细】
    使用原子子表创建可重用的子组件
    windows11家庭版安装docker desktop
    Goby 漏洞发布|泛微 E-office flow_xml.php 文件 SORT_ID 参数 SQL 注入漏洞
    ubuntu 22.0.4 mysql 8.0主从重启
    窗口函数实战指南:轻松掌握排名计算技巧,提升数据处理效率
    使用JMeter创建FTP测试计划
    flink-1.14.4启动报错setPreferCheckpointForRecovery(Z)v
    【杂七杂八】Windows和Linux怎么配置环境变量
    vscode launch.json
  • 原文地址:https://blog.csdn.net/wouderw/article/details/133781321