企业聊天应用程序使用 Kubernetes

news/2024/6/3 17:05:08 标签: 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.niftyadmin.cn/n/5081679.html

相关文章

解密[datastore@cyberfear.com].mkp勒索病毒:数据恢复的秘诀

引言: [ datastorecyberfear.com ].mkp、 [ MyFilewaifu.club ].mkp、 [backupwaifu.club].mkp 勒索病毒代表了数字时代的一个威胁,它锁定了您的数据并勒索赎金。然而,在数字黑暗中,也存在解锁的关键。本文将带您深入探讨解锁 [ d…

Socks5代理与代理IP技术:网络工程师的全能武器

在数字时代,网络工程师的角色已经变得非常多样化,他们需要应对诸多技术挑战,包括跨界电商、爬虫、出海业务、网络安全和游戏等。为了胜任这些任务,网络工程师如今需要掌握并充分利用Socks5代理和代理IP技术,这两者已经…

leetCode 115.不同的子序列 动态规划 + 滚动数组(优化)

给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 10^9 7 取模 示例 1: 输入:s "rabbbit", t "rabbit" 输出:3 解释:如下所示, 有 3 种可以从 s 中得…

springboot线程池创建与使用

/*** author: zcs* Title: TaskPoolConfig* Description: 线程池配置* date: 2023/10/11 17:52*/ Component public class TaskPoolConfig {Bean(name "threadPoolTaskExecutor")public Executor taskExecutor() {ThreadPoolTaskExecutor taskExecutor new ThreadP…

UE5修改导航网格的参数

Unreal Engine 4 - Recast NavMesh Size, how to Change Agent Radius / Tutorial - YouTubehttps://www.youtube.com/watch?vf3hF6xdmCTk 修改当前的 代理半径就是一般贴边的长度 修改编辑器的

git和github的使用

文章目录 1. 安装git2. 注册github3. 配置Git4. 以上完成之后,可以在github上新建远程仓库5. 本地操作:6.关联分支的方法7.本地分支和远程分支关联后,直接git push即可 1. 安装git 2. 注册github 3. 配置Git 参考:https://www.…

每日一题 2512. 奖励最顶尖的 K 名学生(中等,模拟,排序)

思路: 对于每一个学生的评价,使用 split 方法提取评价中的每一个字符,然后逐个判断是否是正面或者负面词汇来计算分数对id按照要求进行排序。为了加快字符的正负判断速度,先将 positive 和 negative 两个列表转化为 set 这样就可…

1.5python 文件操作_python量化实用版教程(初级)

python 文件操作 Python 中的文件操作,包括如何打开、读取和写入文件内容。文件操作是 Python 中常用的功能之一,可以用于读取和处理文本文件、配置文件、日志文件等。 操作步骤 1. 打开文件 open(‘需要打开的文件名’,‘打开方式’) - 使用open(…