当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/189296.html

相关文章:

  • 记录用命令行将项目打包成war包
  • Linux基础知识笔记
  • Laya3.0 入门教程
  • 3D全景虚拟样板间展销系统扩展用户市场范围
  • 如何编写lua扩展库
  • Java List 中存不同的数据类型
  • pyqt5:openpyxl 读取 Excel文件,显示在 QTableWidget 中
  • 在RabbitMQ中使用新的MQTT 5.0功能
  • flinkcdc 体验
  • Kafka知识补充
  • 【MAC】升级 Mac os 后报错
  • LeetCode(力扣)416. 分割等和子集Python
  • Redis之缓存一致性
  • LeetCode-199-二叉树的右视图
  • 二叉树的最近公共祖先
  • C++ 补充 反向迭代器的实现
  • JVM第一讲:JVM相关知识体系详解+面试(P6熟练 P7精通)
  • 深度学习DAY3:FFNNLM前馈神经网络语言模型
  • JavaSE学习值之--String类
  • 【LeetCode高频SQL50题-基础版】打卡第6天:第31~35题
  • 基于单片机的汽车智能仪表的设计
  • 【Docker 内核详解】namespace 资源隔离(一):进行 namespace API 操作的 4 种方式
  • 【技术研究】环境可控型原子力显微镜超高真空度精密控制解决方案
  • 【Vuex+ElementUI】Vuex中取值存值以及异步加载的使用
  • python经典百题之简单加密数据
  • 登陆认证权限控制(1)——从session到token认证的变迁 session的问题分析 + CSRF攻击的认识
  • 单点接地、多点接地、混合接地
  • 【C++初阶(一)】学习前言 命名空间与IO流
  • flask vue跨域问题
  • stm32(二十)IAP升级优化(双缓存,可恢复)