1. 程式人生 > >為什麼去中心化儲存也能保證資料不丟失

為什麼去中心化儲存也能保證資料不丟失

image.png

最近,我寫了不少文章之後,不少熱心網友留言,去中心化儲存最擔心的問題是資料丟失問題。我往裡面存放了資料之後,雖然有更便宜,更快,更隱私等特點,但是資料畢竟存在於礦工的礦機上,由於礦工的不穩定性,可能導致檔案的丟失。就像滴滴的司機一樣,大部分時間是靠譜的,偶爾不靠譜,不靠譜的時候,體驗非常差,這樣的產品我不敢用。而大公司提供的服務,如AWS S3,是專業機房,專業機器,專業硬碟,能保證資料不丟失。

image

其實不是這樣的,我在設計PP.io的時候,早就考慮到這個問題,所以我專門寫篇文章來解釋這個問題。

首先,我先糾正幾個認知誤區:

1. AWS S3等大公司能100%的保證檔案不丟失嗎?

其實不然,他們也只能99.999999999%的保證檔案不丟,11個9的保證檔案不丟。儲存行業稱這個服務質量指標(QoS)引數為耐用率。

2. 礦工可能不穩定。

P2P的技術核心,就是在多個不穩定的節點上,實現穩定的服務。回想一下我之前做過的PPTV,也就是P2P直播,正是在多個不穩定的節點上完成了穩定的服務。

image

下面我來詳細解釋PP.io是如何把這個耐用率做到非常高的。

PP.io 的2種冗餘模式

我在設計PP.io的時候,設計2種冗餘模式:

1.​全副本模式

全副本模式就是把檔案,完整地拷貝,新檔案和老檔案一模一樣,這樣做並不節約空間,但是P2P能多點下載資料,更快,同時可以保證使用者下載體驗。

2.​糾刪副本模式

糾刪副本模式就是通過糾刪技術來做冗餘。簡單地說就是,資料分成碎片並編碼,使用可配置數量的冗餘分片,且不同部件儲存在不同礦工上。這樣做不利於P2P多點傳輸,但是可以大大節約冗餘空間。

PP.io就是把這兩種冗餘模式結合起來實現的。不同場景側重於運用不同的冗餘方式。

下面簡單說一下糾刪技術產生的數學特徵:

我們用 (k,n) 糾刪碼來編碼資料,其中總共有n個糾刪片段,k表示在n個糾刪片段中,任何k個7糾刪片段就能完全恢復原始資料。如果資料大小是s位元組,則每個糾刪片段的大小大約是s/k 位元組。如果k = 1時就是相當於複製一個全副本。例如,1MB資料, 如果採用(10,16)糾刪碼,並且每個糾刪片段大小是0.1M,則總儲存資料大小就是1.6M。它實際總共用了1.6倍的資料空間大小。

PP.io的假設和計算

做如下假設:

我們令t為單位假設時間,這裡先假設t=24小時

Pt代表礦工的日掉線率,我們這裡假設Pt=5%。

τ為副本丟失後的修復時間,也就是如果副本丟失了,多少時間能夠修復。我們假設τ=2小時。

在可以修復的前提下,將以上值帶入下面的公式,算得單副本丟失每天丟失的概率是:

p = 1 ( 1 P t ) t τ = 0.4265318778 p = 1 – (1-Pt)^{\frac{t}{τ}} = 0.4265318778%

PP.io設計的預設全副本數冗餘2倍,糾刪副本冗餘是1.5倍。

我們先看全副本模式:

由於全副本是完全複製,所以是2倍的冗餘,也就是有2個副本。我們稱為N=2。

修復時間內的耐用率:

P a = 1 p 2 = 99.9981807056 P_a = 1- p^2 = 99.9981807056%

全年耐用率:

P y a = P a ( 365 t / τ ) = 92.3406415922 P_{ya} = Pa^{(365*t/τ)} = 92.3406415922%

我們再看糾刪模式:

假設我們採用的糾刪演算法是 (k,n)= (6,9)。相當於6M的資料,每個糾刪分片是1M,一共要存放9個糾刪分片,任意6個分片就能恢復出完整的資料,這樣存放在9個礦工上,另外實際佔用的空間大小是9M。如果理解了,我們繼續往下看。

由於糾刪演算法是(k,n), 那麼冗餘就是 F = n / k = 1.5 F = n/k = 1.5

在修復時間內分片丟失數就是:

m = n p = 0.038387869 m = n*p = 0.038387869 ,這是已知發生數。

