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

神策新一代分析引擎架构演进

bdfbf36aa3f79e3ff030f359f5162042.gif

d7e369f974a7917c3cbb3b89a285477f.png

近日,神策数据已经推出全新的神策分析 2.5 版本,该版本支持分析模型与外部数据的融合性接入,构建全域数据融合模型,实现从用户到经营的全链路、全场景分析。新版本的神策分析能够为企业提供更全面、更有效的市场信息和经营策略,帮助企业深入了解用户需求、把握市场动态,从而提高竞争力。这一重要升级为企业提供了更强大的数据分析工具,为其业务发展和决策提供有力支持。

神策客户旅程分析引擎(简称“神策分析引擎”)作为新版本的技术内核,也进行了一次重要的架构演进,接下来,本文将详细讲述神策分析 2.5 版本中分析引擎的架构演进方向和重要能力优化。

一、全面的弹性架构能力支持

神策分析引擎支持全面的弹性架构,实现了存储、查询、导入三部分的架构分离,且各自都支持多种能力等级配置和弹性扩缩容。企业可以结合自己的业务需要,灵活组合最佳方案,极致优化硬件成本。

a1538860efbd3bdadaa6d0cbe587797d.png

图 神策分析引擎整体架构

1、弹性存储,双向打通主流数据湖生态

神策分析引擎是原生的存算分离架构,无论是不可变数据存储(HDFS、对象存储),还是可变数据存储(Kudu),都可以灵活的进行扩展。

根据数据的冷热程度和可更新性,引擎采用不同的存储系统。这样做的目标是最大程度减少对高性能 SSD 磁盘的使用需求,尽量采用低成本的 HDD 磁盘存储大容量数据。通过 Alluxio 的方案,引擎可以直接无缝连接各大公有云的对象存储,实现低成本的弹性扩容。当然,考虑到本地存储具有更好的性能优势,以及在一次性预付费折扣下成本也相对可控,因此弹性也并不总是最佳选择。企业可以根据业务类型和需求,灵活调整存储类型的比例,以在性能和成本之间找到最佳平衡点。

存算分离架构也会带来一些性能方面的副作用,因此在小规模集群中,神策数据默认依然采用计算和存储同机部署模式,以减少网络开销并提高扫描性能。而在大规模集群和弹性模式下,引擎则会智能利用 Local Cache 技术,减少因存算分离带来的额外网络开销。

此外,神策分析引擎完全兼容 Iceberg 标准,使得与客户现有的数据仓库和数据湖体系进行双向打通变得轻松,无需冗余存储数据,且保证了不同应用之间数据的一致性。Iceberg 数据湖标准目前受到了主流数据仓库和数据湖解决方案的广泛支持,拥有完善的开源生态工具链。                                                       

2、弹性查询,灵活应对企业经营需求

查询资源通常是分析引擎的整体资源使用中波动最大的部分,因为它不仅和企业的业务高峰有关系(例如促销活动带来的流量高峰),也受到企业的自己的经营活动(例如周报月报、版本发布)的直接影响。为此,神策分析引擎提供了非常灵活的查询资源配置方案。

首先,对于较稳定的业务固定查询需求,需要配备一定比例的本地查询资源,由于这部分资源是存储计算一体化,通常查询性能更好、延迟更低。后期也可以根据业务的增长需要,再进行扩容操作。

其次,对于夜间的离线计算或者临时性大规模查询,例如大型促销活动或者新游戏上线等场景,可以使用基于 Kubernetes 集群的弹性的查询资源。这里的最佳实践方案是使用各大公有云厂商的按需计价节点,或者竞价实例(如 AWS Spot 实例)来进行部署。按照神策数据过往服务客户的实践经验,该方案相比完全使用本地查询资源大约可以节省 20%~30% 的成本。

最后,分析引擎不仅支持物理隔离的查询资源组,还支持在资源组中划分优先级队列,例如可以按照产品线、查询大小来进行资源分配,从而更好的保障高优先级的业务需求。

3、弹性导入,最大化硬件资源利用率

