写点什么

网易大数据体系之时序数据技术

  • 2019-05-13
  • 本文字数:2977 字

    阅读完需:约 10 分钟

网易大数据体系之时序数据技术

本次分享内容


  • 时序数据平台主要业务场景

  • 时序数据平台体系架构

  • 时序数据平台核心技术

PART01 时序数据平台主要业务场景


上图为数据的整体架构,大部分公司都是差不多的:


  • 原始数据:MySQL、服务端的 Log、APP-Data、Sensor,大家知道现在穿戴设备很多,比如手表等,这样都会产生很多数据,这些数据都称为时序数据,随着时间的变化不断产生数据。

  • 数据采集层:sqoop、DataStream、SDK、Gataway

  • 数据加工层:数据存在 kafka 里,再经过一些流计算处理(Flink、Sparkstreaming)

  • 数据存储分析层

  • 离线存储分析平台:技术栈包括最底层的 HDFS、Kudu、GP 等数据存储,在这之上要做很多的计算,包括 Hive、Spark、Impala 等,他的应用场景包括数仓报表、机器学习、模型训练等;

  • 在线存储计算平台:应用的业务场景包括,交易订单,优惠券,用户画像等,这里主要应用的是 HBase;

  • 时间序列存储计算平台:应用场景包括,业务设备监控,实时广告平台,物联网应用,相关的技术包括 OpenTSDB、Druid、InfluxDB 等。


所以会根据不同的业务使用不同的平台来处理相关的数据,对于我们来说最大的工作是在数据存储端。



时序数据主要包括时间列、维度列和指标列,这 3 列缺一不可(特别是时间列)。


工业互联网时代,会源源不断产生各种各样的时序数据,时序数据平台有以下几种典型场景


  1. 系统监控

  2. 物理机、云主机、容器:CPU、内存、IO 等

  3. 组件服务:数据库集群、Kafka 集群、HBase 集群

  4. 任务监控

  5. 查看指定 hadoop 任务耗用内存、CPU、IO 利用率等

  6. 查看集群消耗资源 TopN 任务、节点等

  7. 统计集群任务执行耗时

  8. 应用性能监控

  9. 应用调用次数,错误占比,页面加载延迟统计、地域统计分析

  10. 慢加载追踪,慢 SQL

  11. 异常会话追踪

  12. 链路监控

  13. 调用链全息排查

  14. 全局调用拓扑

  15. 链路依赖项分析梳理

  16. 业务监控统计

  17. a. 电商

  18. 业务大盘:查看单量,金额,发货等业务指标

  19. 异常大盘:查看超卖,库存校准耗时,商品回调耗时,各种类型下单错误等异常指标

  20. b. 广告

  21. 广告曝光点击消耗实时统计

  22. 流量地域分配


以基础系统监控服务为例,举例描述两个应用场景


  1. 物理机基础硬件指标监控



  1. HBase-RegionServe 指标监控



直观地看,以上数据的横坐标都是时间戳,即设备随着时间不断吐数据。


时序数据应用场景的核心特征:


  1. 时间区间查询,最近时间区的数据的查询频率远大于历史数据

  2. 多维条件查询,即多维字段随机组合查询



  1. 支持 TTL 机制,数据可以自动过期

  2. 支持高压缩率,数据压缩比要达到 10 以上

  3. 支持高效聚合

  4. 支持集群可扩展,服务高可用,数据高可靠

PART02 时序数据平台架构体系

时序序列平台以监控类系统体系架构为例,如下图所示:



将多数据来源的数据(如 Agent 采集器,打点日志、流式数据,IoT Hub 等),通过 Kalfa 工具(分布式消息队列系统)进行流式处理,汇集到网易时序数据平台上。

PART03 时序数据平台核心技术

在上述架构体系中,数据库作为其核心环节。考虑到 DDB(分布式 MySQL)实时写入性能不足,HBase/ES 等开源 NoSQL 平台多维查询以及聚合计算等功能不够;针对海量时序数据这类应用场景,因此需要专门的时序数据库。


现有市场上较成熟的时序数据库主要包括 Druid、OpenTSDB、InfluxDB 等。网易结合以上各类时序数据库的优缺点,自主研发分布式时序数据库平台,支持高性能写入和读取,支持多维条件查询,支持聚合计算,且运行开销较小,可私有化、分布式部署。