這裡講解一下概率論中的經典公式,泊松分佈擬合公式:
P ( x ) = m x x ! e m P(x) = \frac{m^x}{x!}e^{-m}

簡單理解一下,泊松分佈擬合公式就是觀察事物平均發生m次的條件下,實際發生x次的概率。要了解推導細節,可以看最後的附錄。

我們套用泊松分佈擬合公式就可以得到:
P b = i = 0 n k P ( i ) Pb=\sum_{i=0}^{n-k}P\left(i\right)

​即 P b = 99.9999912252 P_b = 99.9999912252%

那麼全年的耐用率:

P y b = P b ( 365 t τ ) = 99.9615738663 P_{yb} = Pb^{(365\frac{t}{τ})} = 99.9615738663%

可以看到,雖然更小冗餘,但糾刪模式對比起全副本模式的耐用率高很多。

計算彙總:

我們把2種冗餘模式結合起來,可以得到最終的耐用率:

修復時間內耐用率:

P = 1 ( 1 P a ) ( 1 P b ) = 99.9999999998 P = 1 – (1-Pa)(1-Pb) = 99.9999999998%

全年耐用率:

P y = P ( 365 t τ ) = 99.9999993008 P_y = P^{(365\frac{t}{τ})} = 99.9999993008%

看看,已經達到8個9的耐用率。也就是說假設你如果存放了1億個檔案,一年只會丟失1個檔案。你說可靠不?

還能提高

上面的假設,是基於 (k,n)= (6,9), 冗餘度為F=1.5。如果適當提高冗餘度 F,或者提高k,還能提高全年的耐用率 Py。下面一個表格就是調整 k和F之後對全年耐用率產生的影響。

我們這裡做了一個新的假設,完全沒有全副本,只有糾刪分片。這樣做,不追求速度,只追求價格最便宜。這時候,Py 就等於 Pyb。即:

image

可以看出,冗餘度F越高,耐用率越高。同時, 分片數n越多,耐用率越高。n對耐用度的影響更為敏感,但是n越大,也就意味這需要的礦工越多。

也可以看出,如果要追求12個9,即99.9999999999。採用糾刪模式,在冗餘度2的情況下,分成16個糾刪副本就能做到。同樣,在冗餘度2.5的情況下,分成12個糾刪副本就能做到。這樣就超過 AWS S3企業級儲存服務的年耐用率(11個9)。

還能再提高

除了調整 N, (k,n), F 這些引數,可以提高耐用率之外,還可以通過自身的優化努力。其實還有很大的提升空間,前面說過,這個測算是基於2個前提假設的。而這兩個假設本身還有很大的提升空間。

單副本的每日丟失率Pt, 我假設是5%。這個假設本身是可以通過token經濟系統的設計來降低的。更合理的經濟系統可以提高礦工的穩定性和線上率。如果礦工穩定了,這個值就會下降;這個值越低,全年的耐用率就會增加。這個值有望降至1%甚至更低。

副本丟失後的修復時間 τ,我假設是2小時。這個假設也可以通過PP.io自身的演算法來優化,只要能更快地發現副本丟失,能更快地增加副本數來保證副本數充足,τ值就會越低;τ值越低,全年的耐用率就會增加。如果演算法做到極致的話,這個值有望降至15分鐘。

假設做到了極限值Pt=1%,τ=0.25小時,(k,n)=(6,9)糾刪副本冗餘度 F=1.5。

得到 P y b = 99.9999998852 P_{yb} = 99.9999998852%

如果再考慮2個全副本冗餘,則全年耐用率:

P y = 99.9999999999 P_y = 99.9999999999%

PP.io將讓開發者靈活設定引數

我在設計PP.io架構的時候,給予開發者足夠的靈活性,可以根據自身的情況設定不同的引數,其中包括:全副本數 N, 糾刪演算法引數 (k,N)。

開發者可以根據自身的需求,如傳輸速度,價格(冗餘度越高,價格越高),能接受的耐用率來配置引數,從而滿足自己的產品要求。

PP.io給開發者提供一個去中心化的儲存和分發網路,使得更便宜,更快,更隱私。

附錄:泊松分佈擬合公式推導

假設 p p 為單個裝置單位時間內的故障率,則 n n 個裝置在單位時間內,有 k 個裝置發生故障的概率 P ( k ) P(k) 為:
P ( k ) = ( n k ) p k ( 1 p ) n k P(k) = {n \choose k}p^{k}(1-p)^{n-k}