在导入能力上,神策分析引擎提供了秒级实时、分钟级微批和小时级离线导入等多种方式,以在时效性和吞吐量之间取得平衡,最大限度地提高资源利用率。并且允许在不同模式之间进行动态切换,如在导入高峰期间切换到微批模式,过后再切回实时模式。

相比查询来说,导入的资源消耗通常是比较稳定的,一般默认情况下使用固定的本地资源运行即可。但是,对于大批量、一次性历史数据导入需求,更好的选择是在弹性 Kubernetes 集群上运行,以避免短时间内频繁扩容和缩容带来的操作和硬件成本。

二、六大核心能力优化

1、全面强化的用户旅程分析

神策分析引擎专注于用户旅程分析这一专属场景,与通用的 OLAP 分析引擎相比,我们构建了高效的用户序列分析框架,所有的漏斗、路径、归因、LTV 等分析模型均基于此框架开发。这不仅保证了执行效率的卓越,同时也能快速根据业务需求进行功能扩展。

在应对大数据量场景时,我们提供了基于完整用户数据的快速抽样能力,确保用户行为在抽样过程中不会被割裂,从而在低成本的基础上实现快速计算,并保持指标的准确性。另外,我们还实现了高效的点查能力,支持单用户行为序列场景,有效避免了数据的冗余存储和不一致问题。此外,为应对 ID-Mapping 和数据合规场景,我们专门支持了单用户数据删除和修复功能。

2、精准的查询资源预估

对每个查询的资源进行准确预估是神策分析引擎稳定运行的重要前提。神策分析引擎除了传统的基于统计信息的预估方式之外,还引入了基于查询历史的预估,在真实业务场景中,由于企业的产品使用通常存在较强的规律性,因此往往系统运行一段时间之后,基于历史的查询预估会起到关键作用,大大提升整体的准确性。

基于精准的查询资源预估结果,一方面可以获取更佳的执行计划,另外也可以更准确地进行查询资源的调度——例如让小查询进入高优先级队列快速执行。除此之外,还可以给用户更加准确的交互反馈。

3、批流一体的实时数据聚合

神策分析引擎在支持离线分析和 Ad-Hoc 查询的同时,还能从任意历史数据时间点开始进行流式聚合查询。这意味着我们可以使用同一套查询引擎和 UDF/UDAF 实现三种不同的应用场景,实现语法的一致性、性能的高效和可复用性。通过这部分能力,我们能够实现秒级时效性的高频查询,更好地满足实时监控类需求。

1e17c6afcc0935788fc4b2e6338fb9ae.png

图 实时聚合的应用示例

4、一致性物化视图

物化视图是常见的 OLAP 查询引擎优化能力,通常有两种实现方式:和基表数据一致,或者需要定期更新。神策分析引擎采用一致性物化视图,这意味着我们可以在保持数据一致性的基础上,实现常用查询性能的 10 倍提升。

5、完备的数据安全体系

为确保企业数据的最大安全性,神策分析引擎采取了多重安全措施。首先,引擎提供完整的表级别和行列级别的访问控制,以确保只有授权用户能够获取相应的数据,从而保护数据的隐私和机密性。其次,在更高安全要求的场景下,引擎还支持对所有底层存储服务启用基于 KMS(Key Management Service)的加密机制,以增强数据的加密保护,确保数据在存储过程中也始终处于加密状态,防范潜在的安全威胁。

6、通用性能优化

作为一个全流程支持 CodeGen 的 C++ 查询引擎,神策分析引擎在处理复杂查询时有着显著优势。此外,通过服务 2000+ 客户的实践,我们积累了大量优化经验,引入了诸如表达式预计算、无效 JOIN 裁剪、正则缓存、Bucket Join 等细节优化,进一步提升了在复杂业务场景下的性能表现。

特别值得一提的是,在完成了诸多指令集级别的适配工作之后,神策分析引擎能够完美支持在国产 x86 和 ARM 芯片上运行,并有良好的性能表现。

三、神策分析引擎高效赋能企业经营

