原创 HDFS中NameNode 單點失敗的改進案例介紹

在Hadoop的使用中,NameNode的單點失敗問題一直困擾着框架的使用者。這一節我們提出了一種利用ZooKeeper對NameNode進行冗餘備份協同工作方案,避免了NameNode單點失敗造成的服務不可用與文件丟失問題。NameNo

原创 Apache ZooKeeper Watcher 機制源碼解釋

分佈式系統從根本上來說就是不同節點上的進程併發執行,並且相互之間對進程的行爲進行協調處理的過程。不同節點上的進程互相協調行爲的過程叫做分佈式同步。許多分佈式系統需要一個進程作爲任務的協調者,執行一些其他進程並不執行的特殊的操作,一般情況下

原创 Java程序爲什麼需要調優(《大話Java性能優化》第一章第一節)

2011年1月,新加坡飛往杭州的航班。飛行時間很長,大約6個小時,坐在四周的人很快熟悉了,互相攀談起來。有一位小姑娘,16、7歲的摸樣,長得很漂亮,默默地坐在座位上,當有熱心的阿姨問起她的情況,她帶着疲倦自我介紹起來,“我在新加坡念初三,

原创 JVMs across data center and twitter's jdk

第十屆國際軟件開發者大會(2016年11月7日-11月11日)在舊金山召開,昨天(11月7日)首日會上,來自Twitter JVM組的John Coomes(團隊成員,兩個孩子的父親,昨天Twitter發文說參加大會同時也拿到了舊金山地區

原创 性格分析工具

DISC個性特徵理論1928年,威廉.馬其頓博士出版了《正常人的情緒》一書,書中提出DISC個性特性理論。他認爲人類行爲是個體自身的反應(主動或被動)以及其對環境的認知(友好與敵對)相互作用的結果,以這兩方面的基本軸,可以區分個體與環境互

原创 HashMap使用經驗(上)

小時候媽媽都教過我們,不同的東西要放在不同的位置,需要時才能快速找到它。當然這個規則你必須記住,不然怎麼都找不到了。HashMap之所以能夠做到快速存、取,與我們下面要介紹的內容密切相關。HashMap和HashSet是JavaColle

原创 不懂技術的研究團隊領導

不懂技術的人如果做了研發團隊的領導,很容易出現嚴重的問題。例如,技術會議他到底需不需要參加,如果是一位技術專家出生的人,毫無疑問他需要參加,但是如果情況不是,這時候就會出現麻煩。他參加或者不參加,都會引起麻煩,所以儘量避免這樣的人出任研發

原创 關於若干選舉算法的解釋與實現

分佈式中有這麼一個疑難問題,客戶端向一個分佈式集羣的服務端發出一系列更新數據的消息,由於分佈式集羣中的各個服務端節點是互爲同步數據的,所以運行完客戶端這系列消息指令後各服務端節點的數據應該是一致的,但由於網絡或其他原因,各個服務端節點接收

原创 Java 程序死鎖問題原理及解決方案

本文已經於2015年8月24日發表於IBM開發者論壇Java 語言通過 synchronized 關鍵字來保證原子性,這是因爲每一個 Object 都有一個隱含的鎖,這個也稱作監視器對象。在進入 synchronized 之前自動獲取此內

原创 如何啓動ZooKeeper(中)

(2). Module2 僞分佈式模式上面演示瞭如何啓動單機模式,現在我們來演示設置僞分佈式模式。我們可以在一臺機器上創建模擬的ZooKeeper集羣服務,假如我們需要3個節點,需要創建3個cfg文件,分別命名爲zoo1.cfg,zoo2

原创 並行程序設計模式

並行程序設計模式一般有Future模式、Master-Slave模式、保護暫停模式、不變模式、生產者/消費者模式等。1. Future模式Future模式有點類似商品訂單。比如在進行網上購物時,當看中某一件商品時,就可以提交訂單。當訂單處

原创 博客更新放緩

工作較爲繁忙,博客文章更新時間拉長,有需要的朋友請加微信號 michael_tec,每天在那裏發佈文章或技術分享。

原创 Apache kafka 工作原理介紹

原文發表於:https://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/消息隊列消息隊列技術是分佈式應用間交換信息的一種技術。消息隊列可駐留在內存或磁盤上, 隊列存儲消息直到它

原创 《大話Java性能優化》面向對象及基礎類型相關部分

3.1 面向對象及基礎類型3.1.1 採用Clone()方式創建對象Java語言裏面的所有類都默認繼承自java.lang.Object類,在java.lang.Object類裏面有一個clone()方法,JDK API的說明文檔裏面解釋

原创 HashMap使用經驗(下)

對於任意給定的對象,只要它的hashCode()返回值相同,那麼程序調用hash(int h)方法所計算得到的Hash碼值總是相同的。接下來程序會調用indexFor(int h, int length)方法來計算該對象應該保存在tabl