原创 圖解Dubbo提供者部分重要的類關係

Dubbo的提供者發佈服務是一個比較複雜的過程。概括起來說,主要有以下幾步: 1.解析配置 2.導出服務 解析服務的過程略過。本文主要分析導出服務的過程,其中有一些比較重要的類,它們之間通過代理模式和裝飾器模式,巧妙組合在一起,實

原创 Spring相關項目master分支Snapshot下載問題解決

Spring相關項目是一個龐大的家族,除了Spring Framework之外,還有Spring Boot,Spring Cloud等。這些項目和其他開源項目有個明顯區別,就是他們之間是有相互依賴的。比如Spring Boot依賴

原创 Spring Cloud Consul外部配置動態刷新源碼解析

Consul Consul是一款中間件,可提供KV存儲功能,同時提供了創建、修改、查詢KV存儲的HTTP API,因此可作爲配置中心。 Spring Cloud Consul Spring Cloud Consul是基於Sprin

原创 Activemq控制檯的獨立部署

Apache Activemq是一個高性能的開源消息隊列。在啓動它的時候,會自動啓動一個自帶的Web控制檯,通過控制檯可以查看當前Activemq服務器的情況,包括隊列、主題、連接、訂閱者等。這個控制檯是通過嵌入式的Jetty容器

原创 Dubbo/Netty中時間輪算法的原理

在Dubbo中,爲增強系統的容錯能力,在很多地方需要用到只需進行一次執行的任務調度。比如RPC調用的超時機制的實現,消費者需要各個RPC調用是否超時,如果超時會將超時結果返回給應用層。在Dubbo最開始的實現中,是採用將所有的返回

原创 LeetCode刷題助手:根據數組生成二叉樹

大家在刷LeetCode的二叉樹相關的題目的時候,遇到問題需要在本地IDE裏調試的時候,題目裏給的二叉樹的形式是一個數組,類似 Integer[] array = new Integer[]{1, null, 2, null, null

原创 Dubbo Ops條件路由實戰

Dubbo的服務智能容錯包括服務目錄、服務路由和負載均衡這三個部分。服務目錄的作用是存儲一個接口的invoker的集合,並且隨着配置信息的更新而自動更新。而服務路由則是從服務目錄的involer集合中,根據路由規則篩選出一個子集。而負載均

原创 MySQL8查看和設置隔離級別

MySQL8中隔離級別的變量跟之前的版本不一樣,之前是tx_isolation,MySQL8改成了transaction_isolation。查看當前隔離級別的命令是 select @@global.transaction_iso

原创 Dubbo服務端服務發佈(一)Invoker創建

在Dubbo的服務發佈過程中,Invoker的構造是一個重要的步驟,Invoker代表的是一個可以調用的服務的接口。它的定義如下: public interface Invoker<T> extends Node { /

原创 Dubbo中InternalThreadLocal源碼分析

在Java中,ThreadLocal是實現線程安全的一種手段,它的作用是對於同一個ThreadLocal變量,在每一個線程中都有一個副本,當修改任何一個線程的變量時,不會影響到其他線程。它通過在每一個Thread中存儲一個類似於m

原创 檢查型異常的問題

Java的異常分爲兩種異常,一種是檢查型異常(checked exception),如IOException等。另一種是非檢查型異常(unchecked exception),也叫運行時異常,如IllegalArgumentExc

原创 基於有向無環圖(DAG)的任務調度Demo

定時任務是軟件開發中經常遇到的問題。簡單的定時任務只需要在固定時間觸發它的執行就可以了。但是對於複雜的定時任務,可能是由多個任務組成一個任務組,它們之間存在依賴關係,一個任務執行的條件,必須是它的前置任務已經執行成功(或者沒有前置任務),

原创 gRPC使用初探

gRPC是谷歌開源的一款RPC框架,基於HTTP/2協議,使用protocol buffer作爲接口定義語言(Interface Definition Language)和底層數據交換格式。gRPC最大的優點是能跨語言,因爲使用和語言無關

原创 Dubbo使用Apollo作爲配置中心實戰

一.Dubbo支持Apollo的介紹 Apollo是攜程開源的一款配置中心,能夠集中化管理應用不同環境、不同集羣的配置,配置修改後能夠實時推送到應用端,並且具備規範的權限、流程治理等特性,適用於微服務配置管理場景。 Dubbo目前的最新版

原创 基於循環數組實現的帶滑動窗口的計數器限流算法

當系統面臨高併發、大流量的請求時,爲保障服務的穩定運行,可採取限流算法。限流,顧名思義就是當請求超過一定數量時,就限制新的流量對系統的訪問。目前限流算法主要有計數器法、漏桶算法和令牌桶算法。 最簡單的計數器限流算法只需要一個int型變量(