近來「去中心化」的話題很流行,在此想請教各位前輩以下所敘述的去中心化是否可行?會否有什麼潛在的問題?
第一張圖是大家所熟知的中心化架構,工作站主機使用一般消費型的文書機,透過網路瀏覽器操作系統。此亦為現有系統運作模式:
若將此系統改為如下圖的架構:
如此省去雲端主機維護的成本,想請教各位前輩的看法,感謝!!
如此省去雲端主機維護的成本
去中心化據我所知並不是為了要節省成本(甚至成本會比原本高),在考慮去中心化之前你可能要思考資料一致性問題
強一致性? 最終一致性? 資料發生衝突要怎麼選擇....等問題
這可能會因為你的場景會有不同的解法答案
如果要走向大型系統架構(通常不是上面圖片那麼簡單....會有很多因素要考量)去中心化是必經過程,但會很痛苦如果需求沒有到那邊可以先不要考慮
感謝石頭您的回覆。順著您提供的看法進一步請教:
去查微服務(micro service)。
然後你要佈置的服務一定得大到某種程度你才會這樣設計,要不然只會自找苦吃而以。
光是網路斷線、資料同步、時間同步、資安、資料一致性及即時性都有一大堆問題得克服。
什麼樣的資料是「強一致性」,以及這是代表必須時時同步嗎?可否麻煩您舉個簡單的例子?又「最終一致性」是代表只要定時同步就可以嗎?
可以先 google CAP 理論,在google 強一致性 vs 最終一致性
為何走向大型系統架構時,去中心化是必經過程?
大型系統(C10K,甚至C100K) 流量大到一定程度時單一或簡單LB Server 就會遇到頻頸(通常頻頸會出現在 DB),這時候才會需要考慮微服務之類的方案(這過程是痛苦 因為你要思考哪些東西擺哪裡,怎麼擺對於日後好發展),
如果沒有這些流量(Money 支持) 你提前做微服務規劃很可能弊大於利
果然有好多東西要考慮,且按照前輩 Google 出來的資料又充滿了不知道從那下手的理論,果然需要很多『支持』與真的有需求再來考慮......再者,似乎不是單純程式工程師可以處理的。
感謝前輩提供的資料!
離題回
既然你是PHP+資料庫
搞好 HA議題 跟 資料庫自己的 replication 機制就可以了
現今常見的replication機制會"至少"三台(可以更多),不是傳統的master/slave兩台架構,
新型應用有這類功能說明上通常會說至少建置上要有三台架構
才能仲裁出三台中的master死了,投票確認死了master,
由其中一個standby接手當master,平常standby還可以充當讀取分流的角色。
為了補回三台 後面加入的成員會在加入後把資料自動補齊全正式成為一員,
至於php前端怎麼設計無痛直接去連接手的master就是靠解決問題的能力了。
知名有仲裁制 replication設計的資料庫 mongodb預設值就是,但他是NoSQL。
Postgresql記得也是 replication但要會進階搭建pool那類的應用可以無痛被前段銜接。
只建立replication如果能忍受短暫的人工切換那根本就不是問題。設計上也簡單點。
php那段用k8s來多台建設nginx +php 就很強大了...
其實您所要的"去中心化"的功能
早在 "網路芳鄰" 就有了
是單純程式工程師可以處理的
參考: "網路芳鄰機制"
而 現在流行的"去中心化"
是區塊練的"去中心化" 跟您想要的功能不一樣!
比較複雜!
不是單純程式工程師可以處理的
以上希望能解決您的問題!