大數據技術原理與應用-林子雨課後(部分習題答案)

第一章
2.試述數據產生經歷的幾個階段
答:3個階段
1.運營式系統階段
人類社會最早大規模管理和使用數據,是從數據庫的誕生開始的。大型零售超市銷售系統、銀行交韓系統、股市交易系統、醫院醫療系統、企業客戶管理系統等大量運營式系統,都是建立在數據庫基礎之上的,數據庫中保存了大量結構化的企業關鍵信息,用來滿足企業各種業務需求,在這個階段,數據的產生方式是被動的,只有當實際的企業業務發生時,纔會產生新的記錄並存人數據庫。比如,對於股市交易系統而言,只有當發生一筆股票交易時,纔會有相關記錄生成。
2. 用戶原創內容階段
互聯網的出現,使得數據傳播更加快捷,不需要藉助於磁盤、磁帶等物理存儲介質傳播數據,網頁的出現進一步加速了大量網絡內容的產生,從而使得人類社會數據量開始呈現“井噴式”增長。但是,互聯網真正的數據爆發產生於以“用戶原創內容"爲特徵的Web 2.0時代。Web 1.0時代主要以門戶網站爲代表,強調內容的組織與提供,大量上網用戶本身並不參與內容的產生。而Web 2.0技術以Wiki.博客、微博、微信等自服務模式爲主,強調自服務,大量上網用戶本身就是內容的生成者,尤其是隨着移動互聯網和智能手機終端的普及,人們更是可以隨時隨地使用手機發微博、傳照片,數據量開始急劇增加。
3.感知式系統階段
物聯網的發展最終導致了人類社會數據量的第三次躍升。 物聯網中包含大量傳感器,如溫度作感烈。福度傳感器、壓力傳感器、位移傳感器、光電傳感器等, 此外, 視頻監控攝像頭也是物聯網的重要組成部分,物聯網中的這些設備, 每時每刻都在自動產生大量數據,與Web 2.0時代數據,使得人類社會迅速步人“大數據時代”。的人工教據產生方式相比,物聯網中的自動數據產生方式,將在超時間內生成更密集、更大量的數據,使得人類社會迅速進入“大數據時代”。
3.試述大數據的4個基本特徵
答:數據量大、數據類型繁多、處理速度快和價值密度低。
5.數據研究經歷了哪4個階段?
答:人類自古以來在科學研究上先後歷經了實驗、理論、計算、和數據四種範式。

8.舉例說明大數據的基本應用
答:
領域:大數據的應用
金融行業:大數據在高頻交易、社區情緒分析和信貸風險分析三大金融創新領域發揮重要作用。
汽車行業:利用大數據和物聯網技術的五人駕駛汽車,在不遠的未來將走進我們的日常生活
互聯網行業:藉助於大數據技術,可以分析客戶行爲,進行商品推薦和有針對性廣告投放
個人生活:大數據還可以應用於個人生活,利用與每個人相關聯的“個人大數據”,分析個人生活行爲習慣,爲其提供更加周全的個性化服務。

9.舉例說明大數據的關鍵技術
答:批處理計算,流計算,圖計算,查詢分析計算

11.定義並解釋以下術語:雲計算、物聯網
答:
雲計算:
雲計算就是實現了通過網絡提供可伸縮的、廉價的分佈式計算機能力,用戶只需要在具備網絡接入條件的地方,就可以隨時隨地獲得所需的各種IT資源。
物聯網:
物物相連的互聯網,是互聯網的延伸,它利用局部網絡或互聯網等通信技術把傳感器、控制器、機器、人類和物等通過新的方式連在一起,形成人與物、物與物相連,實現信息化和遠程管理控制。

12.詳細闡述大數據、雲計算和物聯網三者之間的區別與聯繫。
答:
大數據、雲計算和物聯網的區別:
大數據側重於海量數據的存儲、處理與分析,海量數據中發現價值,服務於生產和生活;雲計算本質上皆在整合和優化各種IT資源並通過網絡已服務的方法,廉價地提供給用戶;物聯網的發展目標是實現物物相連,應用創新是物聯網的核心

