企业聊天应用程序使用 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.mzph.cn/news/101551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华测监测预警系统 2.2 存在任意文件读取漏洞

华测监测预警系统 2.2 存在任意文件读取漏洞 一、 华测监测预警系统 2.2 简介二、漏洞描述三、影响版本四、fofa查询语句五、漏洞复现1、手动复现2、自动复现 六、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信…

芯科蓝牙BG27开发笔记10-BG27样板调试

样板使用了1.5V电源,boost升压到1.8V供MCU使用,因此IO通信的电平需要注意: 不能使用常用的5V、3.3V的jlink进行调试,类似的uart通信也一样。 BRD4001A底板的jlink如何使用? 参考开发板套件的说明文档《ug551-brd4194…

小迈物联网网关对接串口服务器[Modbus RTU]

很多工控现场,方案中会使用串口服务器采集Modbus RTU的设备,这种情况下一般会在PC机上装上串口服务器厂家的软件来进行数据采集。如果现场不需要PC机,而是通过网关将数据传输到软件平台,如何实现呢? 本文简要介绍小迈网…

Dockerfile指令详解

如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件,其内包…

【TB作品】基于MSP430G2553单片机的超声波测距与报警系统,原理图,PCB

功能: 1 超声波测距显示 2 按键设置报警上下限 3 蜂鸣器报警 原理图: PCB样式: 实物: 代码: https://github.com/xddun/blog_code_search

DC/DC开关电源学习笔记(十二)Boost升压电路仿真及工程应用案例

(十二)Boost升压电路仿真及工程应用案例 1.Boost电路仿真案例2.Boost电路工程应用实例1.Boost电路仿真案例 指标参数:输入电压5V,输出电压12V,输出电流1A,开关频率10kHz,电压纹波0.5%。 根据输入指标参数确定CCM模式下各个关键元器件测参数: 负载电阻Rl=12R 占空比D=6…

Zabbix“专家坐诊”第206期问答汇总

问题一 Q:老师,我想配置一下监控项和触发器,目前我想要三个,内存的使用情况百分比、磁盘的剩余多少G、CPU的使用情况百分比,用自带的模板修改,该怎么做? A:可以用100减去内置键值cp…

数据结构学习笔记——数据结构概论

目录 一、数据与数据元素二、数据类型和抽象数据类型三、数据结构的定义(一)逻辑结构(二)存储结构(物理结构)1、顺序存储结构2、链式存储结构3、索引存储结构4、散列存储结构 (三)数…

Allegro基本规则设置指导书之Spacing规则设置

进入规则设置界面 1.设置Line 到其他的之间规则: 2.设置Pins 到其他的之间规则: 3.设置Vias 到其他的之间规则:

利用easy excel 实现文件导出

一.创建实体类 package com.siact.product.jwp.module.report.dto;import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alib…

【C++初阶(一)】学习前言 命名空间与IO流

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

CCF CSP题解:坐标变换(其一)(202309-1)

链接 OJ链接&#xff1a;传送门 AC代码 #include <iostream>using namespace std;int n, m;int dx 0, dy 0;int main() {cin >> n >> m;for (int i 0; i < n; i) {int x, y;cin >> x >> y;dx x;dy y;}for (int i 0; i < m; i) {i…

Linux查看本机IP地址

Linux查看本机IP地址 命令 ipconfig可能会遇到的问题 Command ‘ifconfig’ not found, but can be installed with: Command ifconfig not found, but can be installed with:sudo apt install net-tools解决办法 安装net-tools再执行ipconfig 安装网络工具 sudo apt i…

spring-创建Webservice服务

Web service是一个平台独立的&#xff0c;松耦合的&#xff0c;自包含的、基于可编程的web的应用程序&#xff0c;可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序&#xff0c;用于开发分布式的互操作的应用程序。webservice用的是soap协议。 客户通过发送请求…

Qt开发学习笔记02

将窗口设为提示框 Qt::ToolTipQt 数据库连接池 #ifndef SQLITE_H #define SQLITE_H#include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery> #include <QQueue> #include <QMutex> #include <QDebug> #include "../con…

Redis之缓存一致性

Redis之缓存一致性 1 缓存更新策略1.1 内存淘汰1.2 过期删除1.3 主动更新1.4 三种缓存更新策略的对比 2 更新缓存的两种方式3 缓存更新策略的实现方式3.1 先更新DB&#xff0c;后更新缓存3.2 先更新DB&#xff0c;后删除缓存3.3 先更新缓存&#xff0c;后更新DB3.4 先删除缓存&…

二叉树的最近公共祖先

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…

如何通过三行配置解决在Kubernetes中的gRPC扩展问题

一切都始于我向我们的高级软件工程师提出的一个问题&#xff1a; “忘掉通信速度。你真的觉得在gRPC中开发通信比REST更好吗&#xff1f;” 我不想听到的答案立刻就来了&#xff1a;“绝对是的。” 在我提出这个问题之前&#xff0c;我一直在监控我们的服务在滚动更新和扩展Po…

Appium 生态系统(基于Appium2.0)

Appium 生态系统 Appium 拥有相关软件和工具的生态系统。在本指南中&#xff0c;我们将讨论重要的 官方支持和社区支持的项目。 Appium Inspector Appium 有一个图形客户端&#xff0c;可用于手动执行 Appium 命令、检查应用程序 层次结构、查看屏幕截图等。它对于 Appium 测…

【k8s】ingress-nginx通过header路由到不同后端

K8S中ingress-nginx通过header路由到不同后端 背景 公司使用ingress-nginx作为网关的项目&#xff0c;需要在相同域名、uri&#xff0c;根据header将请求转发到不同的后端中在稳定发布的情况下&#xff0c;ingress-nginx是没有语法直接支持根据header做转发的。但是这个可以利…