升讯威在线客服系统的并发高性能数据处理技术:具体化视图

news2025/1/21 9:36:50

我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。

最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。
客户组织多名客服上线后,所有员工同一时间打开访客页面疯狂不停的给在线客服发消息,系统稳定无异常无掉线,客服回复消息正常。消息实时到达无任何延迟。


我会通过一系列的文章详细分析升讯威在线客服系统的并发高性能技术是如何实现的,使用了哪些方案以及具体的做法。

本篇介绍数据存储方面的具体化视图技术。

为何使用具体化视图?

通过为常用聚合的具体化视图投资资源(数据存储、后台 CPU 周期),可以获得以下优势:

  • 性能提升: 对于相同的聚合函数,查询具体化视图通常比查询源表性能更好。

  • 时效性: 具体化视图查询始终返回最新结果,而不受上次进行具体化的时间的影响。 查询组合了视图的具体化部分和源表中尚未具体化的记录(delta 部分),始终提供最新结果。

  • 降低成本:与对源表执行聚合操作相比,查询具体化视图消耗群集中的资源较少。 如果只需要聚合,则可以减少源表的保留策略。 此设置可减少源表的热缓存开销。

具体化视图用例

下面是可以使用具体化视图解决的常见方案:

  • 通过使用 arg_max()(聚合函数)返回每个实体的最后一条记录来更新数据。

  • 通过对原始数据计算定期统计信息来减少数据的解析。 按时间段使用各种聚合函数。

  • 例如,使用 T | summarize dcount(User) by bin(Timestamp, 1d) 维护每天不同用户的最新快照。
    使用 take_any()(聚合函数)消除表中的重复记录。

.create materialized-view MV on table T
{
    table('T')
    | summarize take_any(*) by EventId
}

如何在具体化视图和更新策略之间进行选择?

具体化视图和更新策略的工作方式不同,适用于不同的用例。 根据以下准则来确定应使用哪一个:

  • 具体化视图适用于聚合,而更新策略则不适合。 更新策略针对每个引入批单独运行,因此只能在同一引入批中执行聚合。 如果需要聚合查询,请始终使用具体化视图。

  • 更新策略适用于数据转换、维度表的扩充(通常使用查找运算符),以及可在单个引入的范围内运行的其他数据操作。

  • 更新策略在引入期间运行。 数据在源表和目标表中均不适用于查询,直到所有更新策略都在其上运行。 另一方面,具体化视图不是引入管道的一部分。 具体化过程在引入后在后台定期运行。 源表中的记录在具体化之前可用于查询。

  • 更新策略和具体化视图都不适合联接。 两者都可以包括联接,但仅限于特定用例。 也就是说,只有在更新策略/具体化过程运行时,联接两侧的匹配数据才可用。 如果匹配的实体预期在同一时间引入到左联接表和右联接表,则有可能在更新策略/具体化运行时错过数据。 有关 dimension tables 的详细信息,请参阅具体化视图查询参数和事实表和维度表。

具体化视图查询

可以通过两种方法查询具体化视图:

  • 查询整个视图:按名称查询具体化视图(与查询表类似)时,具体化视图查询会将视图的具体化部分与源表中尚未具体化 (delta) 的记录组合在一起。
    ** 查询具体化视图时,会始终根据引入到源表的所有记录返回最新结果。 有关具体化视图中的具体化和非具体化部分的详细信息,请参阅具体化视图的工作原理 。
    ** 此选项可能不会以最佳方式执行,因为它需要在查询时具体化 delta 部分。 在这种情况下,性能取决于视图的生存期和在查询中应用的筛选器。 具体化视图查询优化器部分包括在查询整个视图时提高查询性能的可能方法。

  • 仅查询具体化部分:查询该视图的另一种方法是使用 materialized_view() 函数。 此选项支持仅查询该视图的具体化部分,同时指定用户愿意容忍的最大延迟。

cluster('cluster1').database('db').ViewName
cluster('cluster1').database('*').ViewName
database('*').ViewName
database('DB*').ViewName
database('*').materialized_view('ViewName')
database('DB*').materialized_view('ViewName')

