从一到无穷大 #18 时序数据库运营SLI思考

在这里插入图片描述本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。

公有云时序数据库SLA

运营商产品每服务周期服务可用率不低于99.9%衡量服务不可用数据指标从采集到用户可查询的延时
阿里云TSDB[1]当某一分钟内,客户所有试图与指定的云数据库实例建立连接的连续尝试均失败,则视为该分钟内该云数据库实例服务不可用。 在一个服务周期内云数据库实例不可用分钟数之和即服务不可用分钟数。
金山云influxdb[2]当客户所有试图与指定的单个InfluxDB实例建立连接的尝试均失败,且该状态持续一分钟或更长时间则视为该InfluxDB实例服务不可用。
天翼云influx[3]指依照时序数据库Influx版服务系统中日志记录,因天翼云原因时序数据库Influx版实例连续超过五分钟无法访问,低于五分钟的不可用时间不计算在内
TDengine[4]没在公开页面找到
Lindorm[5]一个计费月内,您的服务中所有运行实例均无法与外部连接或无法运行的总分钟数。
Amazon CloudWatch [6]对于 Amazon CloudWatch Metrics API 调用和 Amazon CloudWatch Logs Data Ingestion API 调用,此类功能处理的请求在 5 分钟时间间隔内因服务器错误而失败的百分比;以及对于 Amazon CloudWatch Alarms,5 分钟时间间隔内 Amazon CloudWatch Alarms 未处理的规则百分比。并没有规定在SLA中[7]在这里插入图片描述
百度云TSDB[8]当用户所有试图与指定的TSDB实例建立连接的连续尝试均失败,且状态持续超过5分钟以上,则视为该分钟内该TSDB实例服务不可用。 在一个服务周期内TSDB实例不可用分钟数之和即服务不可用分钟数
腾讯云数据库[9]99.95%当某一分钟内,客户所有试图与指定的云数据库实例建立连接或者读写请求连续尝试均失败,且该状态持续1分钟以上,则视为该分钟内该云数据库实例服务不可用。
GaussDB NoSQL (GaussDB NoSQL)[10]指依照云数据库GaussDB NoSQL系统中日志记录,因华为云原因导致云数据库GaussDB NoSQL实例连续超过五分钟无法访问的情形,不超过五分钟的不可用时间不计算在内。
influxdb cloud 2.0[11]通过 InfluxDB API 发起的任何读取、写入、任务或管理操作,“不可用”表示在一分钟间隔内对服务的所有连续请求均失败并返回 5xx 错误代码。“不可用”具有相应的含义
influxdb cloud 3.0[12]通过 InfluxDB API 发起的任何读取、写入、任务或管理操作,不可用”是指在一分钟间隔内对服务的所有连续请求均失败并返回 5xx 错误代码
Amazon Timestream[13]99.99%“不可用”和“不可用”是指所有时间流请求在 5 分钟间隔内响应错误。“错误”是指返回 500 或 503 错误代码的任何请求

运营SLI指定

读者首先应该理解Service Level ObjectiveService Level AgreementService Level Indicator之间的区别。

事实上在我看来SLO和SLA是偏向交付的概念,更关心系统的整体运作水平,而对于日常的运营工作,我们更关注SLI的健康情况;其次因为SLA与钱挂钩,相对来讲厂商不会激进的设定SLA,并会附加上严苛的免责条款,但是对于日常运营,在出现意外情况是我们仍然应该准确的获取SLI的值,以此发现,分析并解决问题。

KV系统模型,链路均较为简单,且约束明确(存在时延,可用性,一致性约束),我们可以设定如下指标作为内部人员分析问题的指标水平:

  1. 失败量
  2. 平均延时
  3. 聚合分钟粒度最小成功率
  4. 聚合分钟粒度最大P99

但是时序系统并不一样:

  1. 首先写入链路复杂,存在直连proxy,kafka,prometheus等写入方式(写入请求不能用简单的写入时延,成功率统计);
  2. 其次系统内部关心整体趋势,对于零星的失败容忍性远大于KV系统,只要重试成功问题就不是很大(对于请求成功率本身要求并不是特别高)
  3. 慢查询是可预期的,因为存在用户做长周期的分析需求,时序的特殊性会导致扫描几乎全量数据,这并不是错误的(查询不能像kv一样统一分析,也就是说P99指标用处不大)
  4. 有时与业务捆绑较深,比如一个页面可能触发N次查询,当多人同时点击页面时,如果只是衡量系统侧每一个查询性能是片面的,应该从用户的角度分析,将一个session内的查询视为一个整体,用session粒度去做分析,这样服务降级也好做;

暂且不考虑技术,站在用户的角度我认为只有两点较为重要:

  1. 数据产生到实际可读整体链路(kafka,prometheus,直连)需要的时间,包含错误/重试(请求失败,过载不care)
  2. 一个用户session内的查询时延 (单次查询时延不care)

