分布式存储和会合 式存储的区别「 分布式存储和会合 式存储的区别和接洽 」

  本文根据DBAplus社群第108期线上分享整理而成。

  讲师先容

  张观石

  虎牙直播业务运维负责人

《运维火线 》联相助 者

拥有多年互联网业务运维履历

  主题简介:

时序数据库底子 知识先容

业界利用 时序数据库的一些案例

时序数据库在直播业务监控中的实践

  各人 好,我是张观石,如今 在虎牙直播负责直播业务运维工作。之前看到社群发了一篇《基于InfluxDB+Grafana打造大数据监控利器》,提到了时序数据库,本日 分享主题有点雷同 ,不外 我会从差别 的角度来说一说。

  为什么会讲时序数据库呢?各位DBA大概 重要 关注关系型数据和各种NoSQL,而时序数据库近来 有一种鼓起 趋势,以是 特地 拿来讲一讲。

  一、时序数据库简介

  时序数据库是一种为了处理 惩罚 时间序列数据而特别 优化的数据库。它以时间系列为关键索引,特别 得当 于连续 时间分片的数据存储和检索。重要 用于处理 惩罚 带时间标签(按照时间的次序 变革 ,即时间序列化)的数据。

  在传统行业,如电力行业、化工行业、物联网等各范例 及时 监测、查抄 与分析装备 所收罗 、产生的数据,都是时间序列数据,这些工业数据的典范 特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严峻 依靠 于收罗 时间(每一条数据均要求对应唯一的时间)、监测点多信息量大(通例 的及时 监测体系 均有成千上万的监测点,监测点每秒钟都产生数据,每天 产生大量数据)。

  如今 很多 企业对于时序大数据的存储和处理 惩罚 每每 采取 关系型数据库的方式举行 处理 惩罚 ,但由于关系型数据库天生的劣势导致其无法举行 高效的存储和数据的查询。时序数据库通过利用 特别 的存储方式,使得时序大数据可以高效存储和快速处理 惩罚 海量时序数据,是办理 海量数据处理 惩罚 的一项紧张 技能 。该技能 采取 特别 数据存储方式,极大进步 了时间相干 数据的处理 惩罚 本领 ,相对于关系型数据库它的存储空间减半,查询速率 极大的进步 。特别 在互联网行业的运维监控,业务监控中利用 。

  时间序列

  我们常说的时间戳,timestamp,unix_time 是一个时间点,而无数个时间点毗连 起来就是所谓的时间系列,简称时序。

  时序数据

  带维度标签、以时间点或时间范围为索引的数据也称为时序数据。明白 为某一度量指标在某一时间点的一个值。

  时序数据布局

  从以上几点可以相识 时序数据应该包罗 几个方面:度量指标、标签、值、时间点。

  举个例子,度量指标数据:

  Usercount platform=dbaplus speaker=zhangguanshi 1497344217 value=500

  这里分成几个部分 :

Metric:usercount

Timestamp:1497344217

Value:500

Tags:platform=dbaplus,speaker=zhangguanshi

  各部分 表明 :

Metric:监控项/指标度量,如同 时在线用户usercount。

Tags:标签/维度,在OpenTSDB内里 ,Tags由tagk和tagv构成 ,即tagk=tagv。标签是形貌 Metric的属性,分享主题的讲师,tags可为speaker=zhangguanshi。

Value:一个Value表现 一个metric的实际 数值,譬如上面的500

Timestamp:即时间戳,用来形貌 产生时序数据的时间点,上面的1497344217

Data Point:即某个Metric在某个时间点的数值。

  1)Data Point包罗 以下部分 :Metric、Tags、Value、Timestamp

  2)上面形貌 的本场分享在21:09时间 的同时在线用户,就是1个DataPoint

  数据特点:

根本 上都是插入,没有更新的需求;

数据根本 上都偶然 间属性,随着时间的推移不绝 产生新的数据,旧的数据不必要 生存 太久;

业务方对时序数据通常有几个查询需求;

获取最新状态,查询近来 的数据(比方 传感器最新的状态);

展示区间统计,指定时间范围,查询统计信息,比方 均匀 值,最大值,最小值,计数等;

分布式存储和集中式存储的区别「 分布式存储和集中式存储的区别和联系」 分布式存储和会合
式存储的区别「 分布式存储和会合
式存储的区别和接洽
」 app开发

获取非常 数据,根据指定条件,筛选非常 数据。

  跟平凡 数据的区别1:

