iT邦幫忙

分散式系統相關文章
共有 57 則文章
鐵人賽 Modern Web DAY 1

技術 第一章、單體式應用程式與微服務 - PHP 微服務入門與開發

首先,我們從大多數人熟悉的單體式(Monolithic)架構說起。 Monolithic 就如同摩艾石像般,巨大、莊嚴,承載著文化的整體。 在單體式應用程...

鐵人賽 Software Development DAY 9
服務開發雜談 系列 第 9

技術 分散式系統中的冪等性 & Unique ID

冪等性 數學定義 自己給重複運算的結果==自己 f(f(x)) = f(x) 使用者對於同一操作發起多次請求,請求的結果是一致的,不會因為多次點選而產生副作用...

鐵人賽 Software Development DAY 30

技術 Day 30 - 為什麼學分散式系統?

前言 今天是筆記的最後一天,終於暫時可以告別每天看投影片、Paper的日子,我都覺得這一次的複習比去年上課準備期末考還認真 xD 也因此這一次從頭檢視學過的知識...

鐵人賽 Software Development DAY 29

技術 Day 29 - Cloud Computing - Platform as a Service - Kubernetes (下)

前言 昨天介紹了Kubernetes的運作與設計原理,了解到最主要的運作模式就是靠etcd、APIServer、Controller的合作完成了K8s上面所有任...

鐵人賽 Software Development DAY 28

技術 Day 28 - Cloud Computing - Platform as a Service - Kubernetes (上)

前言 當初開始這一個系列想說有三十天的份量可以寫,應該可以將所有內容寫完。沒想到默默的只剩3天的Quota 既然我們已經完整的把 Data Replicati...

鐵人賽 Software Development DAY 27

技術 Day 27 - Data Partitioning and Sharing - P2P - BitTorrent

前言 前面介紹了兩個搭配Data Partitioning使用的DHT演算法 CHORD、Kademlia。 今天特別拉出來介紹一下這個現在已經退流行的P2P應...

鐵人賽 Software Development DAY 26

技術 Day 26 - Data Partitioning - Distributed Hash Table and Consistent Hashing - Kademlia

前言 前兩篇介紹的Distributed Hash Table的Hashing Space是對應到一個圓,今天我們要來介紹另一種對應到Tree Structur...

鐵人賽 Software Development DAY 25

技術 Day 25 - Data Partitioning - Distributed Hash Table and Consistent Hashing - CHORD(下)

前言 昨天介紹了CHORD的兩種Lookup方法,一個是不斷往下一個Successor詢問,一個是利用儲存空間也就是Finger Table換取時間,以取對數的...

鐵人賽 Software Development DAY 24

技術 Day 24 - Data Partitioning - Distributed Hash Table and Consistent Hashing - CHORD(上)

前言 昨天提到說明了 DHT便是將傳統的Hash Bucket變成一個個實體的Node 而Consistent Hashing是將Key與Node都一起...

鐵人賽 Software Development DAY 23

技術 Day 23 - Data Partitioning - Distributed Hash Table and Consistent Hashing

前言 前面都是在聊資料做備份放到replca servers後的各種資料一致性。 分散式系統還有另一個大主題,那就是如何分散資料到各個Node上。這個需求最早出...

鐵人賽 Software Development DAY 22

技術 Day 22 - Zookeeper - Leader Election 與 Reverse Proxy 實作,使用Golang

前言 今天我們繼續看幾個跟Zookeeper有關的實作,主要是因為這是那時的作業,使用Golang,我覺得蠻好玩的。 Leader Election 許多分散式...

鐵人賽 Software Development DAY 21

技術 Day 21 - Zookeeper - 介紹與實作Lock與2PC

前言 Chubby作為一個在Google內部各種分散式系統很核心的服務,可惜的是並沒有開源。因此Zookeeper的出現給大家一個更具體的想像這個服務怎麼運作與...

鐵人賽 Software Development DAY 20

技術 Day 20 - Google Distributed Lock Service - Chubby(下)

Chubby Caching 首先Chubby應用在Google內部,必須支撐上千個Client,每一個Client都是另外一個分散式系統與服務。因此Chubb...

鐵人賽 Software Development DAY 19

技術 Day 19 - Google Distributed Lock Service - Chubby(中)

Chubby 架構 下圖是一個Chubby的架構 分成Client與Chubby Cells 五個replica servers組成一個高可用的Chubby...

鐵人賽 Software Development DAY 18

技術 Day 18 - Google Distributed Lock Service - Chubby(上)

前言 我們前面剛講完Zookeeper的共識演算法,還沒介紹它的功能,怎麼就跳到什麼鎖服務了呢? 這是因為Apache系列底下的分散式系統例如: Hadoop、...

