原创 Java併發——ThreadPoolExecutor詳解(二)

工廠ThreadFactory+execute()+UncaughtExceptionHandler處理異常 public class Run4 { public static void main(String[] arg

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

空閒的連接和超時 檢測空閒連接以及超時對於及時釋放資源來說是至關重要的。由於這是一項常見的任務,Netty 特地爲它提供了幾個 ChannelHandler 實現。 示例: 當 使用通常的發送心跳消息到遠程節點的方法時,如果在

原创 Dubbo——Merger的實現

Merger的實現 當一個接口有多種實現,消費者又需要同時引用不同的實現時,可以用group 來區分不同的實現,如下所示。 <dubbo:service group=" group1" interface=" com.xxx.te

原创 Dubbo——協議詳解

Dubbo協議詳解 Dubbo協議設計參考了現有TCP/IP協議。一次RPC調用包括協議頭和協議體兩個部分。16字節長的報文頭部主要攜帶了魔法數(0xdabb),以及當前請求報文是否是Request、REsponse、心跳和事件的

原创 Dubbo——擴展點註解

擴展點註解:@SPI @SPI註解可以使用在類、接口和枚舉類上,Dubbo框架中都是使用在接口上。它的主要作用就是標記這個幾口是一個Dubbo SPI接口,即是一個擴展點,可以有多個不同的內置或用戶定義的實現。運行時需要通過配置找

原创 Fork/Join——分治編程

Fork/Join 在JDK1.7版本中提供了Fork/Join 並行執行任務框架,它的主要作用是把大任務分割成若干個小任務,再對每個小任務得到的結果進行彙總,此種開發方法也叫分治編程,分治編程可以極大地利用CPU資源,提高任務執

原创 Java併發——ScheduledExecutorService

ScheduledExecutorService 類 Scheduledexecutor Service的主要作用就是可以將定時任務與線程池功能結合使用。 ScheduledThreadPoolExecutor使用Callabl

原创 Java併發——Future和Callable

Future和Callable Callable和Runnable主要區別爲: Callable接口的call)方法可以有返回值,而Runnable接口的run()方法沒有返回值。 Callable 接口的call0)方法可以聲

原创 Dubbo——基於註解實現

接口: public interface EchoService { String echo(String message); } 基於註解的服務端: 通過註解暴露服務,只需要在服務接口上標註@Service註解即可

原创 Dubbo——路由的實現

路由的實現 路由接口會根據用戶配置的不同路由策略對Invoker列表進行過濾,只返回符合規則的Invoekr。例如:如果用戶配置了接口A的所有調用,都是用IP爲192.168.1.22的節點,則路由會過濾其他的Invoekr,只返

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

12. 方法 public boolean isShutdown() 的使用 public class Demo3 { public static void main(String[] args) throws Inte

原创 Dubbo——擴展點詳解

擴展點整體架構 1. RPC層擴展點 按照完整的Dubbo結構分層,RPC層可以分爲四層:Config、Proxy、Registry、Cluster。由於Config屬於API範疇,因此只關注Proxy、Registry、Clu

原创 Dubbo——服務消費的實現原理

單註冊中心消費原理 整體RPC的消費原理: ReferenceCnofig ↓ Protocol ----> Dubbo、injvm等 ↓ Invoker -----> Dub

原创 Dubbo——Directory的實現原理

Directory的實現 整個容錯過程中首先會使用Directory#list來獲取所有的Invoker列表。Directory也有多種實現子類,既可以提供靜態的Invoker列表,也可以提供動態的Invoker列表。靜態的列表是

原创 Dubbo——負載均衡的實現

負載均衡的實現 在整個集羣容錯流程中,首先經過Directory獲取所有Invoker列表,然後經過Router根據路由規則過濾Invoker,最後倖存下來的Invoker還需要經過負載均衡這一關,選出最終要調用的Invoker。