TiDB实战篇-常用的高可用架构

news/2024/5/19 13:34:58 标签: tidb

简介

TiDB实战篇-常用的高可用架构。

高可用要考虑的问题

同城三中心 

 RTO<35秒 RPO=0(因为一个数据中心挂点了,还有其他两个可以提供服务)

(优点)数据副本不能在同一个数据中心(raft多数存活)(PD的label标签能够解决这个问题)。

(缺点)每次写入的数据复制都要垮数据中心。

(缺点)读取数据时,可能用户连接的TiDB Server和要获取数据的Leader不在同一个数据中心,这时候就要垮数据中心读取数据,(因为默认只有Region的Leader才能够提供数据的读取服务)。

(缺点)在获取TSO的时候,如果作为Leader的PD和TiDB Server不在一个数据中心,那么也是有比较大的性能损耗。

优化

优化:所有的Region的Leader和PD的Leader都存储在一个数据中心中。 

(优点)读取数据得到了优化,但是写数据的时候还是不能够缓解(多数派同意才能够写入成功)。

(缺点)TiDB Server形成单点,压力大。

同城两中心

架构

Regine的角色有voter(可以被选举中leader),follower(能够参与投票但是不能够成为leader),leaner(只是复制数据,不能够参与投票,也不能够成为leader) 。

效果如下

注意点 

上面的架构,第一个数据中心按正常情况基本事务都会在数据中心一提交,如果数据中心一宕机了,数据中心二就会有数据的延迟,这里就有一个commit group(replication-mode = SYNC)的概念,可以设置有多少个voter成功了才提交。

怎么保证RPO为零

wait-store-timeout = 60s也就是上面commit group(replication-mode = SYNC)如果数据中心2挂了,因为配置了commit group(replication-mode = SYNC),那么这个时候因为要所有的voter执行成功才行,wait-store-timeout这个就是等待数据同步的超时时间。如果想继续服务可用,那么配置commit group(replication-mode = ASYNC)。如果数据中心二起来了以后那么设置commit group(replication-mode = SYNC)。如果数据中心的Leader挂了,那么还是能够保证RPO为零,因为设置commit group(replication-mode = SYNC)的效果是,可用的节点的数据都能够同步一致,数据才算提交成功。数据中心一挂一台,它还是能够保证数据中心一的新Leader和数据中心二的voter数据保证一致,那么就能够提交成功

简单点说就是如果灾备中心出问题进入commit group(replication-mode = ASYNC)模式,当数据好了以后切入commit group(replication-mode = SYNC)的过程中,如果数据中心一的Leader挂了,灾备中心就会有数据落后。

两地三中心

架构

问题

异步复制

 

集群升级方案

 

 


http://www.niftyadmin.cn/n/258987.html

相关文章

【Android车载系列】第10章 系统服务-SystemServer源码分析(API28)

1 SystemServer启动 &emps;&emps;SystemServer进程启动&#xff0c;首先从SystemServer.java文件的main()方法开始。 290 /** 291 * The main entry point from zygote. 292 */ 293 public static void main(String[] args) { 294 new SystemSe…

数据结构(顺序结构、链式结构、索引结构、散列结构)

文章目录 1.概述2.数据间逻辑关系3.数据的存储结构&#xff08;或物理结构&#xff09;3.1顺序结构3.2链式结构3.3索引结构3.4散列结构 4.运算结构 1.概述 数据结构&#xff0c;就是一种程序设计优化的方法论&#xff0c;研究数据的逻辑结构和物理结构以及它们之间相互关系&am…

【C++】C++中的类型转化

说起类型转化&#xff0c;我们在C语言之前的学习中可以了解到&#xff0c;类型转换可以分为两种情况&#xff1a;隐式类型转化&#xff1b;显示类型转化。但是为什么在c中还要继续对类型转化做文章呢&#xff1f;我们一起来看&#xff1a; 目录 1. C语言中的类型转换 2. C强制…

自动驾驶方案及相关对标

华为&#xff1a; 2021年4月18日&#xff0c;在华为智能汽车解决方案BU新品发布会上&#xff0c;华为智能汽车解决方案BU总裁王军表示&#xff0c;华为要持续加大对汽车行业的投入&#xff0c;今年在研发上的投资将达到10亿美元&#xff0c;未来每年保持30%左右增长&#xff0…

【C++】你知道为什么在写C++代码之前要在开头写上using namespace std吗?

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

到底什么是JS的promise?

一、promise的作用 promise用于异步调用&#xff0c;当你需要使用异步嵌套的时候&#xff0c;可以使用promise去简化代码&#xff0c;而不是在ajax或者fetch请求中&#xff0c;再重复写多个请求甚至更多的嵌套异步请求。 二、promise的使用 在promise中可以传入一个函数&…

computed和watch

computed: 写法&#xff1a; import {computed} from vue setup(){ --- //计算属性—简写 let fullName computed(()>{ return person.firstName - person. lastName}) //计算属性-完整 let fullName computed({ get(){ return person.firstName - person. lastName},…

9.Kafka系列之设计思想(七)-配额

4.9 Quotas配额 Kafka cluster has the ability to enforce quotas on requests to control the broker resources used by clients. Two types of client quotas can be enforced by Kafka brokers for each group of clients sharing a quota: Kafka 集群能够对请求强制执行…