具体化视图的限制和已知问题

  • 具体化视图的源表必须启用 IngestionTime 策略(默认启用)。
  • 具体化视图的源表不能是具有受限视图访问策略的表。
  • 具体化视图不能基于另一个具体化视图创建,除非第一个具体化视图是 take_any() 类型的聚合。 请参阅基 于具体化视图的具体化视图。
  • 无法通过外部表定义具体化视图。

后继数据库

  • 无法在后继数据库中创建具体化视图。 追随者数据库是只读的,而具体化视图需要执行写入操作。
  • 在领导者数据库上定义的具体化视图可以从其追随者进行查询,就像领导者中的任何其他表一样。

简介

升讯威在线客服与营销系统是一款客服软件,但更重要的是一款营销利器。

https://kf.shengxunwei.com/

  • 可以追踪正在访问网站或使用 APP 的所有访客,收集他们的浏览情况,使客服能够主动出击,施展话术,促进成单。
    访* 客端在 PC 支持所有新老浏览器。包括不支持 WebSocket 的 IE8 也能正常使用。
  • 移动端支持所有手机浏览器、APP、各大平台的公众号对接。
  • 支持访客信息互通,可传输访客标识、名称和其它任意信息到客服系统。
  • 具备一线专业技术水平,网络中断,拔掉网线,手机飞行模式,不丢消息。同类软件可以按视频方式对比测试。
    • 优酷视频:https://v.youku.com/v_show/id_XNTEwNzQ5Mzg2OA==.html
    • bilibili 视频:https://www.bilibili.com/video/BV1pK4y1N7UP?t=22

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943195.html

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

相关文章

MySQL之事务与引擎

目录 一、事物 1、事务的概念 2、事务的ACID特点 3、事务之间的相互影响 4、Mysql及事务隔离级别(四种) 5、演示 1、查询会话事务隔离级别 2、查询会话事务隔离级别 3、设置全局事务隔离级别 4、设置会话事务隔离级别 6、事务控制语句 7、演示 1、测试提交事务 2、测试事…

Linux项目自动化构建工具-Makefile

Makefile Makefile介绍Makefile的使用依赖关系/依赖方法伪目标文件make 工作方式make [命令] 使用方式 Makefile介绍 Makefile是一个自动化编译工具,写好后,我们只需一个make命令,程序即可完成编译命令,并且可以根据项目需要&…

深圳前海公司的优惠政策

1.金融服务业政策优势 1.1支持前海构建跨境人民币业务创新试验区; 1.2探索试点跨境贷款; 1.3支持前海企业赴港发行人民币债券; 1.4支持设立前海股权投资母基金; 1.5支持外资股权投资基金在前海创新发展; 1.6支持…

android studio git没有显示Local Changes界面

设置android studio git没有显示Local Changes界面 Setting -> Version Control-> commit -> 把use non-modal commit interface 的勾勾去掉,如下图所示 然后点击apply,回到git界面就看到了,亲测有效

Qt应用开发(基础篇)——颜色选择器 QColorDialog

一、前言 QColorDialog类继承于QDialog,是一个设计用来选择颜色的对话框部件。 对话框窗口 QDialog QColorDialog颜色选择器一般用来让用户选择颜色,比如画图工具中选择画笔的颜色、刷子的颜色等。你可以使用静态函数QColorDialog::getColor()直接显示对…

深入解析CMS垃圾回收器

本文已收录至GitHub,推荐阅读 👉 Java随想录 微信公众号:Java随想录 原创不易,注重版权。转载请注明原作者和原文链接 文章目录 CMS简介运作过程初始标记并发标记并发预处理可取消的并发预处理重新标记并发清除 CMS的缺陷处理器资…

day2 牛客TOP100:BM 11-20 链表 二分法 流输入 小美加法

文章目录 链表BM11 链表相加(二)BM12 单链表的排序归并排序分割 超时辅助数组快排 BM13 判断一个链表是否为回文结构BM14 链表的奇偶重排BM15 删除有序链表中重复的元素-IBM16 删除有序链表中重复的元素-IIJZ35 复杂链表的复制 二分法BM17 二分查找-IBM18 二维数组中的查找BM19…

