TDengine高可用探讨

2024-04-23 17:28
文章标签 可用 探讨 tdengine

本文主要是介绍TDengine高可用探讨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提到数据库,不可避免的要考虑高可用HA(High Availability)。但是很多人对高可用的理解并不是很透彻。

要搞清高可用需要回答以下几个问题:

  • 什么是高可用?
  • 为什么需要高可用?
  • 高可用需要达到什么样的目标?
  • 如何做到高可用?

什么是高可用?

高可用(HA)

高可用通常是指在单个组件出现故障时,整个系统仍可以对外提供服务。因此高可用主要还是针对一个系统而言,而非单独的一个组件(这点非常重要)。

我们通常用一段时间内系统可用时间占比作为高可用的衡量指标。

计算方式如下:

MTBF(Mean Time Between Failure),系统平均正常运行时间
MTTR(Mean Time to Repair),系统平均恢复时间

可用性的计算公式: AVAILABILITY = MTBF / ( MTBF + MTTR ) × 100%

如可用性 99.9%,就意味着该系统在连续运行1年时间里最多可能的业务中断时间是8.76小时【(1-99.9%) x 365 x 24】。

通常提到的可用性指标与允许业务中断时间(1年)如下:

可用性指标允许中断时间
99%3.65天
99.9%8.76小时
99.99%52.6分钟
99.999%5.26分钟

提到高可用,不可避免要提到RTO和RPO(这两个也是灾备方案的关键指标),高可用方案的选择要基于RTO和RPO。

RTO

RTO,Recovery time objective,恢复时间目标,是指所能容忍的业务系统停止服务的最长时间,也就是灾难发生到业务系统恢复服务功能所需要的最短时间。

RPO

RPO,Recovery point objective,恢复点目标,是指业务系统所能容忍的数据丢失量。

为什么需要高可用?

这个问题最好回答:为了提供持续服务。

但是你的系统真的需要提供持续服务吗?如果服务中断会带来哪些损失呢?

高可用需要达到什么样的目标?

在高可用概念中我们提到了高可用的衡量标准,那么对于一套系统,什么样的标准才是合理的呢?3个9还是4个9?

这需要平衡三个方面:服务中断的损失、方案的预算、技术的可行性。

如何判断标准是否合理?其实只有一个判断条件,预算。

没有预算,什么都是扯淡。

有了预算,那么才能考虑下一步,采用什么高可用方案。

如何做到高可用

在概念中我们提到,高可用是为了保障组件遇到故障时仍可以提供服务。

那么我们需要对故障进行总和分析,对症下药。

数据库故障分类

通常数据库故障可以分为以下几类:

  • 硬件故障
  • 软件故障
  • 误操作
硬件故障

硬件故障时最常见的故障,诸如:网络中断、磁盘损坏、服务器断电等。针对不同的故障,也有成形的解决方案:

  • 网络故障–网络设备冗余、多链路、bond
  • 磁盘损坏–分布式、RAID
  • 服务器断电–UPS、双电源
  • 机房爆炸–异地灾备
  • 世界毁灭–拜菩萨
软件故障

软件故障通常被忽略,但是也是最棘手的。数据库软件遇到bug,很难通过其他手段快速恢复。

误操作

这类故障时最难防范的。通常需要技术外的手段进行防范,如:安全培训、双人操作、方案审核等。

高可用方案

不管多么高大上的高可用方案,归根到底只有一个方法:冗余。

因此高可用方案都绕不过两个问题:

  • 故障发生时,如何快速在冗余系统间切换?切换时间决定了RTO。
  • 冗余系统间数据如何保持一致?数据差异决定了RPO。

常见的数据库高可用方案可以分为四种:

  1. 共享存储
    2个或2个以上服务器使用同一个存储(Oracle就是这样实现的),这样就保证了数据的一致性,但是想保证高可用,需要数据库软件支持两个数据库节点通知读写1个存储,否则只能实现主备,RTO会很长。
  2. 操作系统级别文件复制
    共享存储通常需要磁盘阵列来实现,增加了方案整体成本。如果没有磁盘阵列,可以采用折中的方法,使用复制软件(scp/rsync/bbcp)保证服务器间数据的一致性。但这样带来的问题是无法保证两个服务器之前的数据同步的实时性和一致性(一致性可以通过文件校验来实现,但会降低实时性)。
  3. 数据库级别数据复制
    相较于操作系统基本的文件复制,数据库级别的文件复制(如Oracle ADG)更加安全和高效,能够更好的保证数据的一致性,但是同样实时性是一个挑战。
  4. 数据库集群/分布式数据库
    这种方式是数据库软件自身实现的,在保证数据一致性和实时性方面都较以上方案都更高效。但对数据库软件自身的设计也要求更高。

