原创 設計之禪——靈活的策略模式

一、引言 在平時生活中當我們想要做一件事的時候往往會有許多的途徑和方法,像我們去公司上班,可以走路去,也可以騎車或者開車去;還有像吃飯,我們可以選擇自己做飯吃,也可以出去吃,臉長得好看的還能讓人請吃飯等等,但無論選擇哪種方式,我們

原创 設計之禪——狀態模式

前言 之前我寫過一篇策略模式的文章,講的是如何靈活地改變對象的行爲,今天要講的模式和策略模式非常像,它也是讓你設計出如何靈活改變對象行爲的一個模式,與策略模式不同的是它是根據自身狀態而自行地改變行爲,它就是狀態模式。 詳解 普通實

原创 Dubbo——服務目錄

引言 前面幾篇文章分析了Dubbo的核心工作原理,本篇將對之前涉及到但卻未細講的服務目錄進行深入分析,在開始之前先結合前面的文章思考下什麼是服務目錄?它的作用是什麼? 正文 概念及作用 清楚Dubbo的調用過程就知道Dubbo在客

原创 Zookeeper——Watcher原理詳解

文章目錄引言正文一、如何註冊監聽二、如何觸發監聽事件三、事件類型有哪些四、Watcher可以被無限次觸發麼?爲什麼要這麼設計?五、Watcher實現原理1. 客服端發送請求a. 初始化客戶端並綁定Watcherb. exists/

原创 設計之禪——單例模式詳解

一、前言 有時候我們只需要一個類只有一個對象,如,線程池、緩存、windows的任務管理器、註冊表等,因此就有了單例模式,確保了一個類只存在一個實例。單例模式的實現非常簡單,但是其中的細節也需要注意。下面我們就來看看他的各種實現。

原创 Dubbo——SPI及自適應擴展原理

文章目錄引言正文一、什麼是SPI?1. Java SPI的實現2. Dubbo SPI實現原理由配置文件得到的猜想SPI源碼二、自適應擴展機制三、Dubbo IOC總結 引言 Dubbo雖然已交由apache管理,並且社區活躍度也

原创 消息隊列——Kafka基本使用及原理分析

文章目錄一、什麼是Kafka二、Kafka的基本使用1. 單機環境搭建及命令行的基本使用2. 集羣搭建3. Java API的基本使用三、Kafka原理淺析1. topic和partition的存儲2. 消息分段及索引查找原理3.

原创 分佈式架構概述及設計

引言 隨着越來越多的人蔘與到互聯網的浪潮來,曾經的單體應用架構越來越無法滿足需求,所以,分佈式集羣架構出現,也因此,分佈式搭建開發成爲了Web開發者必掌握的技能之一。那什麼是分佈式呢?怎麼實現分佈式以及怎麼處理分佈式帶來的問題呢?

原创 設計之禪——深入剖析代理模式

一、前言 設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的、代碼設計經驗的總結。使用設計模式的目的:爲了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。設計模式使代碼編寫真正工程化;設計模

原创 設計之禪——生成器模式

概述 Java是一門面向對象的語言,所以在使用它的時候我們首先就需要new一個對象,在創建一個簡單對象new當然是沒有任何問題的,但是在實際項目中我們往往需要構建一個個複雜的對象,且當某個對象需要多次創建時,我們再通過new去創建

原创 Zookeeper——基本使用以及應用場景(手寫實現分佈式鎖和rpc框架)

文章目錄Zookeeper的基本使用Zookeeper單機部署Zookeeper集羣搭建JavaAPI的使用Zookeeper的應用場景分佈式鎖的實現獨享鎖可重入鎖實現RPC框架基本概念及原理代碼實現服務端客戶端總結 Zookee

原创 設計之禪——享元模式

引言 之前已經寫了17篇關於設計模式的文章,而這些設計模式大都是爲了降低代碼之間的耦合,避免違反開閉原則,但它們大都有同樣的一個缺點,產生更多的類和對象,如果數量達到一定程度,就會導致系統性能降低,而今天要講的這個模式就是爲了解決

原创 Dubbo——服務引用

文章目錄引言正文服務訂閱Invoker的創建單註冊中心的Invoker創建Dubbo直連的Invoker創建創建代理類 引言 上一篇我們分析了服務發佈的原理,可以看到默認是創建了一個Netty server,並通過Invoker調

原创 Dubbo——服務調用過程

文章目錄引言服務的交互服務降級集羣容錯服務調用服務端接收請求總結 引言 經過之前文章的鋪墊,現在可以來分析服務的交互調用過程了。 服務的交互 服務降級 從名字上看我們不難理解MockClusterInvoker相當於是對普通Inv

原创 設計之禪——適配器模式

概述 對於適配器相信大家不會陌生,生活中有各種各樣的例子,像耳機轉接線,充電器適配器,水管適配接口等等。通過類比我們很容易理解適配器的作用: 將已有的本無法使用的類通過適配器轉換,從而達到資源複用,節省開銷的目的。 那要如何通