成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關(guān)于分布式系統(tǒng)的數(shù)據(jù)一致性問題(一)

大數(shù)據(jù) 分布式
正好遇到一個博友,咨詢了一個問題,這個問題正好可以作為分布式系統(tǒng)的數(shù)據(jù)一致性的簡單例子,當然,這個只是比較簡單的情況。

 現(xiàn)在先拋出問題,假設(shè)有一個主數(shù)據(jù)中心在北京M,然后有成都A,上海B兩個地方數(shù)據(jù)中心,現(xiàn)在的問題是,假設(shè)成都上海各自的數(shù)據(jù)中心有記錄變更,需要先同步到主數(shù)據(jù)中心,主數(shù)據(jù)中心更新完成之后,在把最新的數(shù)據(jù)分發(fā)到上海,成都的地方數(shù)據(jù)中心A,地方數(shù)據(jù)中心更新數(shù)據(jù),保持和主數(shù)據(jù)中心一致性(數(shù)據(jù)庫結(jié)構(gòu)完全一致)。數(shù)據(jù)更新的消息是通過一臺中心的MQ進行轉(zhuǎn)發(fā)。

 

 

先把問題簡單化處理,假設(shè)A增加一條記錄Message_A,發(fā)送到M,B增加一條記錄 MESSAGE_B發(fā)送到M,都是通過MQ服務(wù)器進行轉(zhuǎn)發(fā),那么M系統(tǒng)接收到條消息,增加兩條數(shù)據(jù),那么M在把增加的消息群發(fā)給A,B,A和B找到自己缺失的數(shù)據(jù),更新數(shù)據(jù)庫。這樣就完成了一個數(shù)據(jù)的同步。

 

從正常情況下來看,都沒有問題,邏輯完全合理,但是請考慮以下三個問題

1 如何保證A->M的消息,M一定接收到了,同樣,如何保證M->A的消息,M一定接收到了

2 如果數(shù)據(jù)需要一致性更新,比如A發(fā)送了三條消息給M,M要么全部保存,要么全部不保存,不能夠只保存其中的幾條記錄。我們假設(shè)更新的數(shù)據(jù)是一條條發(fā)送的。

3 假設(shè)同時A發(fā)送了多條更新請求,如何保證順序性要求?

這兩個問題就是分布式環(huán)境下數(shù)據(jù)一致性的問題

對于第一個問題,比較好解決,我們先看看一個tcp/ip協(xié)議鏈接建立的過程

我們的思路可以從這個上面出發(fā),在簡化一下,就一個請求,一個應(yīng)答。

簡單的通信模型是這樣的

A->M : 你收到我的一條消息沒有,消息的ID是12345

M->A:  我收到了你的一條消息數(shù)據(jù),消息數(shù)據(jù)是ID;12345

這樣就一個請求,一個應(yīng)答,就完成了一次可靠性的傳輸。如果A一致沒有收到M的應(yīng)答,就不斷的重試。這個時候M就必須保證冪等性。不能重復(fù)的處理消息。那么最極端的情況是,怎么也收不到M的應(yīng)答,這個時候是系統(tǒng)故障。自己檢查一下吧。

這么設(shè)計就要求,A在發(fā)送消息的時候持久化這個消息的數(shù)據(jù)內(nèi)容,然后不斷的重試,一旦接收到M的應(yīng)答,就刪除這條消息。同樣,M端也是一樣的。不要相信MQ的持久化機制,不是很靠譜的。

那么M給A發(fā)送消息也采取類似的原理就可以了。

下面在看看第二個問題,如何保持數(shù)據(jù)的一致性更新,這個還是可以參考TCP/IP的協(xié)議。

首先A發(fā)送一條消息給M:我要發(fā)送一批消息數(shù)據(jù)給你,批次號是10000,數(shù)據(jù)是5條。

M發(fā)送一條消息給A:ok,我準備好了,批次號是10000,發(fā)送方你A

接著A發(fā)送5條消息給M,消息ID分別為1,2,3,4,5 ,批次號是10000,

緊接著,A發(fā)送一個信息給M:我已經(jīng)完成5小消息的發(fā)送,你要提交數(shù)據(jù)更新了

接下來可能發(fā)送兩種情況

1 那么M發(fā)送消息給A:ok,我收到了5條消息,開始提交數(shù)據(jù)

