의 분산 데이터베이스 방법 (뗏목 알고리즘 포함) 데이터 일관성 보장

분산 데이터베이스 관리의 데이터 일관성은 가장 중요한 핵심 기술 중 하나이지만, 또한 가장 기본적인 ACID 속성 (일관성) 데이터베이스 "일관성"을 충족하기 위해 분산 데이터베이스의 보호를 보장 할 수 있습니다. 분산 기술 개발에서, 데이터 일관성 솔루션 및 기술은 저자가 실제로 분산 데이터베이스의 데이터 일관성 및 실제 구현의 원리를 소개하는 사례 연구로 분산 데이터베이스 개발이 논문 끊임없이 진화한다.

1. 데이터 일관성

1.1 데이터 일관성 무엇입니까

기존의 관계형 데이터베이스 DBA의 사용의 대부분은 "데이터 일관성"을 참조하면 *** 반응은 테이블 업무 현장에서 데이터 일관성되었을 수 있습니다. 그러나이 문서의 "데이터 일관성은"어떻게 보증 데이터 일관성 "현장에 여러 복사본에 저장된 '데이터를 의미합니다.

1.2 어떻게 관계형 데이터베이스의 데이터 일관성을 보장하는

운영 환경에 대한 전통적인 관계형 데이터베이스 - 하드웨어 요구 사항은 예를 들어, 높은, 오라클은 사용자가 미니 + 공유 스토리지 환경 데이터베이스로 실행하는 것이 좋습니다, DB2 DPF는 빌드 하이 엔드 스토리지 서버 + 데이터베이스에보다 효율적으로 사용하는 것이 좋습니다 운영 환경. 그래서 데이터 스토리지 보안을위한 기술적 요구 사항에, 전통적인 관계형 데이터베이스는 데이터의 보안을 보호하기 위해 하드웨어 기술에 더 의존한다.

데이터 보안을 보호 하드웨어와 데이터를 관계형 데이터베이스를 기반으로하기 때문에 데이터 일관성을 고려 기본적으로 데이터를 저장하는 사용자 관계형 데이터베이스를 보호하기 위해 다양한 보안에 의해 동시에 저장되지 않습니다.

데이터 일관성을 보호하는 방법 1.3 분산 스토리지

SequoiaDB 및 HDFS : 토론 용지를 분산 저장하는 동안 주로이 같은 데이터베이스에 분산 된 대용량 데이터 제품 및 분산 파일 시스템을 의미한다.

사용자가 분산 파일 시스템의 일관성의 원리를 이해 할 때 그 차이 무엇의 데이터 저장 및 관계형 데이터베이스의 데이터 일관성에 저장된 데이터, 분산 스토리지가 필요한 이유를 먼저 이해해야합니다.

빅 데이터 기술의 탄생은 새로운 돌파구의 시스템 성능을 수 있도록해야하고, 성능 및 스토리지의 선형 성장을 얻기 위해 지원하는 하드웨어 수평 확장 방법입니다. 이들은 과거이며, 전통적인 관계형 데이터베이스가 제공 할 수 없습니다. 제공되는 과거에 비해 컴퓨팅 하드웨어 더 얻기 위해 로컬 디스크 방법을 수직 확장을 의존 또한, 빅 데이터 기술은 실행 환경이 필수 요구 사항에 대한 충분한해야 포기하지만, 대량의 저렴한 X86 서버 클러스터 +를 통해 빌드 규모에 대한 사용자 수 기능과 더 많은 저장 공간.

빅 데이터 기술의 핵심 아이디어는 여러 개의 작은 작업으로 큰 작업을 분산하고하여 전체 컴퓨팅 시스템 또는 저장 용량의 효율성을 향상 완료하는 동시 작업의 방법으로 배포됩니다. 데이터 보안 - 분산 환경에서, 인해 감소 된 하드웨어 요구 사항에 반드시 큰 데이터 제품은 또 다른 중요한 기능을 제공해야합니다.

데이터 보안을 해결하는 방법에 빅 데이터 제품이다 상대적으로 가까운, 간단한 용어, 그것은 데이터의 보안을 보호하기 위해, 여러 시스템에 저장 비동기 또는 동기 방식을 통해 데이터를 확인하는 것입니다.

주소 데이터의 기술적 인 문제 이후 보안 및 새로운 기술 문제의 도입에 분산 스토리지는 데이터 일관성의 여러 복사본을 보호하는 방법입니다. 뗏목은 SequoiaDB 여러 장에서 데이터 일관성을 보장하기 위해 알고리즘을 사용하는 것입니다 현재.

 

2.Raft 알고리즘

2.1Raft 알고리즘 배경

(가독성 분산 환경에서 합의 알고리즘은 *** Paxos 알고리즘해야하지만, 너무 모호하기 때문에, 매우 어려운, 디에고 Ongaro, 존 오스터 후트는 두 사람이 이해하기 위해 2013 년에 그렇게 달성하기 위해 ) 뗏목 목표 알고리즘 합의를 디자인했다. 뗏목 *** 알고리즘은 이해하기 쉽고 구현하기 간단한 특징이다.

2.2Raft 알고리즘 개요

그리고 Paxos의 다른, 뗏목 강조 간단,만큼 뗏목 Paxos이고 n / 2 + 1 노드는 정상적인 서비스를 제공 할 수 있습니다.