站在开发的角度则需要更为细致的指标,简单来讲如果我运营一个时序数据库系统,如何能够衡量健康情况,如何快速发现问题

  1. 数据产生到实际可读的时间消耗(包含写入kafka延迟,数据在Kafka停留时间,接收到数据整体处理流程的时延,包含总体失败重试时延)
  2. 一个用户session内查询总体时延(体现在用户感受上):失败量,平均延时,聚合分钟粒度最小成功率 ,聚合分钟粒度最大时延P99;
  3. 时间范围覆盖较小的查询请求:失败量,平均延时,聚合分钟粒度最小成功率 ,聚合分钟粒度最大时延P99;
  4. 时间范围覆盖较大的预期慢查询,所以需要感知慢查询对应的sql,时间线和数据量,要让慢查询预期的慢,不符合预期的慢时需要分析原因;

事实上这样决策的原因有这么几点:

  1. 读写差异巨大,读写的SLI设定应该分离,而且写入偶尔的失败是可预料的,频繁的告警没有意义
  2. 数据库内的写可能只是链路的一部分,我们希望跟踪全链路的写入指标
  3. 时间范围不同的查询告警指标的设定应该不是一致的
  4. 我们希望通过session做服务降级,也希望更好的理解业务层面的SLI,单独的查询分析不能cover这一场景

当然还有用于大盘数据展示集群整体趋势的监控数据指标,这个不再细谈,大体思路就是cluster,pod,account,database,account,partition,measurement级别的数据分析;kafka本身topic/partition的待commit数,生产速度,消费速度等。

当然本篇文章只讨论读写;CQ,降采样,流计算的SLI我们不讨论,但是链路和指标本身也都很有考量的余地。

总结

工作已经一年多了,从COS索引层到云原生多模数据库,愈来愈发觉监控体系和运营手段之于一个云数据库系统的重要程度,运营的能力和工具自动化也是各大厂商雄厚能力的体现,当然也是工程师综合素质提升必须要过的一关,不会运营永远不能有底气的说自己做过存储和DB。

参考:

  1. 时序时空数据库(TSDB)服务等级协议
  2. 金山云时序数据库InfluxDB服务等级协议
  3. 天翼云时序数据库Influx版服务等级协议
  4. 万字解读|怎样激活 TDengine 最高性价比?
  5. Lindorm Service Level Agreement
  6. Amazon CloudWatch Service Level Agreement
  7. CloudWatch Publish custom metrics
  8. 时序数据库TSDB服务等级协议SLA(V2.0)
  9. 腾讯云云数据库服务等级协议
  10. 云数据库 GaussDB NoSQL (GaussDB NoSQL)服务等级协议
  11. InfluxDB Cloud 2.0 Service Level Agreement
  12. InfluxDB Cloud 3.0 Dedicated Service Level Description
  13. Amazon Timestream Service Level Agreement

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

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

相关文章

202、RabbitMQ 之 使用 fanout 类型的Exchange 实现 Pub-Sub 消息模型---fanout类型就是广播类型

目录 ★ 使用 fanout 类型的Exchange 实现 Pub-Sub 消息模型代码演示:生产者:producer消费者:Consumer01消费者:Consumer02测试结果 完整代码ConnectionUtilPublisherConsumer01Consumer02pom.xml ★ 使用 fanout 类型的Exchange …

[Swift]同一个工程管理多个Target

1.准备 先创建一个测试工程“ADemo”,右键其Target选择Duplicate,再复制一个Target为“ADemo2”。 再选择TARGETS下方的“”,添加一个APP到项目中,这个命名为“BDemo”。 2、管理多个Target 可以对三个target分别导入不同的框…

iWall:支持自定义的Mac动态壁纸软件

iWall Mac是一款动态壁纸软件,它可以使用任何格式的漂亮视频(无须转换)、图片、动画、Flash、gif、swf、程序、网页、网站做为您的动态壁纸、动态桌面,并且可以进行交互。 这款软件功能多、使用简单、体积小巧、不占用资源、运行…

微信小程序引入阿里巴巴iconfont图标并使用

介绍 在小程序里,使用阿里巴巴的图标,如下所示: 使用方式 搜索自己需要的图标,然后将需要用到的图标加入购物车,如下图所示: 去右上角,点击购物车按钮;这里第一次使用,会有三个提…

Redis缓存穿透、缓存击穿、缓存雪崩详解

目录 缓存处理流程 一、缓存穿透 1、概念 2、解决办法 二、缓存击穿 1、概念 2、解决办法 三、缓存雪崩 1、概念 2、解决办法 缓存处理流程 接收到查询数据请求时,优先从缓存中查询,若缓存中有数据,则直接返回,若缓存中查不到则从…

Steam余额红锁的原因,及红锁后申诉办法

安全的余额一般是通过充值卡充值获得,再加上交易手续费再转卖给你。一般便宜不到哪去。 但你别以为余额是安全的,就万事大吉了。照样有被红锁的可能性,比如这三种: 1、Steam市场巡查机制,红锁 平台的巡查机制和原理…