大數據、雲計算和物聯網的聯繫:
從整體來看,大數據、雲計算和物聯網這三者是相輔相成的。大數據根植於雲計算,大數據分析的很多技術都來自於雲計算,雲計算的分佈式存儲和管理系統提供了海量數據的存儲和管理能力,沒有這些雲計算技術作爲支撐,大數據分析就無從談起。物聯網的傳感器源源不斷的產生大量數據,構成了大數據的重要數據來源,物聯網需要藉助於雲計算和大數據技術,實現物聯網大數據的存儲、分析和處理。

第二章
1.試述hadoop和谷歌的mapreduce、gfs等技術之間的關係
答:Hadoop的核心是分佈式文件系統HDFS和MapReduce,HDFS是谷歌文件系統GFS的開源實現,MapReduces是針對谷歌MapReduce的開源實現。

2.試述Hadoop具有哪些特性。
答:高可靠性,高效性,高可擴展性,高容錯性,成本低,運行在Linux平臺,支持多種編程語言

4.試述Hadoop的項目結構以及每個部分的具體功能。
答:
在這裏插入圖片描述
Commeon是爲Hadoop其他子項目提供支持的常用工具,主要包括文件系統、RPC和串行化庫。
Avro是爲Hadoop的子項目,用於數據序列化的系統,提供了豐富的數據結構類型、快速可壓縮的二進制數據格式、存儲持續性數據的文件集、遠程調用的功能和簡單的動態語言集成功能。
HDFS是Hadoop項目的兩個核心之一,它是針對谷歌文件系統的開源實現。
HBase是一個提高可靠性、高性能、可伸縮、實時讀寫、分佈式的列式數據庫,一般採用HDFS作爲其底層數據存儲。
MapReduce是針對谷歌MapReduce的開源實現,用於大規模數據集的並行運算。
Zoookepper是針對谷歌Chubby的一個開源實現,是高效和可靠的協同工作系統,提供分佈式鎖之類的基本服務,用於構建分佈式應用,減輕分佈式應用程序所承擔的協調任務。
Hive是一個基於Hadoop的數據倉庫工具,可以用於對Hadoop文件中的數據集進行數據整理、特殊查詢和分佈存儲。
Pig是一種數據流語言和運行環境,適合於使用Hadoop和MapReducce平臺上查詢大型半結構化數據集。
Sqoop可以改進數據的互操作性,主要用來在hadoop配合關係數據庫之間交換數據。
Chukwa是一個開源的、用於監控大型分佈式系統的數據收集系統,可以將各種類型的數據收集成適合Hadoop處理的文件,並保存在HDFS中供Hadoop進行各種 MapReduce操作。

5.配置Hadoop時,java的路徑JAVA_HOME是在哪一個配置文件中進行設置的
答:
hadoop目錄下的etc/hadoop/hadoop-env.sh文件

6.所有節點的HDFS路徑是通過fs.default.name來設置的,請問他是在哪個配置文件中設置的
答:core-site.xml

8.Hadoop僞分佈式運行啓動後所具有的進程都有哪些?
答:
1)NameNode它是hadoop中的主服務器,管理文件系統名稱空間和對集羣中存儲的文件的訪問,保存有metadate。
2)SecondaryNameNode它不是namenode的冗餘守護進程,而是提供週期檢查點和清理任務。幫助NN合併editslog,減少NN啓動時間。
3)DataNode它負責管理連接到節點的存儲(一個集羣中可以有多個節點)。每個存儲數據的節點運行一個datanode守護進程。
4)ResourceManager(JobTracker)JobTracker負責調度DataNode上的工作。每個DataNode有一個TaskTracker,它們執行實際工作。
5)NodeManager(TaskTracker)執行任務
6)DFSZKFailoverController高可用時它負責監控NN的狀態,並及時的把狀態信息寫入ZK。它通過一個獨立線程週期性的調用NN上的一個特定接口來獲取NN的健康狀態。FC也有選擇誰作爲Active NN的權利,因爲最多隻有兩個節點,目前選擇策略還比較簡單(先到先得,輪換)。
7)JournalNode 高可用情況下存放namenode的editlog文件