基于神策分析引擎,企业得以更高效地实现看数查数、分析洞察等关键业务场景。包含旧版本在内,神策分析引擎已成功为包括泛金融、泛品牌零售、泛互联网以及泛企业各细分领域在内的 2000+ 客户的数字化经营提供了稳健的能力支撑。

以某互联网工具类客户为例,其每日新增数据量高达百亿条,日均查询数千次。在此背景下,神策分析引擎展现出了优异的性能表现:看数型查询的 P95 指标在 3 秒左右,分析型查询则在 30 秒,而原始的 SQL 查询也能达到 36 秒。类似地,某电商类客户每日新增数据百亿条,日均查询次数近万次,也在不同使用场景下达到了数秒至数十秒不等的 P95 指标。

众多诸如此的成功案例充分表现出了神策分析引擎在大规模数据处理与高频查询场景下的杰出能力,为数字化时代中企业的快速发展提供了强有力的数据支持,助力企业实时了解业务情况、准确做出决策,实现高效企业经营。

✎✎✎

更多内容

神策数据双引擎赋能数字化客户经营

神策分析 Android SDK 入选“星熠”案例

关于数据分析模型的十问十答

cc9abf467617667c758f448d0affc261.jpeg

▼ 点击“阅读原文”,立即免费体验

相关文章:

神策新一代分析引擎架构演进

近日,神策数据已经推出全新的神策分析 2.5 版本,该版本支持分析模型与外部数据的融合性接入,构建全域数据融合模型,实现从用户到经营的全链路、全场景分析。新版本的神策分析能够为企业提供更全面、更有效的市场信息和经营策略&am…...

Systemui的介绍以及与普通应用的差异

一.SystemUI的介绍 简介 SystemUI是Android操作系统的一个关键组件,主要负责管理和提供用户界面的核心元素,如状态栏、导航栏和锁屏界面等。从下面两点出发了解SystemUI的特性: 一下就是systemui的部分界面,还包括锁屏界面&…...

群狼调研—产业园物业满意度的调研对象

群狼调研**(湖南物业满意度调查)**受顾客委托开展产业园物业满意度调查,产业园物业满意度调研对象:产业园物业满意度调研的对象主要是产业园内的企业和租户。这包括在产业园内租用场地或办公空间的企业、工厂、工作室等&#xff0…...

想参加华为杯竞赛、高教社杯和数学建模国赛的小伙伴看过来

本文目录 ⭐ 赛事介绍⭐ 辅导比赛 ⭐ 赛事介绍 ⭐ 参赛好处 ⭐ 辅导比赛 ⭐ 写在最后 ⭐ 赛事介绍 华为杯全国研究生数学建模竞赛是由华为公司主办的一项面向全国研究生的数学建模竞赛。该竞赛旨在通过实际问题的建模和解决,培养研究生的创新能力和团队合作精神&a…...

ELK 企业级日志分析系统

目录 ELK 概述 1、ELK 简介 2、为什么要使用 ELK: 3、完整日志系统基本特征 4、ELK 的工作原理: 总结 ELK Elasticsearch 集群部署(在Node1、Node2节点上操作) 1.环境准备 2.部署 Elasticsearch …...

PyTorch Lightning教程六:优化代码

有时候模型训练很慢,代码写得冗长之后,没法诶个检查到底那块出现了占用了时空间,本节通过利用Lightning的一些方法,检查分析是那块代码出现了问题,从而来进一步指导和优化代码 本节主要基于性能分析方法,通…...

基于linux下的高并发服务器开发(第四章)- 多线程实现并发服务器

>>了解文件描述符 文件描述符分为两类,一类是用于监听的,一类是用于通信的,在服务器端既有监听的,又有通信的。而且在服务器端只有一个用于监听的文件描述符,用于通信的文件描述符是有n个。和多少个客户端建立了…...

YUV 色彩空间中U 和 V 分量的范围

