iT邦幫忙

分散式系統相關文章
共有 57 則文章
鐵人賽 Cloud、Big Data DAY 14

技術 Day 14: Apache Kafka (2)

先來介紹一下Kafka的基本架構吧 (以下圖片都取自Kafka documentation)。 基本上Kafka是一個broker的角色,仲介producer與...

鐵人賽 Software Development DAY 1

達標好文 技術 Day 1 - 分散式系統筆記

這個系列的目的? 現今的軟體已經不再是單一執行檔、單一電腦走天下。幾乎所有眼前的服務皆是由許多的小元件組成,他們怎麼彼此跨越網路交換資訊呢?又怎麼在彼此身處異地...

鐵人賽 Software Development DAY 16

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

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

鐵人賽 Software Development DAY 2

達標好文 技術 Day 2 - 我的C是你的C嗎,介紹CAP Theorem與ACID/BASE

第一天,我們輕鬆一點。在走入一堆系統與理論的迷宮前,我們來認識一下分散式系統最知名的理論 - CAP Theorem 先看一個例子 先舉一個簡單的服務讓大家有一...

鐵人賽 Cloud、Big Data DAY 13

技術 Day 13: Apache Kafka

Apache Kafka 是一個 Distributed Queue 的實現,很多 Stream Computing 平台都支援 Kafka 作為 data s...

鐵人賽 Software Development DAY 3

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

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

鐵人賽 Cloud、Big Data DAY 15

技術 Day 15: Apache Kafka (3)

以下是Kafka的設計所帶來的限制: Consumer Group裡的consumer數量 不能小於 partition 數量。不然就會有partition裡...

鐵人賽 Cloud、Big Data DAY 18

技術 Day 18: Apache Kafka 與 Stream Computing

至於為什麼 Kafka 適合搭配 Stream Computing呢? 因為 Stream Computing 本質上也是一種可平行處理、易擴充的分散式處理架構...

鐵人賽 Cloud、Big Data DAY 16

技術 Day 16: Apache Kafka (4)

今天來講一下Kafka的replication機制 Kafka的replication是以partition做單位,方法也很簡單,就是讓replica去訂閱要追...

鐵人賽 Cloud、Big Data DAY 9

技術 Day 9: CAP Theorem

CAP Theorem 的 CAP 分別是指: C (Strong Consistency): 在任何時候,從叢集中的任兩個節點得到的狀態都是一樣的。 A (...

鐵人賽 Cloud、Big Data DAY 17

技術 Day 17: Apache kafka (5)

啊哈,沒想到Kafka可以寫到第五篇啊... 今天要講的是ack,ack問題在stream computing裡也會遇到,這邊就來先提一下。 stream co...

鐵人賽 Software Development DAY 8

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

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

鐵人賽 Software Development DAY 11

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

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

鐵人賽 Cloud、Big Data DAY 20

技術 Day 20: In-Memory 的技術議題?

這篇跟Day 10是同系列的,同樣是關於In-Memory的問題。 受惠於 Memory的性價比越來越高,越來越多廠商推出 In-Memory Computin...

鐵人賽 Software Development DAY 4

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

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

鐵人賽 Cloud、Big Data DAY 22

技術 Day 22: 分散式運算系統的溝通方式

作業系統有兩種常用的inter-process communication方式: Shared memory: 當做白板來交換資料,缺點是很多人用的話要排隊(...

鐵人賽 Software Development DAY 6

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

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

鐵人賽 Software Development DAY 9

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

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

鐵人賽 Software Development DAY 13

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

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

鐵人賽 Cloud、Big Data DAY 8

技術 Day 8: 最終一致性

昨天講到執行時序的問題。當需要解決資料時序的問題時,表示已經放棄強一致性 (Strong Consistency)了,轉而只追求最終一致性 (Eventuall...

鐵人賽 Software Development DAY 5

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

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

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

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

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

鐵人賽 Software Development DAY 7

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

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

鐵人賽 Cloud、Big Data DAY 1

技術 想要Scalabilty嗎?拿東西來換吧!

一個系統走向分散式,一定有其不得不為的理由。Scalability是最常見的理由之一。 我先簡單的將Scalabilty的需求分成兩種: Data Scala...

鐵人賽 Cloud、Big Data DAY 2

技術 Day 2: 分散式系統的面向

昨天的重點歸納一句話就是:分散式系統都是特化的,而不是通用的。所以不同的設計決策就會衍生出不同用途的系統。 也如同昨天所說,我先大致將分散式系統分種兩種:資料系...

鐵人賽 Cloud、Big Data DAY 3

技術 Day 3: Partition

分散式資料系統的兩個問題根源:partition 和 replication。 先談partition。當資料放不進一台機器,或是對資料的運算太過耗時,單台機器...

鐵人賽 Software Development DAY 18

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

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

鐵人賽 Cloud、Big Data DAY 24

技術 Day 24: Stream Computing特性

突然發現我好像還沒介紹過 Stream Computing :D Stream Computing 是設計給需要 low-latency 的應用。batch p...

鐵人賽 Cloud、Big Data DAY 11

技術 Day 11: Zookeeper

現在很多分散式系統都會用Zookeeper,在Day 5也有稍微提到一下Zookeeper可以用來維護partition metadata。現在就來多介紹一些Z...

鐵人賽 Software Development DAY 30

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

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