时序数据库就是存放时序数据的数据库;

而时间序列是无穷的,不绝 递增的,而指标也可以成千上万,为海量数据而计划 的;

时序数据是特别 为次序 写入;

时间是数据库插入查询的核心 条件,以时间为连续 条件。

  跟传统数据库的区别2:

时序数据库简单 ,没有复杂模式/范式计划 。某一度量指标在某一时间点只会有一个值;

没有事件 ;

写多读少无更新;

次序 读、区间范围读;

基数大。

  时序数据库要办理 的题目 :

以时间点为次序 产生的数据;

数据量大,数据泉源 多;

数据的维度多,差别 指标有差别 维度;

统计查询复杂,如恣意 时间访问,多粒度的检索;

必要 快速相应 查询;

对中小团队收益特别 大。

  二、业界利用 时序数据库环境

  简介

  在《解密Google SRE》一书中作者提到了Google的监控体系 borgmon 和 prometheus非常像。prometheus是一款开源的时序数据库,可以想见Google也是用的雷同 时序数据库举行 监控。Fackbook开源了时序数据库引擎Beringei。他们内部也用的这个做监控。阿里巴巴的Goldeye黄金眼,也是一款时序数据库;百度云产物 TSDB,重要 用于物联网相干 的监控;国内非常火的监控体系 Open-falcon也是一款开源时序数据库。固然 尚有 着名 的开源软件:Graphihe、OpenTSDB、InfluxDB、Druid、TimeScaleDB等。

  我们看下DB-Engine网站对时序数据库的排行。

  出处:https://db-engines.com/en/ranking/time+series+dbms

  参考资料:https://liubin.org/blog/2016/02/25/tsdb-list-part-1/

  这里以OpenTSDB为例重点先容 下时序数据库的一些技能 。

  先容 Opentsdb及相干 组件

  Tsd和存储层

  OpenTSDB的核心 ,本身 比力 简单 ,是Java实现的一套程序。用来读写底层存储及数据处理 惩罚 。

  存储:

  OpenTSDB底层存储利用 的HBase,天然 ZooKeeper、HBase、Hadoop HDFS是少不了的。其架构分布式、高可用也是由HBase实现。

  Rowkey的计划 是亮点:

  Rowkey: metric + timestamp + tagk1 + tagv1… + tagkN + tagvN

  HBase(main):003:0 scan 'tsdb'

  ROW COLUMN+CELL

  \x00\x00\x01U\x9C\xAEP\x00\x column=t:q\x80, timestamp=1497344217, value=\x17 00\x01\x00\x00\x01\x00\x00\x 02\x00\x00\x02

  说OpenTSDB没有计划 模式是指上层上报来的数据,在底层OpenTSDB还是 有存储表的,在往HBase中写入和查询利用 了一套自界说 的数据布局 ,OpenTSDB的存储格式是在HBase存储了几个表:

Data Table:表名默认叫tsdb ,存储时序数据的表。

UID Table:表名tsdb-uid,UID映射表,时序数据存储时不消 实际 的字符串,而是颠末 此表映射之后,取得一个UID,存储在data table中的着实 是整个uid。

Meta Table:元数据表,时间序列数据的索引表。

Tree Table :树表,也是存储元数据用的。

Rollup 表:存储rollup 和 pre-aggregation的数据。

分布式存储和集中式存储的区别「 分布式存储和集中式存储的区别和联系」 分布式存储和会合
式存储的区别「 分布式存储和会合
式存储的区别和接洽
」 app开发

  WebUI

  OpenTSDB有多个展示端,Grafana是此中 一个支持得较好的。前面文章也讲到了Grafana,这里不多讲。

  收罗 层

  收罗 支持udp协议、http协议、telnet。可利用 多种收罗 上报方式,包罗 脚本、应用内上报等。

  生存 数据最简单 的方式是:

  $ telnet localhost 4242

  put sys.cpu.user 1497344217 23 host=web01 user=mirzhang

  告警层

  官方保举 是bosun,一套强大 的开源告警软件。

  插件

  开辟 了新插件,如支持内部uid到主播的映射。

  三、虎牙直播业务监控实践

  配景

  各人 大概 都知道直播是浩繁 互联网行业中技能 比力 复杂的技能 ,视频从主播端收罗 到推流节点,到转推环节,到分发网络,到观众端,这么复杂的链路中要保障音视频直播的流畅 是很有挑衅 的。

  视频质量指标很多 :