高忆管理:科创板代码多少开头?

科创板在上海证券买卖所正式开市,这是我国股票商场上的一次重磅改革。科创板旨在推进我国科技立异式企业的发展,招引更多高科技企业到A股上市。那么,科创板的代码多少最初呢?这个问题也让许多投资者和重视者非常重视。接下来&…

水论文的三种套路

目录 1、换模型不换领域(同领域换基准模型)2、换领域不换模型(同基准模型换领域)3、改进的模型 1、换模型不换领域(同领域换基准模型) 有一个,对Transformer做了一个改进A,做视频描…

激光三角测距原理

激光三角测距原理 1. 简介2. 直射式激光三角测距法3. 斜射式激光三角测距法 1. 简介 激光三角测量法是利用光线空间传播过程中的光学反射规律和相似三角形原理,在接收透镜的物空间与像空间构成相似三角形关系,同时利用边角关系计算出待测位移。根据入射…

数学建模:主成分分析法

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 主成分分析法 算法流程 构建原始数据矩阵 X X X ,其中矩阵的形状为 x ∗ n x * n x∗n ,有 m m m 个对象, n n n 个评价指标。然后进行矩阵的归一化处理。首先计算矩…

Python学习 -- 枚举类

当谈到在Python中管理一组常量或者枚举类型的时候,Enum(枚举)类是一个非常有用的工具。Python的Enum类允许你创建具有有意义的、可读性高的常量集合,而不必使用硬编码的数字或字符串。在本篇博客中,我们将深入探讨Pyth…

【LeetCode75】第四十题 最大层内元素和

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 这道题和LeetCode75的上一题大同小异,都是要我们对二叉树进行层序遍历。 那具体如何层序遍历我再上一题也详细介绍过了&#…

System.Environment在Unity和常规.NET应用程序中的应用与兼容性

什么是 System.Environment? System.Environment 是 .NET Framework 的一个类,它提供了关于当前环境和平台的信息,以及与它们进行交互的方法。这些环境可以是操作系统、版本、机器配置等。该类为应用程序提供了访问特定于操作系统的功能的方…

常用命令之docker生命周期管理和镜像管理命令

一、docker简介 Docker是一个开源的容器化平台,用于构建、部署和管理应用程序。它使用容器技术来将应用程序及其依赖项打包为一个独立的可移植容器,可以在不同的环境中运行,而不需要依赖特定的操作系统或硬件。   Docker的主要特点包括&…

poi-tl设置图片

选中图片右击 选择设置图片格式

有哪些情感书单素材?怎么制作成视频?

如果你想要制作一段能够引起观众共鸣的情感书单视频,你需要准备哪些素材呢?下面我们将介绍制作情感书单视频的素材和方法。 情感书单素材 书籍封面 制作情感书单视频的第一个素材是书籍封面。封面上的图案能够很好地表达书本的主题和情感,是…

Hadoop HA模式切换

Hadoop HA模式下 主从的切换(操作命令) YARN HA 获取所有RM节点的状态 yarn rmadmin -getAllServiceState获取 rm1 节点的状态 yarn rmadmin -getServiceState rm1手动将 rm1 的状态切换到STANDBY yarn rmadmin -transitionToStandby rm1 ##或者 y…

5年经验之谈 —— 性能测试中故障排查及解决方法!

引言: 在进行性能测试过程中,同事反馈报错率突然攀升。通过查看相关日志和服务器状态,发现了一些关键信息。本文将详细介绍导致报错率攀升的原因,并提供相应的解决方法。 1. 问题背景 在使用JMeter进行性能测试时,我…

vue、elementui控制前一级选择后,后一级才会有数据

<el-form-item label"废物类型&#xff1a;"><el-select clearable v-model"queryForm.hswCateType" placeholder"请选择" change"industryCategoryChange" focus"industryCategoryFocus"><el-option v-for&…