문제가 아니라 문제가 더 몇 가지 사소한 문제를 다루는 복잡 할 때, 뗏목도 분할 통치의 개념을 사용하는 것으로 알려져있다 깰 수 있습니다. 선거 (리더 선거), 로그 복제 (로그 복제), 안전 (안전) : 뗏목 알고리즘 서브 세 가지 문제를 해결에 초점을 맞추었다.

래프팅 알고리즘은 노드 리더의 기능을 강화하고, 플로워 노드 데이터에만 리더로부터 얻을 수 플로워 달성 노드 리더로 간단하게 통신을 관리 할 책임이 있으며, 데이터를 리더 동의 가압 될 수있다.

2.3Raft 알고리즘 원리

2.3.1 노드 역할

뗏목 알고리즘, 노드의 상태는 역할 세 종류, 즉 리더 (***), 팔로워 (추종자) 및 후보자 (후보자)으로 구분된다.

리더, 클라이언트의 요청을 처리에 대한 책임, 책임 추종자 로그에 동기화 및 하트 비트 추종자 사이의 접촉을 보장하기 위해;

추종자, 클러스터가 막 시작했을 때, 모든 노드가 추종자 상태이며, 그 작업은 주로 로그 동기화 요청, 응답 후보의 요청의 리더에 따라, 트랜잭션 추종자 리더로 요청을 전달하는 요청에;

후보, 선거 투표를 담당하는 리더 선출 리더, 상태 후보 상태에서 리더 노드입니다.

2.3.2 약관

분산 환경에서, "시간 동기화는"지속적인 기술적 인 문제가되고있다. 뗏목이 문제를 해결하기 위해 용어로 한 시간은 데이터 일관성의 다른 기간 다루는 ( "논리 시간"으로 이해 될 수있다).

이용 약관은 다음과 같은 원칙을 가지고

  • 각각의 기간은, 대부분의 리더에있다
  • 특정 기간이, 선거 패배로 인해이 존재할 수, 상황은 더 리더는 없다
  • 각 노드는 자신의 지역 currentTerm을 유지
  • 각 용어는 연속적으로 증가하고있다
  • 다른 번호 시간보다 추종자 추종자 기간 기간 번호가 숫자가 추종자 기간 기간 번호를 업데이트 할 경우 다른 숫자 추종자 기간과 일치해야합니다.

2.3.3 선거

각 노드의 타이머 트리거 시간에 의해 트리거 뗏목 선거는 동일하지 않습니다.

모든 노드는 타이머 화재 선거 기간 번호 증가 및 추종자 노드의 상태가 후보를 돌렸다 상태 추종자의 시작에 있고, 시작 RequestVote RPC (투표에 대한 원격 프로 시저 호출 프로토콜 요청) 다른 노드는 요청에, 어떤 일어날 수있는 선거 세 가지 종류가있다 :

발신 노드는 후보 노드 리더 주에 지도자의 정상 상태를 유지하기 위해 다른 노드에 하트 비트를 전송 RequestVote 투표 노드 (n) / 2 + 1 (대부분), 수신

如果收到投票请求后,该节点发现发起投票的节点Term大于自己,则该节点状态从Candidate转为Follower,否则保持Candidate状态,并且拒绝该投票请求

选举期间发生了超时,则Term编号递增,重新发起选举.

2.3.4 日志复制

日志复制主要的作用就是用来保证节点的数据一致性与高可用性。

当Leader被选举出来后,所有的事务操作都必须要经过Leader处理。这些事务操作成功后,将会被按顺序写入到LOG中,每个LOG都包含一个index编号。

Leader在LOG发生变化后,通过HeartBeat将新的LOG同步到Follower上,Follower在接收到LOG后,再向Leader发送ACK信息,当Leader接到大多数(2/n+1)Follower的ACK信息后,将该LOG设置为已提交,并且Leader将LOG追加到本地磁盘中。

同时Leader将在下一个HeartBeat中,通知所有的Follower将该LOG存储在各自的本地磁盘中。

2.3.5 安全性

安全性是用于确保每个节点都是按照相同的日志序列进行执行的安全机制。

如果当某个Follower在同步Leader的日志时失败,但是未来该Follower又可能被选举为Leader时,就有可能导致前一个Leader已经commit的日志发生覆盖,这样就导致了节点执行不同序列的日志。

Raft的安全性就是用于保证选举出来的Leader一定包含先前已经commit LOG 的机制,主要遵循的原则如下:

每个Term 只能选举一个Leader;

Leader的日志完整性,则当Candidate重新选举Leader时,新的Leader必须要包含先前已经commit的LOG;

Candidate在选举新的Leader时,使用Term来保证LOG的完整。

3.分布式数据库数据一致性技术实现

以国产原厂的分布式数据库SequoiaDB为例,SequoiaDB在多副本的部署中,采用Raft算法保证数据在多副本环境中保持一致。

SequoiaDB集群中,总共包含3中角色节点,分别是协调节点、编目节点和数据节点。由于协调节点本身不存任何数据,所以只有编目节点和数据节点存在事务操作,换言之,编目分区组和数据分区组的副本同步采用Raft算法保证数据一致性。

更多的详见:https://database.51cto.com/art/201710/554743.htm

发布了120 篇原创文章 · 获赞 24 · 访问量 6万+

추천

출처blog.csdn.net/woainilixuhao/article/details/104440279