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

news2024/11/19 20:46:02

在这里插入图片描述本作品采用知识共享署名-非商业性使用-相同方式共享 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.coloradmin.cn/o/1095006.html

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

相关文章

SpringAOP是什么?为什么要有SpringAOP?

SpringAOP是什么?为什么要有SpringAOP? 原文:SpringAOP是什么?为什么要有SpringAOP? 一、有SpringAOP之前 简单的开发场景,只需要写简单的业务逻辑,比如CRUD 但是在执行具体的逻辑之前&…

【论文精读】NMP: End-to-end Interpretable Neural Motion Planner

toc 1 背景信息 团队:Uber,多伦大大学 年份:2019 论文链接:https://arxiv.org/abs/2101.06679 2 Motivation 深度学习方案受限于累积误差suffers from the compounding error,而且可解释性差interpretability is d…

如何设计一个ToC的弹窗

本文主要分享了如何设计一个具有高可扩展性的弹窗功能。 本设计参考了优惠券功能的设计思路,有兴趣的朋友可以看看优惠券的分享:如何设计一个可扩展的优惠券功能_java优惠券系统设计-CSDN博客 一、需求介绍 假如你的项目需要实现以下弹窗,…

排序算法-合并排序法(MergeSort)

排序算法-合并排序法(MergeSort) 1、说明 合并排序法(MergeSort)是针对已排序好的两个或两个以上的数列(或数据文件),通过合并的方式将其组合成一个大的且已排好序的数列(或数据文…

debian9换源存在的问题

今天租借了云服务器搭建了debian9,给apt-get换源过程中出现了很多问题,主要有两个问题: 问题1: sudo apt-get update 0% [Working]问题2: W: The repository http://mirrors.aliyun.com/debian stretch Release doe…

软考网工选择题易错总结(2020下~2022下)

目录 2020下半年 2021上半年 2021年下半年 2022上半年 2022下半年 2020下半年 15、在卫星通信中,通常采用的差错控制机制为(15)。 A.停等 ARQ B.后退 N 帧 ARQ C.选择重发 ARQ D.最大限额 ARQ 答案&#xff1…

Golang基础学习笔记

Golang基础学习笔记 1、下载安装 1.1、下载 Golang下载地址:https://golang.google.cn/dl/ 1.2、安装 1.3、环境变量 # GOPATH D:\GolandProjects# GOPROXY https://mirrors.aliyun.com/goproxy# 启用Go模块支持 go env -w GO111MODULEon1.5、验证安装/配置 1.…

Premiere pro

操作 1.音乐淡入淡出 窗口 效果 音频过度 交叉淡化 指数淡化 拖动到首尾音频上2.手机视频序列设置 3.视频转场淡入淡出 选中视频 在视频连接处 交叉溶解

家居行业如何打破获客困局?2023重庆建博会现场,智哪儿AI营销第一课给出了答案

10月12日-14日,2023中国(重庆)建筑及装饰材料博览会(简称:2023中国重庆建博会)正在重庆国际博览中心如火如荼地进行。「智哪儿」携手2023中国重庆建博会主办方共同主办的《2023家居行业AI营销第一课&#x…

【quartus13.1/Verilog】swjtu西南交大:计组课程设计

实验目的: 通过学习简单的指令系统及其各指令的操作流程,用 Verilog HDL 语言实 现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简 化的计算机核心部件组成的系统。 二. 实验内容 1. 底层用 Verilog…

推荐《金田一少年事件簿》

天树征丸原作,佐藤文也作画的漫画 金田一少年事件簿 播报编辑讨论7上传视频 《金田一少年事件簿》是一部日本推理漫画。早期原作为金成阳三郎(后担任剧本),原作为天树征丸(前原案),由漫画家佐…

【Python小项目之Tkinter应用】【实用工具】实现手写签名器,可选线条粗细,支持清空、撤销、恢复功能,可将写好的签名保存成图片

文章目录 前言一、实现思路二、关键代码三、完整代码总结同系列项目文章:前言 老规矩,先看效果: 在手写签名窗口中,用户可以选择线条粗细来签名,点击清空按钮可以清空画布,点击撤销按钮可以撤销一笔,点击恢复按钮可以撤销上一步进行的清空或撤销操作,点击保存按钮可以…

java案例RSA分段加密解密,签名验签,公钥加密私钥解密,私钥加密公钥解密,解密乱码怎么解决

一. 原理 非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只…

Docker基础操作命令演示

Docker中的常见命令,可以参考官方文档:https://docs.docker.com/engine/reference/commandline/cli/ 1、常见命令介绍 其中,比较常见的命令有: 命令说明文档地址docker pull拉取镜像docker pulldocker push推送镜像到DockerReg…

Googleplay近期大量开发者二次验证问题与解决思路

近期谷歌play更新风控,开发者需要进行二次验证。9月份后大部分的开发者账号不论新老大部分都触发了二次验证风控,笔者目前整理了两个方向的解决方案。 老账号目前解决方案可以通过上传护照、身份证明、驾驶证或者租赁合同、水电费账单、信用卡账单、电话…

了解华为交换机路由器的基本命令

什么是CLI:使用户与设备交互的界面,用户输入对应的命令,设备会回复我们输入的内容,回车车后设备会执行对应命令,达到管理、配置、查看的目的。 CLI界面分为三种操作视图: 用户试图:设备登陆后…

基于阿基米德优化优化的BP神经网络(分类应用) - 附代码

基于阿基米德优化优化的BP神经网络(分类应用) - 附代码 文章目录 基于阿基米德优化优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.阿基米德优化优化BP神经网络3.1 BP神经网络参数设置3.2 阿基米德优化算…

Java代码获取当天最晚时间写入数据库自动变为下一天的00:00:00

背景 有个需求要求将用户上传的年/月/日格式时间转为当天最晚时间23:59:59,例如上传2023/10/15,转换为2023/10/15 23:59:59,并将其存入数据库,数据库字段类型为datetime。 部分代码如下: public static Date getEndO…

游戏设计模式专栏(九):用装饰模式定制化游戏元素

点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 装饰模式是一种结构性设…

Qt6开发的网络通信工具(支持TCP和UDP)

1. 页面展示 1.2 通信展示 1.2.1 UDP 通信显示 注意:前面的R表示时接收消息,S表示的是发送消息。 1.2.2 TCP通信显示 注:勾选服务器后,出现客户端连接列表,可以群发消息和私发消息。 3. 程序下载 应用程序免费下载&a…