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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React Native元素旋转一定的角度

mMeArrowIcon: {fontSize: 30, color: #999, transform: [{rotate: 180deg}]},<Icon name"arrow" style{styles.mMeArrowIcon}></Icon>参考链接&#xff1a; https://reactnative.cn/docs/transforms https://chat.xutongbao.top/

HDFS集群滚动升级以及回滚相关

HDFS集群滚动升级以及回滚相关 介绍不停机滚动升级非联邦HA集群联邦HA集群 停机升级--非HA集群HDFS集群降级和回滚异同点共同点不同点 HA集群降级&#xff08;downgrade&#xff09;注意事项 集群回滚操作 介绍 在hadoop v2中&#xff0c;HDFS支持namenode高可用&#xff08;H…

windows编译zookeeker动态库供C++链接使用以及遇到的错误处理方法

windows下面C链接zookeeper资料不多&#xff0c;特此记录一下 编译环境VS 2015 一. 相关安装包安装下载 1. zookeeper zookeeper3.6.4 下载zip包解压即可 2. ant apache-ant-1.9.16 将包进行解压D:project\apache-ant-1.9.16&#xff0c;然后配置环境变量 新建 ANT_HOME 系…

OpenSource - 一站式API服务

文章目录 概述功能模块运行启动Docker启动功能预览首页接口开发接口属性请求参数在线预览应用创建接口列表数据库类型限流熔断接口申请申请审批 概述 Crabc是低代码开发平台&#xff0c;企业级API发布管理系统&#xff0c;采用SpringBoot、JWT、Mybatis等框架和SPI插件机制实现…

四、Unity中颜色空间

Unity中的设置 通过点击菜单Edit->Project Settings->Player页签->Other Settings下的Rendering部分进行修改&#xff0c;参数Color Space可以选择Gamma或Linear。 当选择Gamma Space时&#xff0c;Unity不会做任何处理。当选择Linear Space时&#xff0c;引擎的渲染…

排序八卦炉之冒泡、快排【完整版】

文章目录 1.冒泡排序1.1代码实现1.2复杂度 2.快速排序2.1人物及思想介绍【源于百度】2.2hoare【霍尔】版本1.初识代码2.代码分析3.思其因果 2.3挖坑版本1.初始代码2.代码分析3.思想比较 2.4指针版本1.初识代码2.代码分析3.问题探讨 2.5集体优化2.6极致优化2.7非递归版本1.初识代…

【ConcurrentHashMap1.7源码】十分钟带你深入ConcurrentHashMap并发解析

ConcurrentHashMap1.7源码 四个核心要点 初始化PUT扩容GET Unsafe 初始化 五个构造方法 /*** Creates a new, empty map with the default initial table size (16).*/public ConcurrentHashMap() {}/*** Creates a new, empty map with an initial table size* accommodati…

FFmpeg下载安装及Windows开发环境设置

1 FFmpeg简介 FFmpeg&#xff1a;FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。项目的名称来自MPEG视频编码标准&#xff0c;前面的"FF"代表…

【Spring】Spring中的设计模式

文章目录 责任链模式工厂模式适配器模式代理模式模版方法观察者模式构造器模式 责任链模式 Spring中的Aop的通知调用会使用责任链模式责任链模式介绍 角色&#xff1a;抽象处理者&#xff08;Handler&#xff09;具体处理者&#xff08;ConcreteHandler1&#xff09;客户类角…

【Spring Cloud 五】OpenFeign服务调用

这里写目录标题 系列文章目录背景一、OpenFeign是什么Feign是什么Feign的局限性 OpenFeign是什么 二、为什么要有OpenFeign三、如何使用OpenFeign服务提供者order-servicepom文件yml配置文件启动类实体ParamController 服务消费者user-servicepom文件yml配置文件启动类接口类Us…

微信小程序真机防盗链referer问题处理

公司使用百度云存储一些资源&#xff0c;然后现在要做防盗链&#xff0c;在CDN加入Referer白名单后发现PC是正常的&#xff0c;微信小程序无法正常访问资源了。然后是各种查啊&#xff0c;然后发现是微信小程序不支持Referer的修改&#xff0c;且在小程序开发工具是Referer是固…

ATFX汇评:非农就业报告来袭,汇市或迎剧烈波动

ATFX汇评&#xff1a;美国非农就业报告每月发布一次&#xff0c;其中非农就业人口和失业率两项数据最受关注。7月季调后非农就业人口&#xff0c;将于今日20:30公布&#xff0c;前值为20.9万人&#xff0c;预期值20万人&#xff1b;7月失业率&#xff0c;同一时间公布&#xff…

极光笔记 | 浅谈企业级SaaS产品的客户成长旅程管理(上)—— 分析篇

本文作者&#xff1a;陈伟&#xff08;极光用户体验部高级总监&#xff09; “企业级SaaS产品与C端互联网产品特征差异很大&#xff0c;有些甚至是截然相反&#xff0c;这些特征也会成为后续客户成长旅程的重要影响变量。本文就如何设计并服务好企业级SaaS产品客户成长旅程进行…

概念解析 | 利用IAA迭代自适应方法实现高精度角度估计

利用IAA迭代自适应方法实现高精度角度估计 注1:本文系“概念辨析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:IAA迭代自适应方法在雷达角度估计中的应用。 背景介绍 在雷达目标检测与定位中,准确估计目标角度是实现高精度定位的关键。传统的基于…

面试热题(前中序遍历构建树)

给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 题目中是给定两个数组&#xff0c;一个是存放这颗树的前序遍历的数组&#xff0c;一个是存放这棵树的…

消息队列项目(2)

我们使用 SQLite 来进行对 Exchange, Queue, Binding 的硬盘保存 对 Message 就保存在硬盘的文本中 SQLite 封装 这里是在 application.yaml 中来引进对 SQLite 的封装 spring:datasource:url: jdbc:sqlite:./data/meta.dbusername:password:driver-class-name: org.sqlite.…

字典与数组第5讲:数组区域内,数组公式的编辑和删除

【分享成果&#xff0c;随喜正能量】我们的心和宇宙本是相通的&#xff0c;所以生命内在蕴含了无限的智慧&#xff0c;但在没有开发没有证悟之前&#xff0c;生命是渺小而短暂的……..。 《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#…

cmake配置Qt工程

cmake 工程配置 # 指定版本和项目 cmake_minimum_required(VERSION 3.10) set(TARGET_NAME labelDeviceView) project(${TARGET_NAME} ) include(${CMAKE_CURRENT_LIST_DIR}/../../../../../../ossLib/ossLib/env.cmake) set(CMAKE_PREFIX_PATH "D:/Qt6/6.5.2/msvc2019…

MyBatis核心 - SqlSession如何通过Mapper接口生成Mapper对象

书接上文 MyBatis – 执行流程 我们通过SqlSession获取到了UserMapper对象&#xff0c;代码如下&#xff1a; // 获取SqlSession对象 SqlSession sqlSession sqlSessionFactory.openSession();// 执行查询操作 try {// 获取映射器接口UserMapper userMapper sqlSession.get…

第3章 数据和C

本章介绍以下内容&#xff1a; 关键字&#xff1a;int 、short、long、unsigned、char、float、double、_Bool、_Complex、_Imaginary 运算符&#xff1a;sizeof() 函数&#xff1a;scanf() 整数类型和浮点数类型的区别 如何书写整型和浮点型常数&#xff0c;如何声明这些类型的…