需要注意的是以上所有方案都是用来应对硬件故障,遇到软件故障或误操作通常无能为力。

TDengine高可用探讨

TDengine 通过多节点和多副本来提供整个数据库系统可用性。这个方案有如下特点:

  • 任何1个节点故障(硬件故障、操作系统故障等非数据库软件故障)时,整个系统仍可以对外提供服务,且数据不会有任何损失。RPO=0
  • 任何1个节点故障时,对客户端几乎时无感知的。RTO=0

以上方案可以应对硬件故障、操作系统故障(也不是绝对),但是当网络故障或数据库软件自身出bug时就无能为力了。

那么应该采用什么方案才能提高可用性呢?

冗余,增加冗余!!
在这里插入图片描述

  1. 部署2套TDengine集群,集群间进行数据同步。
  2. 前端部署负载均衡集群,当节点或集群故障时进行切换。

这个方案存在以下优缺点:

优点:

  1. 同步部署两套集群,可以规避绝大部分硬件故障。如果异地部署,设置可以规避机房级别的故障。
  2. 所有访问通过负载均衡进行反向代理,节点故障/集群切换时,对应用而言无需做任何变更,甚至是无感知的。

缺点:

  1. 目前可以使用订阅来实现数据的单向同步,但无法实现双向。因此当由集群1切换到集群2后,需要手动修改订阅,才能保证两个集群间数据一致。
  2. 集群切换时,Nginx需要手动修改配置。切换过程会造成短时间应用访问异常。
  3. 预算高。

这篇关于TDengine高可用探讨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/929432

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

什么是 TDengine?

TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。 1.高性能         充分利用时序大数据的特点,TDengine 设计了新颖的存

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

VMware8实现高可用(HA)集群

陈科肇 =========== 操作系统:中标麒麟高级操作系统V6 x86-64 实现软件:中标麒麟高可用集群软件 ======================== 1.环境的规划与配置 硬件要求 服务器服务器至少需要 2 台,每台服务器至少需要 2 块网卡以做心跳与连接公网使用存储环境 建议使用一台 SAN/NAS/ISCSI 存储作为数据共享存储空间 软

用Cri-O,Sealos CLI,Kubeadm方式部署K8s高可用集群

3.6 Cri-O方式部署K8s集群 注意:基于Kubernetes基础环境 3.6.1 所有节点安装配置cri-o [root@k8s-all ~]# VERSION=1.28[root@k8s-all ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensu

一台电脑对应一个IP地址吗?‌探讨两台电脑共用IP的可能性

在当今数字化时代,‌IP地址作为网络世界中的“门牌号”,‌扮演着至关重要的角色。‌它负责在网络上唯一标识每一台设备,‌使得数据能够在庞大的互联网中准确无误地传输。‌然而,‌对于IP地址与电脑之间的对应关系,‌许多人可能存有疑惑:‌一台电脑是否必须对应一个IP地址?‌两台电脑又是否可以共用一个IP地址呢?‌本文将深入探讨这些问题,‌带您一窥IP地址背后的奥秘。‌ 一台电脑对应一个IP地址吗?‌

Kubernetes高可用集群搭建(kubeadm)

1 Kubernetes高可用集群介绍 前面已经介绍了Kubernetes的集群部署,但是都只是介绍的单master节点的情况,由于单master节点的可靠性不高,不适合实际的生产环境,此处介绍如何实现多master节点的高可用集群的搭建。 2 安装要求 一台或多台机器,操作系统CentOS7.x-x86_64硬件配置:2G或更多ARM,2个CPU或更多CPU,硬盘20G及以上集群中所有机器

# 高可用的并发解决方案nginx+keepalived(一)

高可用的并发解决方案nginx+keepalived(一) 段子手 一、课程计划介绍 1、课程标题 为并发量高的优质网站量身定制高可用的并发解决方案 nginx+keepalived。 2、引导语 在这个互联网飞速发展的时代,人们已经离不开网络,其中网购最为常见。在家网购,上班路上网购,吃饭也购物,下班还网购,2017年双十一天猫支付峰值达到了25.6万笔/秒。热点网站中频繁出现的大量

使用Python控制Excel应用:打开与关闭工作簿的技术性探讨

目录 引言 一、安装必要的库 1. xlwings 2. openpyxl 二、使用xlwings打开和关闭Excel工作簿 2.1 启动和退出Excel 2.2 打开和关闭工作簿 2.3 创建新工作簿 三、使用openpyxl打开和关闭Excel工作簿 3.1 打开工作簿 3.2 保存和关闭工作簿 四、案例分析 4.1 读取Excel文件中的数据 4.2 写入数据到E