在YUV色彩空间中,U分量和V分量的范围通常是-0.5到0.5。 具体来说,对于标准的YUV色彩空间(例如YUV420),取样是按照4:2:0的比例进行的。这意味着在水平和垂直方向上,U和V分量的取样比Y分量少一半。因此&…...

【云原生】K8S二进制搭建一

目录 一、环境部署1.1操作系统初始化 二、部署etcd集群2.1 准备签发证书环境在 master01 节点上操作在 node01与02 节点上操作 三、部署docker引擎四、部署 Master 组件4.1在 master01 节点上操 五、部署Worker Node组件 一、环境部署 集群IP组件k8s集群master01192.168.243.1…...

自动化应用杂志自动化应用杂志社自动化应用编辑部2023年第11期目录

数据处理与人工智能 大数据视域下无轨设备全生命周期健康管理技术的研究 赖凡; 1-3 三维激光扫描结合无人机倾斜摄影在街区改造测绘中的技术应用 张睿; 4-6 井上变电站巡检机器人的设计与应用 刘芳; 7-9 《自动化应用》投稿邮箱:cnqikantg126.com 基于机…...

Tensorflow2-初识

TensorFlow2是一个深度学习框架,可以理解为一个工具,有谷歌的全力支持,具有易用、灵活、可扩展、性能优越、良好的社区资源等优点。 1、环境的搭建 1.1 Anaconda3的安装 https://www.anaconda.com/ Python全家桶,包括Python环境和…...

idea-常用插件汇总

idea-常用插件汇总 码云插件 这个插件是码云提供的ps-码云是国内的一款类似github的代码托管工具。 Lombok Lombok是一个通用Java类库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或setter等方法…...

【Kubernetes】

目录 一、Kubernetes 概述1、K8S 是什么?2、为什么要用 K8S?3、Kubernetes 集群架构与组件 二、核心组件1、Master 组件2、Node 组件3、K8S创建Pod的工作流程?(重点)4、K8S资源对象(重点)5、Kubernetes 核…...

使用逗号方式、JOIN方式和USING方式进行多表连接查询时哪个方式更好

在Oracle中,使用逗号方式、JOIN方式和USING方式进行多表连接查询时,性能上没有明显的差异。这是因为Oracle优化器会自动将这些语法转换为内部执行计划,以获得最佳的查询性能。 逗号方式:逗号方式是最简单的连接语法,它…...

MacOS上用docker运行mongo及mongo-express

MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 前提 要求…...

海康视频插件VideoWebPlugin在vue中的实现

一,将js文件放在public文件下 二,在index中全局引入 三.在视频页面写方法,创建实例,初始化,我写的是1*4屏的 <template><!--视频窗口展示--><div idplayWnd classNameplayWnd refplayWnd styleleft: 0; bottom: 0;height: 902px;width: 60vw></div>&…...

swagger相关问题

swagger相关问题 swagger版本为&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.9.6</version> </dependency> <dependency><groupId&…...

Scala关键字lazy的见解

Scala中使用关键字lazy来定义惰性变量&#xff0c;实现延迟加载(懒加载)。 惰性变量只能是不可变变量&#xff0c;并且只有在调用惰性变量时&#xff0c;才会去实例化这个变量。 在Java中&#xff0c;要实现延迟加载(懒加载)&#xff0c;需要自己手动实现。一般的做法是这样的…...

sql分类 DDL、DML、DCL

DDL &#xff08;Data Definition Language 数据定义语言) 这些语句定了不同的数据库、表、视图、索引等数据库对象&#xff0c;还可以用来创建、删除、修改数据库和数据表的结构 如: CREATE \ DROP \ ALTER \ RENAME \ TRUNCATE 等 DML&#xff08;Data Manipulation Langua…...

C++ 性能优化

要系统地提升C项目的性能&#xff0c;可以采取以下步骤&#xff1a; 分析和度量&#xff1a;首先&#xff0c;你需要通过性能分析工具来确定项目中的性能瓶颈。使用工具如gprof、perf等&#xff0c;来识别代码中消耗时间和资源最多的部分。 选择合适的数据结构和算法&#xff…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...