展開組合:
P ( k ) = n ( n 1 ) ( n k + 1 ) k ! p k ( 1 p ) n k P(k) = \frac{n(n-1)\cdots(n-k+1)}{k!}p^{k}(1-p)^{n-k}
P ( k ) = n ( n 1 ) ( n k + 1 ) k ! p k ( 1 p ) n ( 1 p ) k P(k) = \frac{n(n-1)\cdots(n-k+1)}{k!}\frac{p^{k}(1-p)^{n}}{(1-p)^{k}}

相關推薦

為什麼中心儲存保證資料丟失

最近,我寫了不少文章之後,不少熱心網友留言,去中心化儲存最擔心的問題是資料丟失問題。我往裡面存放了資料之後,雖然有更便宜,更快,更隱私等特點,但是資料畢竟存在於礦工的礦機上,由於礦工的不穩定性,可能導致檔案的丟失。就像滴滴的司機一樣,大部分時間是靠譜的,偶爾不靠譜,不靠譜的時候,體驗非

Sia(Siacoin/SC/雲儲幣)中心儲存平臺網址彙總

Sia(Siacoin/SC/雲儲幣)去中心化儲存平臺網址彙總 作者:家輝,日期:2018-03-02 CSDN部落格: http://blog.csdn.net/gobitan

中心儲存的QoS是什麼?

我的前面一篇文章講到如何做去中化儲存,文其中提到了QoS (Quality of Service),那麼QoS是什麼?為什麼QoS那麼重要?下面將詳細描述。 什麼是QoS? 提到QoS,就要先了解QoE QoE是應用程式或服務的使用者的喜悅程度或煩惱程度。 它是使用者體驗的期望或享受期望,

java Logstash 如何保證資料丟失

用過ruby 版本 的logstash 大家都知道,在input 資料消費進來之後,output資料要是失敗了,就會扔掉,這個對資料要求較高的應用中是很難接受的。 舉一個列,input kafka,output elasticsearch,在消費kafka資料

Elasticsearch如何保證資料丟失

上篇文章提到過,在elasticsearch和磁碟之間還有一層cache也就是filesystem cache,大部分新增或者修改,刪除的資料都在這層cache中,如果沒有flush操作,那麼就不能100%保證系統的資料不會丟失,比如突然斷電或者機器宕機了,但實際情況是es中

23 mysql怎麼保證資料丟失

MySQL的wal機制,得到的結論是:只要redo log和binlog 持久化到磁碟,就能確保mysql異常重新啟動後,資料是可以恢復的。 binlog的寫入機制 其實,binlog的寫入邏輯比較簡單:事務執行過程中,先把日誌寫到binlog cache,事務提交的時候,再把binlog cache的內

Qtum量子鏈研究院:DDAO中心資料雲端儲存

背景介紹 現中心化雲端儲存因高商用性而廣受歡迎,但仍存在諸如成本較高、安全性低、隱私洩漏等問題。去中心化雲端儲存則提供端對端加密的高度分散的資訊儲存功能,具有低成本、高安全性、充分利用閒置資源等優點,將會成為未來主流的雲端儲存解決方案。 雲端儲存是在雲端計

《區塊鏈100問》第52集:區塊鏈資產中心記賬

別人 無法 分享 一起 data- 中心 for 數據 記錄 區塊鏈資產的第三大特點是記賬去中心化。   你給別人的轉賬,不會因為記賬機構要放假,所以延遲幾天到賬;不會因為記賬機構要盈利,所以要付很高手續費;更不會因為記賬機構作弊,而受到損失。   因為它的記賬是全網共

以太坊中心淘寶智合約案例

安全 中國 重置 枚舉 是什麽 出現 功能 received 支付寶 篇文章我們來介紹一個簡易的區塊鏈電商系統的核心功能,10多年來,我們習慣了淘寶的電商模式,淘寶為電商在中國普及做出了突出貢獻,值得肯定,也完成了歷史使命。 淘寶模式的核心是什麽? 免

江卓爾:下一次風口將由中心儲存網路所主導

江卓爾:萊位元礦池創始人兼CEO、比特幣礦池(BTC.TOP)。巴位元專欄作者,幣圈大V,比特幣早期科普者,比特幣現金忠實支持者。 在某次社群座談會中,江卓爾談及了區塊鏈領域的三次風口,讓我們看看站在幣圈頂層的大佬是如何看待區塊鏈未來發展趨勢的。 區

技術揭祕 | 中心交易比VISA還快麼?