第三章
1.試述分佈式文件系統設計的需求。
答:
在這裏插入圖片描述
4.試述HDFS中的名稱節點和數據節點的具體功能。
答:
名稱節點負責管理分佈式文件系統系統的命名空間,記錄分佈式文件系統中的每個文件中各個塊所在的數據節點的位置信息;
數據節點是分佈式文件系統HDFS的工作節點,負責數據的存儲和讀取,會根據客戶端或者是名稱節點的調度來進行數據的存儲和檢索,並向名稱節點定期發送自己所存儲的塊的列表。
hadoop fs -ls 顯示指定的文件的詳細信息
hadoop fs -cat 指定的文件的內容輸出到標準輸出
hadoop fs -mkdir 創建指定的文件夾
hadoop fs -get [-ignorecrc] [-crc] 複製指定的文件到本地文件系統指定的文件或文件夾。-ignorecrc選項複製CRC校驗失敗的文件。使用-crc選項複製文件以及CRC信息。
hadoop fs -put 從本地文件系統中複製指定的單個或多個源文件到指定的目標文件系統中。也支持從標準輸入(stdin)中讀取輸入寫入目標文件系統。
hadoop fs -rmr 刪除指定的文件夾及其的所有文件

6.HDFS只設置唯一一個名稱節點,在簡化系統設計的同時也帶來了一些明顯的侷限性,請闡述侷限性具體表現在那些方面。
答:
(1) 命名空間的限制:名稱節點是保存在內存中的,因此,名稱節點能夠容納的
對象(文件、塊)的個數會受到內存空間大小的限制。
(2) 性能的瓶頸:整個分佈式文件系統的吞吐量,受限於單個名稱節點的吞吐量。
(3) 隔離問題:由於集羣中只有一個名稱節點,只有一個命名空間,因此,無法
對不同應用程序進行隔離。
(4) 集羣的可用性:一旦這個唯一的名稱節點發生故障,會導致整個集羣變得不
可用。

7.試述HDFS的冗餘數據保存策略。
答:
1).第一個副本:放置在上傳文件的數據節點;如果是集羣外提交,則隨機挑選一臺磁盤不太滿、CPU不太忙的節點
  2).第二個副本:放置在與第一個副本不同的機架的節點上
  3).第三個副本:與第一個副本相同機架的其他節點上
  4).更多副本:隨機節點

9.試述HDFS是如何探測錯誤發生以及如何進行恢復的。
答:

  1. 名稱節點出錯
    名稱節點保存了所有的元數據信息,其中最核心的兩大數據結構是Fslmage和EilLog,如果這兩個文作發生根壞 那麼管↑HOPS實例將失效Hap採用兩種機制來確保名整節點的安全單門,把不稱節點上的元數據信息同步存儲到其他文件系統( 比如遠程掛載的網絡文件系統NFS)中:第二,運行 個第二名稱節點,當名稱節點宕機以後,可以把第名稱節點作爲一 種彌補措場利用站名稱節點中的元數據信息進行系統恢復, 但是從前面對第二名稱節點的介紹中可以看出,這樣做仍然會丟失部分數據。因此,一般會把 上述兩種方式結合使用,當名稱節點發生宕機時首先到遠程掛載的網絡文件系統中獲取備份的元數據信息,放到第二名稱節點上進行恢復,並把第二名稱節點作爲名稱節點來使用。
    2.數據節點出錯
    每個數據節點會定期向名稱節點發送“心跳”信息,向名稱節點報告自己的狀態。當數據節點發生故障,或者網絡發生斷網時,名稱節點就無法收到來自一些數據節點的“心跳”信息,這時這些數據節點就會被標記爲“宕機”,節點上面的所有數據都會被標記爲“不可讀”,名稱節點不會再給它們發送任何IO請求。這時,有可能出現一種情形,即由於一些數據節點的不可用,會導致一此數據塊的副本數量小於冗餘因子。名稱節點會定期檢查這種情況,一旦發現某個數據塊的副本數量小於冗餘因子,就會啓動數據冗餘複製,爲它生成新的副本。HDFS與其他分佈式文件系統的最大區別就是可以調整冗餘數據的位置。
    3.數據出錯
    網絡傳輸和磁盤錯誤尊因素都會造成數據錯誤。客戶端在讀取到數據後,會採用mds和shal對數據塊進行校驗,以確定讀取到正確的數據。在文件被創建時,客戶端就會對每- 個文件塊進行信息摘錄,並把這些信息寫人同一個路徑的隱藏文件裏面。當客戶端讀取文件的時候,會先讀取該信息文件,然後利用該信息文件對每個讀取的數據塊進行校驗,如果校驗出錯,客戶端就會請求到另外一個數據節點讀取該文件塊,並且向名稱節點報告這個文件塊有錯誤,名稱節點會定期檢查並且重新複製這個塊。