2 那么M也可以發(fā)送給A:我收到了5條消息,但是還缺少,請你重新發(fā)送,那么A就繼續(xù)發(fā)送,直到A收到M成功的應(yīng)答。

整個過程相當復(fù)雜。這個也就是數(shù)據(jù)一旦分布了,帶來最大的問題就是數(shù)據(jù)一致性的問題。這個成本非常高。

對于第三個問題,這個就比較復(fù)雜了

這個最核心的問題就是消息的順序性,我們只能在每個消息發(fā)一個消息的序列號,但是還是沒有最好解決這個問題的辦法。因為消息接收方不知道順序。因為即使給他了序列號,也沒有辦法告訴他,這個應(yīng)該何時處理。最好的辦法是在第二種方式的基礎(chǔ)作為一個批次來更新。

這個只是以最簡單的例子來說明一下分布式系統(tǒng)的要保證數(shù)據(jù)一致性是一件代價很大的事情。當然有的博主會說,這個何必這么復(fù)雜,直接數(shù)據(jù)庫同步不就可以了。這個例子當然是沒有問題的,萬一這個幾個庫的模型都不一樣,我發(fā)送消息要處理的事情不一樣的。怎么辦?

原文鏈接:http://www.cnblogs.com/aigongsi/archive/2012/09/21/2696773.html

【編輯推薦】

 

責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2016-11-29 09:00:19

分布式數(shù)據(jù)一致性CAS

2020-05-07 11:58:07

分布式系統(tǒng)架構(gòu)

2024-05-30 07:00:51

2017-10-30 10:24:03

存儲系統(tǒng)數(shù)據(jù)

2025-03-27 03:00:00

2023-10-26 09:23:24

分布式架構(gòu)

2017-09-21 10:59:36

分布式系統(tǒng)線性一致性測試

2021-07-28 08:39:25

分布式架構(gòu)系統(tǒng)

2017-09-04 14:46:10

分布式事務(wù)問題

2022-06-21 21:47:13

數(shù)據(jù)系統(tǒng)

2019-10-11 23:27:19

分布式一致性算法開發(fā)

2021-11-22 16:30:30

分布式一致性分布式系統(tǒng)

2023-08-01 07:42:33

Redis數(shù)據(jù)項目

2021-11-01 21:15:54

微服務(wù)系統(tǒng)數(shù)據(jù)

2017-10-19 18:37:57

數(shù)據(jù)庫分布式數(shù)據(jù)庫一致性原理

2024-04-11 13:45:14

Redis數(shù)據(jù)庫緩存

2019-09-05 08:43:34

微服務(wù)分布式一致性數(shù)據(jù)共享

2017-09-22 12:08:01

數(shù)據(jù)庫分布式系統(tǒng)互聯(lián)網(wǎng)

2022-05-31 08:37:59

RedisMySQL數(shù)據(jù)一致性

2018-03-19 09:50:50

分布式存儲系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美一区免费在线观看 | 电影午夜精品一区二区三区 | 国产日产精品一区二区三区四区 | 亚洲一区二区三区四区五区中文 | 成人影院网站ww555久久精品 | 成人在线一区二区三区 | 亚洲成人在线视频播放 | 一区二区成人在线 | 国产精品视频在线播放 | 国产综合av| 中文字幕在线第一页 | 国产人久久人人人人爽 | 秋霞国产 | 日韩网站在线观看 | 久久一区二区三区四区 | 亚洲精品68久久久一区 | 青青艹在线视频 | 91精品久久久久久久久 | 凹凸日日摸日日碰夜夜 | 国产精品日韩欧美一区二区 | 久久久国产一区 | 成人免费黄色片 | 精品国产一区二区三区久久久蜜月 | 日本免费一区二区三区 | 国产欧美精品一区二区色综合朱莉 | 国产一区高清 | 亚洲成人av | 一级看片免费视频囗交动图 | 久久综合九九 | 亚洲一区精品视频 | 欧美在线一区二区三区 | 久久久久久久久久爱 | 在线看成人av | 在线国产99| 国产成人在线播放 | 综合久久国产 | 久久久青草婷婷精品综合日韩 | 天堂久 | 国产精品99久久久久久动医院 | 成人午夜看片 | 综合一区|