文章來源 | 計算廣告 作者 | 北冥乘海生   最近沒寫文章,正要續上原來留的扣子,才發現虛擬貨幣價格正在崩塌。對此,我不免拍案稱快:把那些無價值的空氣幣毀滅給人看,才是人間正道。在幸災樂禍的情感支配下,我更有動力寫今天的內容——畢竟,在一片哀鴻聲裡,沒人會以為這是

區塊鏈中心做什麼?7個超酷的以太坊DApp | 以太坊區塊鏈教程

去中心化應用(DApp:Decentralized Application)是區塊鏈社群中出現的新穎想法之一。 憑藉自主執行的智慧合約,該技術的支持者已經提出各種解決方案來嘗試取代今天需要中心化權威的系統:從企業、服務到政府。 你可以用DApp做什麼?下面

【思考-資料安全】【中心】市值3萬億的facebook再出醜聞,你的資料,到底應該歸誰?

最近一則《Facebook隱私洩露事件繼續發酵,黑客明碼標價出售聊天資訊》的新聞被爆出,一個使用者的資訊被標價10美分。讓人不禁感慨,3萬億市值的facebook,使用者資料竟然如此便宜。 在這個“數字時代”,我們在科技面前漸漸變成了“透明人”,隱私有時候顯得有些彌足珍貴。曾經有人反駁,你免費

從零構建以太坊(Ethereum)智合約到項目實戰——第23章 從零構建和部署中心投票App,decentralization Voting Dapp

上傳數據 文件 ali 安裝 存儲文件 去中心化 圖片上傳 個人 構建 P90 、1-從零構建和部署去中心化投票App-01P91 、2-從零構建和部署去中心化投票App-02P92 、3-從零構建和部署去中心化投票App-03P93 、1-IPFS環境配置P94 、2-I

機器學習:樣本中心目的

idt rac 相同 orm ans 預處理 特征 original 需要 作者:Spark鏈接:https://www.zhihu.com/question/37069477/answer/132387124來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉

分析比特幣網絡:一種中心、點對點的網絡架構

比特幣 區塊鏈 比特幣采用了基於互聯網的點對點(P2P:peer-to-peer)分布式網絡架構。比特幣網絡可以認為是按照比特幣P2P協議運行的一系列節點的集合。本文來分析下比特幣網絡,了解它跟傳統中心化網絡的區別,以及比特幣網絡是如何發現相鄰節點的。中心化網絡為了更好的理解P2P網絡,我們先來看看傳

曲子龍:區塊鏈中心到底了什麽?

區塊鏈距上次在《相比出來談區塊鏈,我更想去你大爺!》中談論區塊鏈,到現在又過了五個月有余的時間,雖然國家大力打擊了ICO定性為違法,但是想要投機取巧的人,還是大有人在,在過去的這一個月時間,我手機僅存的幾個算是比較靠譜的微信群,也像“黛玉·林”一樣,弱不禁風般的被區塊鏈話題給淪陷。 身邊人人都在談論區塊鏈,談

BLOCKCHAIN 區塊鏈的中心P2P服務的JAVA代碼的實現

區塊鏈 BLOCKCHAIN P2P JAVA區塊鏈 websocket 為什麽要用去中心化? 借貸關系證明舉例 中心化借貸關系證明帶來的問題: 機器掛了,公司倒閉了,被黑客黑了,借貸關系就不存在了 借貸關系涉及到個人隱私,中心化的機構會拿去做大數據分析。例如各大電子商務公司,會根據購物

基於區塊鏈技術的互聯網將再次中心

區塊鏈技術然而,區塊鏈技術出現之後,這個最核心的問題被改變了。比特幣區塊鏈技術是全球第一個無法確權但是卻永遠有人願意維護的一個全球公共付費網盤,我們終於可以找到一個不從屬於任何一個寡頭的網絡空間來存放我們的一切數據,包括社交關系、購物記錄、文字、圖片和視頻,只要你能付得起費用。這意味著在20年內,今天看似無敵

一步步教你開發、部署第一個中心應用(Dapp) - 寵物商店

區塊鏈今天我們來編寫一個完整的去中心化(區塊鏈)應用(Dapps), 本文可以和編寫智能合約結合起來看。 寫在前面 閱讀本文前,你應該對以太坊、智能合約有所了解,如果你還不了解,建議你先看以太坊是什麽除此之外,你最好還了解一些HTML及JavaScript知識。 本文通過實例教大家來開發去中心化應用,應用效果