10.請闡述HDFS在不發生故障的情況下讀文件的過程。
答:
(1)客戶端通過FlSysmeono打開文件相應地,在HIDFS文件系統中DitbuedFieSstess具體實現了FileSystem。 因此,調用open()方法後,DisribedFilSyste 會創建輸人流FSDataInputStream.對於HDFS而言,具體的輸人流就是DFSInputSteam
(2)在DFSInputStream的構造函數中,輸人流通過ClientProtocal getBlockLocations0遠程調用名稱節點,獲得文件開始部分數據塊的保存位置。對於該數據塊,名稱節點返回保存該數據塊的所有數據節點的地址,同時根據距離客戶端的遠近對數據節點進行排序:然後,DistributedFileSystem會利用DFSInputStream來實例化FSDataInputSteam.返回給客戶端,同時返回了數據塊的數據節點地址。
(3)獲得輸人流FDalnpulsreon後,客戶端調用cao雨數開始讀取數據。輸人流根據響
面的排序結果,選擇距離客戶端最近的數據節點建立連接井讀取數據。(4)數據從該數據節點讀到客戶端:當該數據塊讀取完畢時,FDsapulsrcor關閉和該數星節點的連接。
(5)輸人流通過getBlockLocations()方法查找下一個數據塊(如果客戶端緩存中已經包含了數據塊的位置信息,就不需要調用該方法)。
(6)找到該數據塊的最佳數據節點,讀取數據。
(7)當客戶端讀取完畢數據的時候,調用FSDataInputStream的close()函數,關閉輸入流,需要注意的是,在讀取數據的過程中,如果客戶端與數據節點通信時出現錯誤,就會嘗試連接包含此數據塊的下一個數據節點。

第四章
3.請闡述HBase和傳統關係數據庫的區別
答:

  1. 分別解釋HBase中行鍵、列鍵和時間戳的概念
    答:
    行鍵是唯一的,在一個表裏只出現一次,否則就是在更新同一行,行鍵可以是任意的字節數組。
    列族需要在創建表的時候就定義好,數量也不宜過多。列族名必須由可打印字符組成,創建表的時候不需要定義好列。
    時間戳,默認由系統指定,用戶也可以顯示設置。使用不同的時間戳來區分不同的版本。

7.請舉個實例來闡述HBase的概念視圖和物理視圖的不同
答:
HBase數據概念視圖
在這裏插入圖片描述
HBase數據物理視圖
在這裏插入圖片描述
在這裏插入圖片描述
在HBase的概念視圖中,一個表可以視爲一個稀疏、多維的映射關係。
在物理視圖中,一個表會按照屬於同一列族的數據保存在一起

8.試述HBase各功能組建及其作用
(1)庫函數:鏈接到每個客戶端;
(2)一個Master主服務器:主服務器Master主要負責表和Region的管理工作;
(3)許多個Region服務器:Region服務器是HBase中最核心的模塊,負責維護分配給自己的Region,並響應用戶的讀寫請求

11.試述HBase的三層結構中各層次的名稱和作用。
在這裏插入圖片描述

15.試述HStore的工作原理
答:每個Store對應了表中的一個列族的存儲。每個Store包括一個MenStore緩存和若干個StoreFile文件。MenStore是排序的內存緩衝區,當用戶寫入數據時,系統首先把數據放入MenStore緩存,當MemStore緩存滿時,就會刷新到磁盤中的一個StoreFile文件中,當單個StoreFile文件大小超過一定閾值時,就會觸發文件分裂操作。

19.請列舉幾個HBase常用命令,並說明其使用方法
1.進入hbase shell console
$HBASE_HOME/bin/hbase shell
如果有kerberos認證,需要事先使用相應的keytab進行一下認證(使用kinit命令),認證成功之後再使用hbase shell進入可以使用whoami命令可查看當前用戶
hbase(main)>
whoami
2.表的管理
1)查看有哪些表
hbase(main)>
list
2)創建表
#語法:create