在逍遥模拟器上安装LPSosed模块以及其Manager管理器

环境:win7 64位,python3.8.10,逍遥模拟器9.0.6,安卓版本9 参考我的文章: 在雷电模拟器9上安装magisk并安装LSPosed模块以及其Manager管理器(一)-CSDN博客 前置工作:先开启模拟器的…

一文讲解图像梯度

简介: ​ 图像梯度计算的是图像变化的幅度。对于图像的边缘部分,其灰度值变化较大,梯度值变化也较大;相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值变化也较小。一般情…

测试培训机构「某峰」测评调查报告

测试培训机构「某峰」测评调查报告 ⭐文章简介一、机构测评之受访者介绍二、老师傅-机构测评10问!第1问 你从哪里了解到这个培训机构?第2问 你为什么选择这家培训机构,它吸引你掏毛爷爷的点有哪些?第3问 回顾一下,从咨…

CA与区块链之数字签名详解

CA与区块链验证本质上都是数字签名,首先,我们看一下什么是数字签名! 数字签名 数字签名是公钥密码学中的一种技术,用于验证信息的完整性和发送者的身份。简而言之,数字签名是一种确认信息来源和信息完整性的手段。它通…

企业如何选择安全又稳定的文件传输协议

企业无论是内部的数据共享,还是与外部的合作交流,都需要通过网络进行文件的传输和交换。然而,文件传输它涉及到多方面的因素,例如文件的大小、数量、类型、敏感性、传输距离、网络环境等。这些因素都会影响到文件传输的各个方面&a…

“5G+北斗”赋能千行百业,中海达亮相2023中国移动全球合作伙伴大会

10月12日,2023中国移动全球合作伙伴大会在广州保利世贸博览馆召开。本次活动以“算启新程 智享未来”为主题,重点展示中国移动全球合作伙伴在5G、终端、数智城市等方面的新产品、新技术和新服务。作为中国移动“朋友圈”战略合作企业及“北斗时空子链”链…

快速自动化处理JavaScript渲染页面

在进行网络数据抓取时,许多网站使用了JavaScript来动态加载内容,这给传统的网络爬虫带来了一定的挑战。本文将介绍如何使用Selenium和ChromeDriver来实现自动化处理JavaScript渲染页面,并实现有效的数据抓取。 1、Selenium和ChromeDriver简介…

OpenWrt如何公网ssh远程连接【内网穿透】

文章目录 1.安装cpolar内网穿透2.配置SSH远程访问隧道3.公网远程连接4.固定远程连接地址 简单几步实现openWRT结合cpolar内网穿透工具实现远程ssh连接 1.安装cpolar内网穿透 cpolar是一个非常棒的跨平台、内网穿透工具,可以通过安全隧道将NAT或防火墙后面的本地服…

【Springboot】Filter 过滤器的使用

一、基本介绍 过滤器 Filter 作为 Java 三大器之一,在 Java Web 的使用中有很高的地位。所谓过滤器,就是实现了 javax.servlet.Filter 接口的服务器端程序,就是对事物进行过滤的。在 Web 中的过滤器,当然就是对请求进行过滤&#…

解决axios不发起请求的问题

一个很简单axios发起的get请求,但是network就是没有xhr记录: 找了半天也没有找到原因,后来问了chatgpt才找到原因: 请求地址url前面没有const关键字,此时url相当于undefined,而axios在url为undefined时不会…

天猫商品品牌数据采集接口,天猫商品详情数据接口,天猫API接口

天猫商品品牌数据采集方法如下: 打开天猫,进入任意一个品牌的商品页面。点击浏览器右上角的“选项”按钮,选择“检查元素”或使用快捷键CtrlShiftI(Windows)或CmdOptionI(Mac)打开开发者工具。…

JVM类装载器详解

目录 一、类装载的过程 1.1 装载(Load) 1.2 链接(Link) 1.2.1 验证(Varify) 二、类装载器组成 1. JVM 中内置了三个重要的 ClassLoader,同时按如下顺序进行加载: 2、图解 3、加载原则 所谓的双亲委派 类加载器负责在运行时将Java类动态加载到Java虚拟机&…

多关键词高亮显示

引入关键词文件&#xff0c;符合有条件的背景色高亮显示&#xff0c;也可取消。 <div id"testHtml"><p>写入的文本</p><p>关键词</p></div> var str 多个关键词&#xff0c;关键词文件&#xff0c;关键词 var strL str.replac…

nginx报错

故障1&#xff1a;nginx 502错误 故障描述 一个 post 的请求&#xff0c;直接调接口服务数据正常返回&#xff0c;但是通过 nginx 代理后&#xff0c; 什么都没有返回 nginx错误日志 upstream sent invalid chunked response while reading upstream 原因 http协议版本不一致…