原创 Netty——EmbeddedChannel類

EmbeddedChannel類 Netty 提供了它所謂的 Embedded 傳輸,用於測試 ChannelHandler。這個傳輸是一種特殊的 Channel 實現— EmbeddedChannel— 的功能,這個實現提供了通

原创 Fork/Join——ForkJoinPool核心方法(一)

ForkJoinPool核心方法 1. 方法 public vod execute(ForkJoinTask<?> task) 的使用 在ForkJoinPool.java類中的execute()方法是以異步的方式執行任務。 p

原创 Java併發——Exchanger

Exchanger Exchanger的功能可以使2個線程之間傳輸數據,它比生產者/消費者模式使用的 wait/notify要更加方便。 exchange()阻塞的特性: public class ThreadA extends

原创 Netty——編解碼器

什麼是編解碼器 每個網絡應用程序都必須定義如何解析在兩個節點之間來回傳輸的原始字節,以及如何將其和 目標應用程序的數據格式做相互轉換。這種轉換邏輯由編解碼器處理,編解碼器由編碼器和解碼 器組成,它們每種都可以將字節流從一種格式轉換

原创 Dubbo——ExtensionLoader的工作原理

ExtensionLoader的工作原理 ExtensionLoader是整個擴展機制的主要邏輯類,在這個類裏面實現了配置的加載、擴展類緩存、自適應對象生成等所有工作。 工作流程 ExtensionLoader的邏輯入口可以分爲g

原创 Java併發——Semaphore

Semaphore Semaphore即信號、信號系統。此類的主要作用就是限制線程併發的數量,如果不限制線程併發的數量,則CPU的資源很快就被耗盡,每個線程執行的任務是相當緩慢,因爲CPU要把時間片分配給不同的線程對象,而且上下文

原创 Java併發——CompletionService

CompletionService 接口CompletionService的功能是以異步的方式生產新的任務,一邊處理已完成任務的結果,這樣可以將執行任務與處理任務分離開來進行處理。使用submit執行任務,使用take取得已完成的

原创 Dubbo——Mock

Mock 在Cluster中,還有最後一個MockClusterWrapper,由它實現了Dubbo的本地僞裝。這個功能的使用場景較多,通常會應用在以下場景中:服務降級;部分非關鍵服務全部不可用,希望主流程繼續進行;在下游某些節點

原创 面試題——單例模式與反射、序列化

餓漢式 立即加載,線程安全。 public class Singleton { private static Singleton INSTANCE = new Singleton();//立即加載 private

原创 Netty——預置的ChannelHandler和編解碼器(一)

預置的ChannelHandler和編解碼器 Netty 爲許多通用協議提供了編解碼器和處理器,幾乎可以開箱即用,這減少了你在那些相 當繁瑣的事務上本來會花費的時間與精力。在本章中,我們將探討這些工具以及它們所帶來的好 處,其中包

原创 Dubbo——服務提供者過濾器實現的原理

服務提供者過濾器實現的原理 @Activate註解上可以設置group屬性,從而設定某些過濾器只有在服務提供者端才生效。 AccessLogFilter的實現原理 1. AccessLogFilter的使用: AccessLogF

原创 Dubbo——服務暴露的實現原理

配置承載初始化 不管在服務暴露還是服務消費場景下,Dubbo框架都會根據優先級對配置信息做聚合處理,目前默認覆蓋策略主要遵循以下幾點規則: -D 傳遞給JVM參數優先級最高,比如-Ddubbo.protocol.port=208

原创 Dubbo——集羣容錯

Cluster層概述 在微服務環境中,爲了保證服務的高可用,很少會有單點服務出現,服務通常都是以集羣的形式出現的。然而,被調用的遠程服務並不是每時每刻都保持良好狀況,當某個服務調用出現異常時,如網路抖動、服務短暫不可用需要自動容錯

原创 Dubbo——註冊中心緩存機制、重試機制

緩存機制 緩存的存在就是用空間換取時間,如果每次遠程調用都要從註冊中心獲取一次可調用的服務列表,則會讓註冊中心承受巨大的流量壓力。另外,每次額外的網絡請求也會讓整個系統的性能下降。因此,Dubbo的註冊中心實現了通用的緩存機制,在

原创 Netty——Bootstrap類

Bootstrap類 引導類的層次結構包括一個抽象的父類和兩個具體的引導子類: 相對於將具體的引導類分別看作用於服務器和客戶端的引導來說,記住它們的本意是用來支撐不同的應用程序的功能的將有所裨益。也就是說,服務器致力於使用一個父