在預設情況下,Zipkin用戶端和Server之間是使用HTTP請求的方式進行通信(即同步的請求方式),在
網絡波動,Server端異常等情況下可能存在資訊收集不及時的問題。Zipkin支援與rabbitMQ整合完成異
步消息傳輸。
RabbitMQ的安裝與啟動
(1):下載下傳erlang,原因在于RabbitMQ服務端代碼是使用并發式語言erlang編寫的,下載下傳位址:http://www.erlang.org/downloads,輕按兩下.exe檔案進行安裝就好,安裝完成之後建立一個名為ERLANG_HOME的環境變量,其值指向erlang的安裝目錄,同時将bin目錄路徑加入到PATH變量中,最後打開指令行,輸入erl,如果出現erlang的版本資訊就表示erlang語言環境安裝成功;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwATO0EjNxYTM4AjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
(2):下載下傳RabbitMQ,下載下傳位址:http://www.rabbitmq.com/
(3):安裝RabbitMQ-Plugins,這個相當于是一個管理界面,友善我們在浏覽器界面檢視RabbitMQ各個消息隊列以及exchange的工作情況,安裝方法是:打開指令行cd進入rabbitmq的sbin目錄,輸入:rabbitmq-plugins enable rabbitmq_management指令,稍等會會發現出現plugins安裝成功的提示,預設是安裝6個插件,我安裝RabbitMQ插件時隻成功了3個,一開始無法通路頁面。
解決方法是:首先在指令行輸入:rabbitmq-service stop,接着輸入rabbitmq-service remove,再接着輸入rabbitmq-service install,接着輸入rabbitmq-service start,最後重新輸入rabbitmq-plugins enable rabbitmq_management
這樣就成功通路了,通路位址:127.0.0.1:15672
用戶端配置
(1) 配置依賴
<!--sleuth鍊路追蹤-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!--使用rabbitmq消息中間件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
導入spring-rabbit 依賴,是Spring提供的對rabbit的封裝,用戶端會根據配置自動的生産消息并發送
到目标隊列中
(2) 配置消息中間件rabbit mq位址等資訊
zipkin:
#base-url: http://127.0.0.1:9411/ #zipkin server的請求位址
sender:
#type: rabbit
type: web #請求方式,預設以http的方式向zipkin server發送追蹤資料
sleuth:
sampler:
probability: 1.0 #采樣的百分比
rabbitmq:
host: localhost
port: 5672 #
username: guest
password: guest
listener: # 這裡配置了重試政策
direct:
retry:
enabled: true
simple:
retry:
enabled: true
15672 為網頁管理端口 這裡是5672端口
(3) 測試
關閉Zipkin Server,并随意請求連接配接。打開rabbitmq管理背景可以看到,消息已經推送到rabbitmq。
當Zipkin Server啟動時,會自動的從rabbitmq擷取消息并消費,展示追蹤資料
可以看到如下效果:
請求的耗時時間不會出現突然耗時特長的情況
當ZipkinServer不可用時(比如關閉、網絡不通等),追蹤資訊不會丢失,因為這些資訊會儲存在
Rabbitmq伺服器上,直到Zipkin伺服器可用時,再從Rabbitmq中取出這段時間的資訊.
zipkin server啟動指令:
java -jar zipkin-server-2.19.2-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672