该时序数据库的分布式集群结构与 hadoop,Hbase,Kudu 等架构非常相似:多台服务器用来存储数据,并通过 Raft 保证数据的一致性。数据的分布式计算是在分布式节点(node)上完成的,每个 node 上的数据存储计算系统称之为 shard server。在 Shard Server 的底层数据存储中,原始数据存一份,再按照索引的方式再存一份。



网易时序数据平台的数据存储方式是这样的


  1. DataBase 中建立若干 StorePolicy(类似 MySQL 数据库中的表结构),其作用为:


(1) 指定数据过期时间;


(2) 指定数据副本数量;


(3) 指定分片时间间隔。


  1. 每个 StorePolicy 中,按照指定的时间间隔建立若干 ShardGroup。将最新写入的数据(称之为热数据)存到对应的 ShardGroup 中,再通过哈希分片的方式将该 ShardGroup 分片成若干个 Shard,这些 Shard 会分布至整个集群。



以上图为例,同一时间段不同 shard 分布到不同的节点上。例如:左侧大方框中包含的 6 条记录,代表该时间段的记录分布在 6 个 shard 里;右侧小方框中的 5 和 6,代表该 shard 共有 2 个副本,分别分布在集群中的 5 号节点和 6 号节点。


由此可以看出,同一时间段的多个 shard 是分布在多个节点上。这样做的好处是:查找指定时间段的数据时,只需要在相应节点中查到对应的 shard 里的数据即可,避免了全局遍历的情况。


3. 数据在 shard 中的存储方式:


(1) 时间线列式存储


具体来说,SeriesKey 相当于原始数据(DataSource),具有不同维度;存储的时候,所有的时间存到一起,所有的 value 单独存在一起,这种存储方法叫做列式存储。列式存储有两大好处:


  • 每一列数据类型相同,因此压缩率非常高;

  • 方便对列做聚合计算。



什么是列式存储


传统的关系型数据库如 Oracle、MySQL、SQL SERVER 等,都采用的是行式存储法(Row-based),在基于行式存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,每行中的数据在存储介质中以连续存储形式存在。


不同于行式存储,列式存储以列为基础单元,每列的数据在存储介质中以连续存储的形式存在。


针对海量分布式数据背景的 OLAP(on-line analysis processing),列式存储可在内存中高效组装各列数据并形成关系集,可避免全表扫描,显著减少 IO 消耗。


(2) 倒排索引


支持 sql 语句进行条件筛选;在条件筛选的过程中,使用倒排索引方法,实现快速定位,可“直达用户需求”。


  • 正排索引:key-value 中,通过 key 去寻找 value;

  • 倒排索引:通过 value(或包含 value)去寻找对应的 key。


正排索引需要首先对全局进行扫描遍历,进而从中做筛选;而倒排索引可以仅抽取符合条件的 value 值,节省大量的资源。


(3) shard 自动扩容


数据库作为分布式系统,需要考虑系统的扩容(即增加节点)。


增加节点后,为保证数据存储的均衡,将不再更新的数据(即历史数据)作为 cold shard,平均分布到集群的所有节点(包括新增加的节点)中,而实时更新的数据(即 hot shard,随时间不断写入)不做任何处理。


(4) 多级存储优化


考虑到时序数据的一个特点:热数据查询概率远大于冷数据。针对这一特性,做了如下两个优化:


A. 考虑到数据文件可能存在多级索引,针对冷数据,只加载一级索引即 root 索引;针对热数据,会加载所有索引。


B. 因此针对集群服务器配置方面,每个集群 12 块盘,只需要 1 块 ssd 用来存储 hot shard 即可,其余均使用普通 hhd 即可,最大程度降低硬件成本。


  • cluster 是整个集群,包含 n 个 node;

  • node 通常掌控独立的资源,包括 cpu 等;一台机器可以多个 node。

  • shard 一般是从数据角度来说。例如,1000 条数据按 id 分,存 10 份,就是 10 个 shard。

  • shards 分散在多个 node 上。


最后通过以上手段,来实现刚刚所说的时序数据应用场景的核心特征:时间区间查询,多维条件查询,支持 TTL 机制,支持高压缩率,支持高效聚合,支持集群可扩展,服务高可用,数据高可靠