感官卡顿比

网络卡顿比

错误率

慢速比

视频加载乐成 率

播放时延

卡比例

视频加载时间

毗连 时间

RTT

  微服务的质量指标:

  虎牙直播后端是微服务架构,我们把数千个微服务的乐成 率,调用次数、延时等信息都通过期 序数据库来监控。

  同时在线用户规模大

  维度多:分端、分地区 、分主播、分线路

  以是 部分 用户说卡的时间 ,要分析N多种环境 。

  根本 架构

  整套体系 包罗 收罗 、存储分析、输出等几个部分 ,收罗 端利用 了多种收罗 本领 和方法。

  在体系 的利用 层包罗 账号、安全这些通用步伐 ,也包罗 TSDB数据层,存储层,及前端展示UI层。

  输出是利用 时序数据库中的数据实现运维需求。

  技能 架构

  我们收罗 了全部 能收罗 到的质量相干 数据,此中 包罗 主播、观众、中心 各个环节。收罗 数据规模非常的大,要及时 收罗 ,尽大概 及时 展示,以是 全部都直接读写TSDB是不可 的,我们通过流式盘算 的环节举行 预处理 惩罚 ,这一层是微服务架构,可以很轻易 扩展。原始数据大概 是各种复杂格式的,通过预处理 惩罚 也可以到达 过滤、聚合、预盘算 的目标 ,可以按业务的需求举行 机动 处理 惩罚 。

  我们微服务的质量数据,包罗 乐成 率、调用延时数据原来是通过MySQL生存 ,通过开辟 web背景 来展示,厥后 改造为通过期 序数据库来生存 展示。

  监控告 警

  Bosun 是一个新型的监控和告警体系 ,由Stack Exchange团队打造,利用 Golang编写,支持界说 复杂的告警规则,支持OpenTSDB、Graphite、Logstash-Elasticsearch 等数据源。bosun 将是Zabbix、Nagios的有力竞争者。

  bosun从TSDB读取时序数据,可以经过 bosun表达式做一系列的盘算 ,根据告警战略 发送告警,告警的内容是界说 好的bosun模板。

  这些质量监控告 警不绝 连续 反馈给各相干 职员 、厂商。及时 告警买通 各渠道:微信、QQ、钉钉、YY、邮件等。

  时序数据的别的 用途

  我们还通过TSDB API从时序数据库获取数据,定制各种定期陈诉 如日报、周报等。

  质量数据结果 图:

  QA

  Q1:虎牙用的是时序数据库+大数据构建业务监控体系吗?

  A1:是的,在预处理 惩罚 环节有分析逻辑。

  (接上问)

  Q2:那么如许 做应该只能对:应用层做监控,对吧?涉及到数据库如MySQL就没办法监控,是吗?

  A2:时序数据库也得当 底子 监控,我个人重要 做业务运维,以是 重点是业务监控。

  Q3:预处理 惩罚 是用什么作的?怎么及时 写OpenTSDB?

  A3:是一套微服务程序,Java的,上报到这里,经太过 析后得到指标数据,再存入TSDB。

  (接上问)

  Q4:这和别的 的及时 分析有何区别?

  A4:时序数据库以极低的成原来 存储分析时序数据,别的 及时 分析会重不少,场景也不太一样。

  Q5:也就是说时序数据库重要 应用在应用监控?尚有 别的 场景应用吗?

  A5:前面说了也得当 底子 监控。只要是时间次序 数据都可以存。

  Q6:时序数据库的瓶颈是什么,可以分享下这个应用监控体系构建中的一些履历 吗?假如 我们也预备 构建一套监控的话。

  A6:在我们利用 过程中,分布式的写入性能,查询性能有碰到 题目 。OpenTSDB散列要匀称 。

  直播链接

  https://m.qlchat.com/topic/270000376855401.htm?isGuide=Y

  暗码 :666

  近期活动 :

  2017 DAMS中国数据资产管理峰会上海站将会在7月7日-8日以主题分场及培训课程的情势 ,携同众位来自阿里、腾讯、京东、搜狐、美团、携程、饿了么、中国移动、新炬网络、安全 科技、轻维软件、润乾软件等名企的精英技能 专家,与各人 深入分析 各项技能 的前沿理论与最佳实践,以知识武装开启2017下半年!

  限时优惠,火热报名中...点击峰会官网,优先抢座!

  https://www.dams.org.cn/