iT邦幫忙

1

將現有系統中心化架構改為去中心化

  • 分享至 

  • xImage

近來「去中心化」的話題很流行,在此想請教各位前輩以下所敘述的去中心化是否可行?會否有什麼潛在的問題?
第一張圖是大家所熟知的中心化架構,工作站主機使用一般消費型的文書機,透過網路瀏覽器操作系統。此亦為現有系統運作模式:
https://ithelp.ithome.com.tw/upload/images/20220304/20116097WTR0IDia2c.png
若將此系統改為如下圖的架構:
https://ithelp.ithome.com.tw/upload/images/20220304/20116097a9QvSUZpYF.png
如此省去雲端主機維護的成本,想請教各位前輩的看法,感謝!!

看更多先前的討論...收起先前的討論...
yesongow iT邦大師 1 級 ‧ 2022-03-04 11:20:05 檢舉
資料,沒區塊,沒上鏈,如何確保你的資料是最新的?是正確的?
PPTaiwan iT邦好手 1 級 ‧ 2022-03-04 11:31:06 檢舉
理想很好,錢是很大的問題!!

去中心化不就是每個節點都有一個不錯的設備,資料可以儲存的環境要有即大的容量才能夠達到嗎??
天黑 iT邦研究生 5 級 ‧ 2022-03-04 11:37:12 檢舉
先卡個位 我想了解去中心化項目的第二點跟第三點,離線操作又要同步資料有點矛盾的特點,實現的的方法
石頭 iT邦高手 1 級 ‧ 2022-03-04 12:56:29 檢舉
去中心化 必須先考慮 資料一致性問題

強一致性? 最終一致性?
去中心化的意思就是本來你是集中服務到一台超強的主機上,現在把這堆服務分散到差一級的主機上,但基本上這個差一級也不會差到哪裡,假設本來一台分成十台,大概買十台的費用可以買本來一台的7-8倍上下,大概就是這個觀念,IT議題都是預算問題,沒有預算沒有IT,簡單就是這麼說
ray1978 iT邦新手 5 級 ‧ 2022-03-04 13:44:45 檢舉
回覆上方各位前輩提供的意見:
To [yesongow]
我對區塊鏈怎麼運作的其實完全不懂,但您的意思是說,這必須用到區塊鏈技術才能確保資料是最新的?是正確的?

To [PPTaiwan] & [窮嘶發發發]
確實沒有考慮到分散到其他主機會需要再投入分散主機的硬體成本,因此提問中兩張圖的工作站主機都是一樣的,且大部分都是一般所謂的文書機(不是什麼高效能的機器),因為在原架構下只需要能執行瀏覽器。考量的是去中心化後,用這些原本的主機去做......

To[天黑]
您提到「離線操作又要同步資料有點矛盾的特點」,這個有點像是說,如果網路斷了可以在離線環境作業,但網路通了以後可以把資料同步,至於是網路通了馬上同步或是定時什麼時候同步,也還沒想清楚......

感謝各位!
天黑 iT邦研究生 5 級 ‧ 2022-03-04 14:48:23 檢舉
版大離線操作,我理解了,應該說我好奇的機制,是假設離線多台去改同一筆資料,同步已誰為主,怎樣去決定這塊的機制,還有部分離線部分線上之類的情境
ray1978 iT邦新手 5 級 ‧ 2022-03-05 12:19:16 檢舉
To[天黑]
您說的沒錯,想到這些細節時,就會覺得表面上要省下伺服器,但後面要確保資料一致或正確還真是有夠複雜......
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3
石頭
iT邦高手 1 級 ‧ 2022-03-04 13:01:13
最佳解答

如此省去雲端主機維護的成本

去中心化據我所知並不是為了要節省成本(甚至成本會比原本高),在考慮去中心化之前你可能要思考資料一致性問題

強一致性? 最終一致性? 資料發生衝突要怎麼選擇....等問題 

這可能會因為你的場景會有不同的解法答案

如果要走向大型系統架構(通常不是上面圖片那麼簡單....會有很多因素要考量)去中心化是必經過程,但會很痛苦如果需求沒有到那邊可以先不要考慮

看更多先前的回應...收起先前的回應...
ray1978 iT邦新手 5 級 ‧ 2022-03-04 13:33:46 檢舉