作者介绍:


范欣欣,网易大数据技术专家,专注于 HBase、TSDB 等大数据系统的开发运维,主导网易工业互联网平台建设。


本文来自 范欣欣 在 DataFun 社区的演讲,由 DataFun 编辑整理。


2019-05-13 08:008177

评论 1 条评论

发布
用户头像
想问一下,架构中的实时计算平台主要是做什么使用?在你们的场景中,有没有多个metric需要计算的这种要需求,虽然时序数据能满足很多的查询请求,但是有一些比较复杂的查询你们是怎么做的?
2019-05-13 16:32
回复
没有更多了
发现更多内容

流媒体分享系列之广告归因

Marvin

广告 流媒体 广告归因 归因技术

vivo Trace 监控追求极致的建设历程

vivo互联网技术

Profile Skywalking Dynatrace Datadog profiling

Proxmox VE 8.4 发布 - 开源虚拟化管理平台

sysin

PVE

观测云产品更新 | 场景、管理、监控、AI 错误分析、AI 智能助手等

观测云

产品迭代

看一个有经验的程序员如何学习一门新语言

Marvin

flutter 编程 前端 跨平台 学习分享

“AI+财务”4月活动地图,诚邀您就近入场!

用友智能财务

财务 峰会 会计

大模型如何辅助软件测试与质量体系?

思码逸研发效能

软件测试 研发效能 软件质量 智能化测试 思码逸

如何使用AI辅助开发HTML5 - 通义灵码功能全解析

阿里云云效

html5 AI

高并发场景下的Java性能优化

飞算JavaAI开发助手

Web3项目的技术架构

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

SvelteKit 最新中文文档教程(19)—— 最佳实践之身份认证

冴羽

前端 前端框架 React Svelte SvelteKit

Easysearch VS Opensearch 数据写入与存储性能对比

极限实验室

easysearch OpenSearch

黑龙江三级等保-信息安全等级保护制度中的重要级别

黑龙江陆陆信息测评部

「DeepSeek-V3 技术解析」:多词元预测技术(Multi-Token Prediction, MTP)

Baihai IDP

AI LLMs DeepSeek MTP

iVX如何拿捏中大型工程建筑行业砼管理系统

代码制造者

无代码开发 低代码开发中大型系统

为什么mac文件拖拽不了 mac文件拖不进硬盘里 macbookpro文件无法拖进移动硬盘

阿拉灯神丁

mac三指操作设置 NTFS 磁盘管理器 Tuxera NTFS2024 文件拖拽工具 Mac文件管理

昇腾大规模专家并行技术解码 —— All to All 通信优化

科技热闻

如何在Mac上查找、打开和检查活动监视器,教你轻松管理你的Mac任务进程

阿拉灯神丁

CleanMyMac 设计软件 mac系统维护 Mac任务管理器 系统优化软件

如何使用AI辅助开发HTML5 - 通义灵码功能全解析

阿里巴巴云原生

html5

流媒体分享系列之广告归因方案

Marvin

广告 流媒体 归因 广告归因 广告归因技术

为什么我需要AI助手辅助学习python

阿里巴巴云原生

Python

为什么我需要AI助手辅助学习python

阿里云云效

Python

流媒体分享系列之用户画像

Marvin

广告 流媒体 用户画像 剧情

去中心化云算力的12项特征,不只是算力分布式

PowerVerse

去中心化 算力 分布式,

一文弄懂用Go实现MCP服务

王中阳Go

Go MCP

夏日炎炎,透明屏如何散热“冷静”?

Dylan

电子 LED display LED显示屏 夏令营 LED屏幕

VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版 (集成驱动版)

sysin

esxi

DPP推荐引擎架构升级演进之路|得物技术

得物技术

算法 Java Agent AB

Kairos 的野望:构建“智能体即服务”生态,让万物皆可 “Agent”

股市老人

单月飙涨 300%!揭秘MSKE三大核心优势

MSKE铭文

#区块链 比特币行情 MSKE铭文 比特币铭文

Web3 项目开发的技术难点

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

网易大数据体系之时序数据技术_数据库_DataFunTalk_InfoQ精选文章