原创 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不不可避免的,分佈