雖然這篇分散式系統實作鄉民發文沒有被收入到精華區:在分散式系統實作這個話題中,我們另外找到其它相關的精選爆讚文章
在 分散式系統實作產品中有34篇Facebook貼文,粉絲數超過5萬的網紅軟體開發學習資訊分享,也在其Facebook貼文中提到, Istio 是近年來最受關注的框架( frameworks )之一! 如果你以前曾用過 Kubernetes,那麼你將希望學習 Istio! 有了這個實作的課程,你將能夠獲得執行自己的 Istio 服務網格( Service Meshes )的經驗。 你可以在你自己的電腦上執行這個課程,使用 Min...
分散式系統實作 在 軟體開發學習資訊分享 Facebook 的最讚貼文
Istio 是近年來最受關注的框架( frameworks )之一! 如果你以前曾用過 Kubernetes,那麼你將希望學習 Istio! 有了這個實作的課程,你將能夠獲得執行自己的 Istio 服務網格( Service Meshes )的經驗。
你可以在你自己的電腦上執行這個課程,使用 Minikube (需要 8Gb 的主機記憶體) – 你不需要一個雲端供應商,雖然你也可以在那裡執行這個課程 – 只要你可以執行 Kubernetes的任何地方!
在簡單介紹了 Isito 是什麼之後,我們直接進入了一個實踐演示,在這裡你將體驗到 Istio 是如何在現場專案中解決難題。
從這 12 小時的課程,你會學到
✅什麼是服務網格( Service Meshes )?
✅什麼是 Istio?
✅如何在本地執行 Istio?
✅什麼是特使代理( Envoy Proxies )?
✅Istio 控制面板( control plane )與資料面板( data plane )
✅使用 Kiali 視覺化叢集( Cluster )
✅使用 Jaeger 的分散式追蹤
✅使用 Grafana 監控指標( metrics )
✅什麼是 Istio VirtualServices 和 DestinationRules?
✅如何佈署 Canaries (中文字意是金絲雀,它們是什麼!)
✅如何佈署“Dark Releases”(“黑暗釋放”)
✅Istio 閘道器( Gateways )
✅如何利用故障注入( Fault Injection )測試系統的恢復能力
https://softnshare.com/istio-hands-on-for-kubernetes/
分散式系統實作 在 雷司紀的小道投資 Facebook 的精選貼文
【PoW 和 PoS 究竟差在哪,為什麼以太幣要來個大轉型成ETH2.0?】
有鑒於 ETH 最近升級為權益證明(PoS)的消息,加上群組和身邊朋友、長輩對於所謂的 PoW 和 PoS 其實都還不甚了解,所以今天就來寫一篇貼文,讓大家更好地理解這兩個共識機制,如果你身邊也有人不懂,那也可以分享過去讓他們能理解這新東西。
在聊聊 PoS 和 PoW 之前,必須先讓大家理解下,為什麼比特幣跟其他幣種都需要這些共識機制?
-
「為何需要共識機制?」
在傳統的中心化銀行,你每一筆的交易紀錄都是由銀行直接存在他們的私有資料庫內,也因為如此,其實並不需要一個共識機制,你相信銀行會幫你做好每一筆交易紀錄,不會搞怪,這也就是中心化記帳系統。
但偏偏你也聽過很多聳動的新聞,大意是在說銀行專員會挪用客戶的存款,金額還不小,這也就讓人們開始反思:「把錢存在銀行,如果銀行有竄改記錄,能夠察覺嗎?察覺後,這筆錢還能夠拿得回來嗎??」
當年 2008 金融海嘯後,人民發現過去對政府和金融界的信任,在一夕之間崩壞殆盡,所以中本聰不再信任傳統金融的中心化體系,推出了比特幣白皮書。
因此,強調「去中心化」且使用「分散式帳本」的區塊鏈因應而生。
既然都是分散式帳本了,顧名思義,他就是散落在每個人的電腦上,而非只保存在單一的伺服器/資料庫上。
那這時候你就會想,那每個人是不是都可以從自己的電腦竄改帳本記錄,然後上傳到區塊鏈上?究竟要怎麼驗證帳本的正確性呢?
沒錯,這就是共識機制上場的時候了,用一個如同法條般嚴謹的規則,讓大家好好遵守!
其實你可以把共識機制想像成遊戲規則,當你符合遊戲規則且贏了遊戲,那你就享有記帳的權利和獎勵,但如果被發現你是鑽漏洞才贏的,那當然也有相對應的懲罰!
-
「共識機制的不可能三角」
搞懂了共識機制存在的目的,那再來要想的是,我們要打造一個什麼樣的共識機制?符合哪些特性?
在區塊鏈領域中,不可能三角意指:
1. 去中心化(Decentralization)
2. 可擴展性(Scability)
3. 安全性(Security)。
那為何叫做不可能三角,其實是因為沒有一個共識機制,能同時滿足以上提到的這三個特性。
以比特幣的 PoW 為例,相信你早就聽說比特幣每秒僅能處理七筆交易,相較於 Visa 每秒可以處理一兩千筆以上的交易紀錄,比特幣根本就是慢到可笑。
但這其實是因為比特幣更著重在「去中心化」和「安全性」,導致「可擴展性(也可稱效能)」極低。
你試想看看,帳本分散在那麼多地方,你又要每個帳本都進行更新,相較於中心化只有一個主要帳本,那怎麼能快的起來!(搞不好以後有解,能夠同時兼顧可擴展性)
-
「PoW(Proof of Work,工作量證明)」
區塊鏈中最早出現的共識機制,也是比特幣的共識機制,工作量證明其實就是「猜數字競賽」,這個猜數字必須靠電腦的算力來達成,當算力越高,猜對數字的機率就越高,當你猜對數字就可以獲得記帳的權利和相對應的比特幣報酬。
但也因為需要龐大的算力,導致全世界出現了許多集合大量「運算能力」的「礦場」,造成大量的能源浪費,也是現今被多數人詬病的地方。
現今來說,最夯的以太幣挖礦就是屬於 PoW 機制,算力越高平均報酬越多。
依現在的礦工市場來說,幾乎大多數的礦工都是在挖以太幣,而非比特幣。
-
「PoS(Proof of Stake,權益證明)」
PoS 算是為了改善 PoW 所衍生出來的。
相較於 PoW 的算力大比拼,PoS 主要是透過「持幣數量」來作為獎勵的依據,也就是說,你必須買更多且持有這個加密貨幣,才有更高的機率能夠獲得記帳的權利,以及相對應的報酬。
這樣非但解決了能源消耗的問題,同時讓驗證效率提高,也是為何這次 ETH 2.0 會做出 PoW 轉 PoS 的調整,算是符合未來世界的區塊鏈發展趨勢。(至於實作上遇到的困難就先暫且不談XD)
當然,其實也不僅僅只有以上這兩個共識機制,如果要講完所有的共識機制,而且深談背後邏輯,那可不是一篇貼文就能搞定的!
但我們可以期待的是,當區塊鏈愈加受到重視,或許那個不可能三角,也有機會化為可能。
-
P.S. 幣安平台幣 BNB 也採用 PoS 的共識機制,且因為這機制衍生出了質押的相關產品,可以有還不錯的年化報酬率,不過是浮動的,隨著質押的幣越多,報酬也會越低。因此,當你越快了解加密貨幣的知識,那麼你更有機會在早期就拿到更棒的回報(因為還不多人知道),這也驗證了我的「投資邊緣人理論」XD
-
【雷司紀 Linktree 免費資源大全】
https://linktr.ee/raysky.investment
分散式系統實作 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
What Are Snowflake IDs?
Credit by: Wei-Yu Chen (感謝分享)
本文介紹了 Universal Unique Identifiers(UUIDs)的用途及其重要性,UUID 以固定且標準的方式為每個物件產生出獨立的 ID,且 產生出來的 ID 幾乎不可能會重複導致發生碰撞。
通常 UUID 由幾個部分組合而成,像是以時間、執行節點的 MAC address,或以 MD5 hash 來生成。UUID 以 128 bits 的數字組成,為了更方便識別及操作,通常都會以十六進制來表示,總長度為 36 個字(加上連字符號 -)。也因用來產生 UUID 的亂數種子包含了時間、節點資訊等參數,所以 UUID 也具有獨特性,在分散式系統執行也不容易發生碰撞。
而為了避免在你的 apps 裡實作 UUID 的產生機制,常見會使用兩種作法,分別是:Persistence Layer Generated ID 和 ID Servers。一種使用 Database 自動產生出來的序號來作為識別物件的 ID(如 MongoDB 的 ObjectID、MySQL 的 AUTO_INCREMENT ... 等),另一種是使用獨立的 ID server 來產生物件的 ID。
以 Database 來作為序號產生器會碰到一個問題,當你在每次建立新物件時,都會需要向資料庫讀取這個物件的「自動產生 ID」,假設應用程式的規模一大,效能勢必會大受影響。
而使用 ID server(也就是本文主要介紹的 Snowflake IDs)去產生 UUID 的話,就可利用架構於 app 以外的第三方序號產生器。以 Twitter 來說,平均每秒鐘有九千個推文,在高峰期間更甚至會出現一秒 143199 則推文的流量,他們所需要的 UUID 不僅要能夠支援龐大的架構,也需要在以非常快的速度產生出 ID,這也是 Snowflake 專案的由來。
因此,Twitter 以這幾個參數來組成 UUID:
- 保留不使用的位元,固定為 0 - 共 1 位
- Timestamp(以毫秒為單位) - 共 41 位
- 機器 ID - 共 10 位
- 序列號 - 從 0 ~ 4095 依序重複使用 - 共 12 位
雖然說以 ID servers 來產生 UUID 之後,效能還是會被這種架構拖累(必須在建立物件就去向 ID server 發送請求,並等待產生出來的 ID),但這種作法和資料庫系統相比起來已經讓效能降低的問題變得更輕微。
在本文當中介紹了三種常見的 ID 產生方式:在 local app 端產生 ID、在資料庫產生 ID、集中式的 ID server 產生 ID,這些策略的選擇也根據你的使用情境而定,畢竟沒有一種一套打天下的解決方案,在選擇時仍須衡量每個專案的需求。
https://betterprogramming.pub/uuid-generation-snowflake-identifiers-unique-2aed8b1771bc