感謝石頭您的回覆。順著您提供的看法進一步請教:

  1. 什麼樣的資料是「強一致性」,以及這是代表必須時時同步嗎?可否麻煩您舉個簡單的例子?又「最終一致性」是代表只要定時同步就可以嗎?
  2. 為何走向大型系統架構時,去中心化是必經過程?
    請再撥冗指教,謝謝!
froce iT邦大師 1 級 ‧ 2022-03-04 16:08:21 檢舉

去查微服務(micro service)。

然後你要佈置的服務一定得大到某種程度你才會這樣設計,要不然只會自找苦吃而以。
光是網路斷線、資料同步、時間同步、資安、資料一致性及即時性都有一大堆問題得克服。

石頭 iT邦高手 1 級 ‧ 2022-03-04 16:49:02 檢舉

什麼樣的資料是「強一致性」,以及這是代表必須時時同步嗎?可否麻煩您舉個簡單的例子?又「最終一致性」是代表只要定時同步就可以嗎?

可以先 google CAP 理論,在google 強一致性 vs 最終一致性

為何走向大型系統架構時,去中心化是必經過程?

大型系統(C10K,甚至C100K) 流量大到一定程度時單一或簡單LB Server 就會遇到頻頸(通常頻頸會出現在 DB),這時候才會需要考慮微服務之類的方案(這過程是痛苦 因為你要思考哪些東西擺哪裡,怎麼擺對於日後好發展),
如果沒有這些流量(Money 支持) 你提前做微服務規劃很可能弊大於利

ray1978 iT邦新手 5 級 ‧ 2022-03-05 12:10:24 檢舉

果然有好多東西要考慮,且按照前輩 Google 出來的資料又充滿了不知道從那下手的理論,果然需要很多『支持』與真的有需求再來考慮......再者,似乎不是單純程式工程師可以處理的。

感謝前輩提供的資料!

1
DennisLu
iT邦研究生 1 級 ‧ 2022-03-04 16:33:58

離題回

既然你是PHP+資料庫
搞好 HA議題 跟 資料庫自己的 replication 機制就可以了

現今常見的replication機制會"至少"三台(可以更多),不是傳統的master/slave兩台架構,
新型應用有這類功能說明上通常會說至少建置上要有三台架構
才能仲裁出三台中的master死了,投票確認死了master,
由其中一個standby接手當master,平常standby還可以充當讀取分流的角色。
為了補回三台 後面加入的成員會在加入後把資料自動補齊全正式成為一員,
至於php前端怎麼設計無痛直接去連接手的master就是靠解決問題的能力了。

知名有仲裁制 replication設計的資料庫 mongodb預設值就是,但他是NoSQL。
Postgresql記得也是 replication但要會進階搭建pool那類的應用可以無痛被前段銜接。
只建立replication如果能忍受短暫的人工切換那根本就不是問題。設計上也簡單點。

php那段用k8s來多台建設nginx +php 就很強大了...

ray1978 iT邦新手 5 級 ‧ 2022-03-05 12:16:25 檢舉

前輩您提到的這個,我不知道是否理解有誤,但看起來其實是從單一台「中心」變成多個「中心」對嗎?這樣並不能讓單機在離線狀態下也能作業對吧?此外,原本的想法是新的工作站可以隨時加入、舊的可以隨時離開,這樣是否每次都要設定 replication?

仍要感謝您提供的建議!

0
dscwferp
iT邦高手 1 級 ‧ 2022-03-05 15:00:55

其實您所要的"去中心化"的功能
早在 "網路芳鄰" 就有了
是單純程式工程師可以處理的
參考: "網路芳鄰機制"

而 現在流行的"去中心化"
是區塊練的"去中心化" 跟您想要的功能不一樣!
比較複雜!
不是單純程式工程師可以處理的

以上希望能解決您的問題!

ray1978 iT邦新手 5 級 ‧ 2022-03-06 15:18:46 檢舉

前輩您說的「網芳」確實好像比較像我所描述的分散、去中心化,電腦兩兩間沒有透過其他伺服器主機可以交換資料,但我不知道這個是否可應用在資料庫資料同步(即時同步或定時同步),或透過PHP程式將本機的資料異動寫到其他主機的資料庫中......

感謝您提供的思考方向!

我要發表回答

立即登入回答