原创 深入理解 CAS 及 ABA問題

CAS,Compare And Swap,即比較並交換。 CAS是Atomic 包的核心,更是整個J.U.C 包的 基石。   本文 將通過AtomicInteger這個類,來分析是如何通過CAS來保證 Atomic的原子性的。 直接進入

原创 zookeeper的zab協議工作原理之 崩潰恢復模式

上篇 zookeeper的zab協議工作原理之 原子廣播 介紹了 zookeeper 廣播的原理。下篇 來詳細的講解 崩潰恢復模式 的原理一、什麼情況下zab協議會進入崩潰恢復模式?   1、當服務器啓動時    2、當leader 服務

原创 分佈式相關基礎理論

分佈式環境下面臨的問題: 網絡通信:網絡本身的不可靠性,因此會涉及到一些網絡通信問題 三態:分佈式架構裏面,除了成功、失敗、超時 分佈式事務 :ACID特性 中心化和去中心化:冷備或者熱備 經典的CAP/BASE理論 CAP C(一致性

原创 java socket 與 網絡協議

本問是介紹 java socket 跟 網絡協議的一些東西,因爲分佈式的情況下, 進程跟進程肯定是通信的嘛。 先從基礎的地方開始寫起。 這是博主直接寫過 關於 兩篇 關於 TCP / IP 的博客 TCP IP 裏的網絡請

原创 zookeeper的選舉機制

一、Zookeeper選舉機制Zookeeper雖然在配置文件中並沒有指定master和slave但是,zookeeper工作時,會選出一個節點爲leader,其他則爲follower下面來聊聊是如何選出leader的。leader選舉的

原创 動物園園長 zookeeper

zookeeper是一個開源的分佈式協調服務中間件zookeeper能做什麼?數據的發佈/訂閱(配置中心:disconf) 、 負載均衡(dubbo利用了zookeeper機制實現負載均衡) 、命名服務、 master選舉(kafka、h

原创 TCP IP 裏的網絡請求 到底是什麼樣的?

當我輸入 一個url 在瀏覽器的地址欄按下回車 這個以前也寫過博客了:一次URL輸入域名按下回車到底發生了什麼? 今天聊聊 傳輸層 在中間做了什麼事: 如果我輸出 慕課網 的網址:www.imooc.com 首先我會去請求 慕課網的

原创 HTTP 通信協議

首先我們看看URL 跟 URI 有什麼區別。 URI 指的是 服務器 資源的名字。 來看看什麼是URI https://www.zhihu.com/question/44323871/answer/347628315 這個地址是知乎

原创 Java 編碼代碼規範

1、HttpServletRequest 等 常用參數 要放到 參數列表的最前面,自定義的參數實體靠後放 2、變量名要符合規範,通俗易懂,例如:記錄日誌的字符串 就叫 logMessage,不要叫或者加什麼str 了。 3、凡是出現數字

原创 前後端配合小結

後臺返回的 json 數據 字段最好只有三種, status , message, data. 具體情況如下: 如果請求的結果是 success的,不論調用的接口返回何種報錯 都是 success ,結果的報錯 直接透傳到 前端,讓前端的

原创 redis 實現分佈式鎖的演進

在分佈式系統中,常常會遇到一些要使用分佈式鎖的業務場景。 比如說:每分鐘要執行關閉未支付訂單的定時任務,在集羣的環境下,如果不做處理,每臺服務器都會去執行這個定時任務,顯然每個時間段的定時任務只需要執行一次,並不需要每臺服務器都去執行,使

原创 分佈式環境下的解決方案——分佈式鎖

分佈式鎖,也就是在多進程情況下的鎖。   多進程的鎖 跟 多線程的 鎖 有什麼相同的地方呢?   需要有存儲鎖的空間,並且鎖的空間是可以訪問到的。 鎖需要被唯一標識。 鎖要有至少兩種狀態。   儲存空間: 鎖是一個抽象的概念,鎖的實現,需

原创 詳解zookeeper的配置文件

zoo.cfg配置文件分析tickTime=2000  zookeeper中最小的時間單位長度 (ms) initLimit=10  follower節點啓動後與leader節點完成數據同步的時間 syncLimit=5 leader節點

原创 集羣 跟 分片 有什麼區別

我們在談到  服務器多實例的時候,常常會說到   Tomcat 集羣  ;但爲什麼  談到  多實例 redis 的時候 沒有說 redis 集羣 呢?是因爲 類似Tomcat 這樣的 集羣  強調的是  機器提供的 服務 而 redis

原创 如何用zookeeper 實現分佈式鎖

一、分佈式鎖介紹        分佈式鎖主要用於在分佈式環境中保護跨進程、跨主機、跨網絡的共享資源實現互斥訪問,以達到保證數據的一致性。二、分佈式鎖設計原理圖1、基於排它鎖:讓所有的客戶端(A B C)都在指定的Locks節點下 創建一個