, {NAME => , VERSIONS => }
#例如:創建表t1,有兩個family name:f1,f2,且版本數均爲2
hbase(main)>
create ‘t1’,{NAME
=> ‘f1’,
VERSIONS => 2},{NAME => ‘f2’,
VERSIONS => 2}
3)刪除表
分兩步:首先disable,然後drop
例如:刪除表t1

hbase(main)>
disable ‘t1’
hbase(main)>
drop ‘t1’
4)查看錶的結構
#語法:describe


#例如:查看錶t1的結構
hbase(main)>
describe ‘t1’
5)修改表結構
修改表結構必須先disable
#語法:alter ‘t1’, {NAME => ‘f1’}, {NAME => ‘f2’, METHOD => ‘delete’}
#例如:修改表test1的cf的TTL爲180天
hbase(main)>
disable ‘test1’
hbase(main)>
alter ‘test1’,{NAME=>‘body’,TTL=>‘15552000’},{NAME=>‘meta’,
TTL=>‘15552000’}
hbase(main)>
enable ‘test1’
3.權限管理
1)分配權限
#語法 : grant
參數後面用逗號分隔
#權限用五個字母表示: “RWXCA”.
#READ(‘R’), WRITE(‘W’), EXEC(‘X’), CREATE(‘C’), ADMIN(‘A’)
#例如,給用戶‘test’分配對錶t1有讀寫的權限,
hbase(main)>
grant ‘test’,‘RW’,‘t1’
2)查看權限
#語法:user_permission

#例如,查看錶t1的權限列表
hbase(main)>
user_permission ‘t1’
3)收回權限
#與分配權限類似,語法:revoke

#例如,收回test用戶在表t1上的權限
hbase(main)>
revoke ‘test’,‘t1’
4.表數據的增刪改查
1)添加數據
#語法:put
,,family:column,,
#例如:給表t1的添加一行記錄:rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系統默認
hbase(main)>
put ‘t1’,‘rowkey001’,‘f1:col1’,‘value01’
用法比較單一。
2)查詢數據
a)查詢某行記錄
#語法:get
,,[family:column,…]
#例如:查詢表t1,rowkey001中的f1下的col1的值
hbase(main)>
get ‘t1’,‘rowkey001’,
‘f1:col1’
#或者:
hbase(main)>
get ‘t1’,‘rowkey001’,
{COLUMN=>‘f1:col1’}
#查詢表t1,rowke002中的f1下的所有列值
hbase(main)>
get ‘t1’,‘rowkey001’
b)掃描表
#語法:scan
, {COLUMNS => [ family:column,… ], LIMIT => num}
#另外,還可以添加STARTROW、TIMERANGE和FITLER等高級功能
#例如:掃描表t1的前5條數據
hbase(main)>
scan ‘t1’,{LIMIT=>5}
c)查詢表中的數據行數
#語法:count
, {INTERVAL => intervalNum, CACHE => cacheNum}
#INTERVAL設置多少行顯示一次及對應的rowkey,默認1000;CACHE每次去取的緩存區大小,默認是10,調整該參數可提高查詢速度
#例如,查詢表t1中的行數,每100條顯示一次,緩存區爲500
hbase(main)>
count ‘t1’,
{INTERVAL => 100, CACHE => 500}
3)刪除數據
a )刪除行中的某個列值
#語法:delete
, , family:column , ,必須指定列名
#例如:刪除表t1,rowkey001中的f1:col1的數據
hbase(main)>
delete ‘t1’,‘rowkey001’,‘f1:col1’
注:將刪除改行f1:col1列所有版本的數據
b )刪除行
#語法:deleteall
, , family:column , ,可以不指定列名,刪除整行數據
#例如:刪除表t1,rowk001的數據
hbase(main)>
deleteall ‘t1’,‘rowkey001’
c)刪除表中的所有數據
#語法: truncate