鐵人賽 Software Development DAY 17

技術 Day 17 - 共識演算法之最後一個了 - Zookeeper的ZAB

前言 這是我們最後一個要介紹的共識演算法了,也就是Zookeeper使用的ZAB共識演算法。接下來我們會從Zookeeper開始,往上以系統或是實例角度介紹。...

鐵人賽 Software Development DAY 16

技術 Day 16 - 分散式系統溝通的方法 - RPC

前言 雖然我們還有Zookeeper的ZAB共識演算法還沒看,但是RPC算是很基礎的分散式系統溝通方法,在Raft裡面也是直接使用並將Spec寫在論文中,因此我...

鐵人賽 Software Development DAY 15

技術 Day 15 - 共識演算法 - 先喘口氣做一個複習

前言 今天鐵人30天已經走了一半了!沒想到我們還在討論Consistency與Availability的問題。就知道其實分散式系統最大的問題,便是在保持系統可用...

鐵人賽 Software Development DAY 14

技術 Day 14 - 共識演算法 - Paxos太難了所以我發明了Raft(下)

前言 昨天提到了基本的選Leader的方式,與log被commit的方法,感覺已經非常完整了,到底哪裡還有問題呢? 我們今天繼續往後探討當選出一個新的Leade...

鐵人賽 Software Development DAY 13

技術 Day 13 - 共識演算法 - Paxos太難了所以我發明了Raft(上)

前言 今天要來說一個覺得人家論文太難,所以就寫一個博士論文重新發明共識演算法的故事。 其實,Paxos太難這件事不只一個人說過,也許前面幾篇講解Paxos流程不...

鐵人賽 Software Development DAY 12

技術 Day 12 - 共識演算法 - 3 Phase Commitment (3PC)

前言 昨天提到在資料庫領域有2PC來解決Distributed Transaction ACID的問題。但是最大的缺點便是單一Coordinator,如果失效那...

鐵人賽 Software Development DAY 11

技術 Day 11 - 共識演算法 - 2 Phase Commitment (2PC)

前言 前面提到的Paxos: Leaderless,每一個replica server都可以當Proposer去說服系統達成共識,決定最終的v值 保證「只要過...

鐵人賽 Software Development DAY 10

技術 Day 10 - 共識演算法之虛構的希臘城邦 - Paxos(下)

設計出一套演算法,當然必須能夠證明他的正確性,且要滿足Consensus Problem的三個要求Termination、Agreement與Validity...

鐵人賽 Software Development DAY 9

技術 Day 9 - 共識演算法之虛構的希臘城邦 - Paxos(上)

前言 前面我們提到了共識演算法是達成Strong Consistency的一種做法。而共識演算法必須滿足以下三個條件: Termination: 保證所有參...

鐵人賽 Software Development DAY 8

技術 Day 8 - 共識演算法(前言)

前言 前面我們講了各種Consistency; 講了Quorum System可以調整W/R參數決定系統如何在一堆replica servers中做讀寫; 講了...

鐵人賽 Software Development DAY 7

技術 Day 7 - 分散式系統裡的時間並不可靠(下) - Vector Clock

前言 昨天我們介紹了Lamport Logical Clock可以幫助我們找出分散式系統裡的Causality關係,但是有其缺點,那就是雖然兩個event是平行...

鐵人賽 Software Development DAY 6

技術 Day 6 - 分散式系統裡的時間並不可靠(上) - Lamport Logical Clock

前言 前面Quorum System (上)、(下),討論了針對replica server的讀寫,我們可以參數化各種W/R數量,來改變系統的Consisten...

鐵人賽 Software Development DAY 5

技術 Day 5 - DynamoDB設計裡Consistency與Availability的爭奪 - Quorum System(下)

前言 昨天(傳送門提到如果今天有5個replicas,搭配 W+W > N 與 W+R > N 我們再搭配timestamp可以讀到最新的結果。...

鐵人賽 Software Development DAY 4

技術 Day 4 - DynamoDB設計裡Consistency與Availability的爭奪 - Quorum System(上)

先看一個例子 昨天的分散式儲存系統,要求寫入只能寫入primary server,讀取則可以從replica servers讀取。因此問題: 在於要多久的時間...

鐵人賽 Software Development DAY 3

達標好文 技術 Day 3 - 從Replica Server讀到的資料一定正確嗎? Data Replication and Consistency

前言 昨天舉了一個很基本的例子,講了分散式系統怎麼開始的(傳送門)。最重要的原因,就是因為我們希望將儲存的資料做replication儲存到多個servers上...