原创 Kafka的副本複製策略
Kafka會把topic partitions的數據複製到一組server上,當一個Server宕機時可以做自動的故障恢復(automatic failover)。實際是把日誌複製到一組機器上,一種基於日誌的複製狀態機(這裏就不討論這個)
原创 消息隊列的exclusive consumer功能是如何保證消息有序和防止腦裂的
一般來說,消息隊列都會保證queue當中的消息的順序。然而如果有多個consumer同時消費同一個queue,那麼這時就不能保證的消息的順序性。 有時候,消息的順序是非常重要的,爲了能順序的消費消息,我們只能啓動一個consumer來消費
原创 Zookeeper,etcd,consul內部機制和分佈式鎖和選主實現的比較
我的另外3篇文章分別介紹了Zookeeper,etcd,consul是如何實現分佈式鎖和選主的。本文想比較一下Zookeeper、etcd、consul內部機制有哪些不同,他們實現鎖和選主的方式相同和不同。 Zookeeper提供了臨時節
原创 RabbitMQ的transaction、confirm、ack三個概念的解釋
在使用RabbitMQ的過程中,肯定會遇到這樣的幾個概念:transaction、confirm、ack。本文介紹一下這幾個概念,以及他們之間的關係。 RabbitMQ是採用的AMQP協議,AMQP協議定義了”確認”(acknowledg
原创 Cassandra的副本策略
我們知道Cassandra會將數據寫多個副本。但是Cassndra如何將數據寫入多個副本的那?這就是Cassandra的副本策略。 Cassandra有一個特性叫做Tunable Consistency,用來控制副本策略。我們可以爲每個讀
原创 RabbitMQ主備複製是異步還是同步?
我們知道RabbitMQ可以配置成Queue做主從複製(按照官方的說法叫配置mirror queue),對master queue的寫操作會被複制到其他slave上去(也就是複製到mirror queue上去)。這對rabbitmq的這個
原创 如何理解Zookeeper的順序一致性
2017餓了麼做異地多活,我的團隊承擔Zookeeper的異地多活改造。在此期間我聽到2種不同的關於一致性的說法。一種說法是Zookeeper是最終一致性,因爲由於多副本、以及保證大多數成功的Zab協議,當一個客戶端進程寫入一個新值,另外
原创 ActiveMQ的持久化與集羣
ActiveMQ存儲消息可以採用多種持久化方案,每種方案都有自己特有的集羣方案。 1. 文件型持久化方案 文件型持久化方案包含三種存儲方式:AMQ Message store, KahaDB,LevelDB Store。 AMQ Mess
原创 用Etcd實現分佈式鎖和選主
Etcd的v3版本官方client裏有一個concurrency的包,裏面實現了分佈式鎖和選主。本文分析一下它是如何實現的。 先貼一下鎖的code (https://github.com/coreos/etcd/blob/master/c
原创 併發相關的Java library
Java中和併發相關的類,分別從功能和出現的時間兩個角度整理一下這些類。 1. 按功能上劃分 Concurrency(from the book of core java) Synchronization Thread java.lan
原创 RabbitMQ可用性和可靠性分析
本文分析一下RabbitMQ的可用性和可靠性。分析一下RabbitMQ如何在可用性和可靠性之間進行權衡的。 1. 基本概念。 首先,介紹幾個RabbitMQ的重要的基本概念。這些概念是理解RabbitMQ的可用性和可靠性的基礎。 鏡像隊列
原创 Paxos分析之一—Paxos是什麼
Paxos有2種含義,廣義上來講,是指一系列協議的統稱,比如cheap Paxos <Cheap Paxos>(2004), fast paxos <Fast Paxos >(2005),Disk Paxos 和Byzantine Pax
原创 線性一致性(Linearizability)是併發控制的基礎
在我的其他幾篇文章裏,已經多次提到線性一致性(Linearizability),那麼到底線性一致性(Linearizability)是什麼?線性一致性(Linearizability)有什麼用處? 雖然,我們最常提到Linearizabi
原创 Zookeeper實現分佈式鎖和選主
Zookeeper可以用來實現Distributed lock(分佈式鎖)和leader election(選主)。 分佈式鎖和選主雖然用在不同的場景,但是2者的機制是相同的。 Zookeeper官方文檔上給出了一個recipes,介紹瞭
原创 從Paxos不違反CAP來解釋什麼是CAP定理
CAP定理是分佈式領域當中非常著名的定理,也是大家津津樂道的一個分佈式定理。有些人這麼理解CAP定理: 在分佈式系統中, - C代表一致性 - A代表可用性, - P代表網絡分區。 因爲,分佈式環境中,P不不可避免的,分佈