#其具體過程是:disable table -> drop table -> create table
#例如:刪除表t1的所有數據
hbase(main)>
truncate ‘t1’
5.Region管理
1)移動region
#語法:move ‘encodeRegionName’, ‘ServerName’
#encodeRegionName指的regioName後面的編碼,ServerName指的是master-status的Region Servers列表
#示例
hbase(main)>move
‘4343995a58be8e5bbc739af1e91cd72d’,
‘db-41.xxx.xxx.org,60020,1390274516739’
2)開啓/關閉region
#語法:balance_switch true|false
hbase(main)>
balance_switch
3)手動split
#語法:split ‘regionName’,‘splitKey’
4)手動觸發major compaction
#語法:
#Compact
all regions in a table:
#hbase>
major_compact ‘t1’
#Compact
an entire region:
#hbase>
major_compact ‘r1’
#Compact
a single column family within a region:
#hbase>
major_compact ‘r1’, ‘c1’
#Compact
a single column family within a table:
#hbase>
major_compact ‘t1’, ‘c1’

6.配置管理及節點重啓
1)修改hdfs配置
hdfs配置位置:/etc/hadoop/conf
#同步hdfs配置
cat /home/hadoop/slaves|xargs -i
-t scp /etc/hadoop/conf/hdfs-site.xml
hadoop@{}:/etc/hadoop/conf/hdfs-site.xml
#關閉:
cat /home/hadoop/slaves|xargs -i
-t ssh hadoop@{}
“sudo
/home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf stop datanode”
#啓動:
cat /home/hadoop/slaves|xargs -i
-t ssh hadoop@{}
“sudo
/home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf start datanode”
2)修改hbase配置
hbase配置位置:
#同步hbase配置
cat /home/hadoop/hbase/conf/regionservers|xargs -i
-t scp /home/hadoop/hbase/conf/hbase-site.xml
hadoop@{}:/home/hadoop/hbase/conf/hbase-site.xml
#graceful重啓
cd ~/hbase
bin/graceful_stop.sh
–restart --reload --debug inspurXXX.xxx.xxx.org

第五章
4.請比較NoSQL數據庫和關係數據庫的優缺點
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
5.試述NoSQL數據庫的四大類型
答:鍵值數據庫、列族數據庫、文檔數據庫和圖數據庫
6.試述鍵值數據庫、列族數據庫、文檔數據庫和圖數據庫的適用場合和優缺點。
答:
在這裏插入圖片描述
7.試述CAP理論的具體含義。
答:所謂的CAP指的是:
C(Consistency):一致性,是指任何一個讀操作總是能夠讀到之前完成的寫操作的結果,也就是在分佈式環境中,多點的數據是一致的,或者說,所有節點在同一時間具有相同的數據
A:(Availability):可用性,是指快速獲取數據,可以在確定的時間內返回操作結果,保證每個請求不管成功或者失敗都有響應;
P(Tolerance of Network Partition):分區容忍性,是指當出現網絡分區的情況時(即系統中的一部分節點無法和其他節點進行通信),分離的系統也能夠正常運行,也就是說,系統中任意信息的丟失或失敗不會影響系統的繼續運作。

11.請解釋軟狀態、無狀態、硬狀態的具體含義。
答:“軟狀態(soft-state)”是與“硬狀態(hard-state)”相對應的一種提法。數據庫保存的數據是“硬狀態”時,可以保證數據一致性,即保證數據一直是正確的。“軟狀態”是指狀態可以有一段時間不同步,具有一定的滯後性。

12.什麼是最終一致性?
答:
最終一致性根據更新數據後各進程訪問到數據的時間和方式的不同,又可以區分爲:

  1. 會話一致性:它把訪問存儲系統的進程放到會話(session)的上下文中,只要會話還存在,系統就保證“讀己之所寫”一致性。如果由於某些失敗情形令會話終止,就要建立新的會話,而且系統保證不會延續到新的會話;
  2. 單調寫一致性:系統保證來自同一個進程的寫操作順序執行。系統必須保證這種程度的一致性,否則就非常難以編程了
  3. 單調讀一致性:如果進程已經看到過數據對象的某個值,那麼任何後續訪問都不會返回在那個值之前的值
  4. 因果一致性:如果進程A通知進程B它已更新了一個數據項,那麼進程B的後續訪問將獲得A寫入的最新值。而與進程A無因果關係的進程C的訪問,仍然遵守一般的最終一致性規則
  5. “讀己之所寫”一致性:可以視爲因果一致性的一個特例。當進程A自己執行一個更新操作之後,它自己總是可以訪問到更新過的值,絕不會看到舊值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章