簡(jiǎn)介
skywaling:一款服務(wù)追蹤工具识藤,可以用來做性能分析等
官網(wǎng)地址:https://skywalking.apache.org/
github地址:https://github.com/apache/skywalking
lettuce:redis高級(jí)客戶端的java驅(qū)動(dòng)器,spring boot 2.0 后的spring-data-redis默認(rèn)使用該版本袁翁;
這里為什么要提到這兩個(gè)服務(wù)軟件呢艇棕?(當(dāng)然里面肯定是出問題了)
問題場(chǎng)景
公司原來是用的是skywalking6.x版本浅乔,正常使用大咱,但是許多的中間件是無法看到的咆霜,例如mongo,es轿塔,上面提到的使用lettuce連接的redis等等特愿,缺失了這么多,我們當(dāng)然想要都 加進(jìn)去勾缭,好做性能分析揍障,查詢官網(wǎng)發(fā)現(xiàn),skywalking最新版本已經(jīng)到V8.2.0了(最近幾天看了下源代碼已經(jīng)到v8.3.0俩由,我們折中選擇了v8.1.0(用最新的怕出問題,老得又怕功能不全)毒嫡,部署完使用以后發(fā)現(xiàn)很多坑,同github上描述的issue一樣幻梯,我們?nèi)慷加龅搅硕祷鉀Q方案就是用最新版本的努释;但是這里有另外一個(gè)問題為什么有個(gè)系統(tǒng)的redis讀取不到,查看鏈路發(fā)現(xiàn)那個(gè)項(xiàng)目用的是lettuce咬摇,那么是不是其他人也有這個(gè)問題呢伐蒂?
查詢資料
初步認(rèn)為,這個(gè)問題可能是因?yàn)閘ettuce版本的問題肛鹏,可能8.x的skywalking不兼容逸邦?查詢官方github上面的資料,在它的支持中間件里面在扰,我找到了lettuce缕减,且版本為5.x,詳細(xì)鏈接:https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/Supported-list.md
那么為什么我這邊同樣也是使用的lettuce 5.x版本的芒珠,卻獲取不到呢烛卧;我又找了github上面的skywalking交流群,去里面咨詢了下妓局,好在有個(gè)好心老哥理我了总放,一步步對(duì)比發(fā)現(xiàn)其余使用的版本大致差不多,除了redis使用的模式不一樣好爬,他們使用的是單機(jī)模式局雄,然后我們使用的是哨兵模式,所以猜想是不是哨兵模式引起的存炮,后面無法獲取到redis的host炬搭;
實(shí)際調(diào)試
修改配置中心的config,使用lettuce的單機(jī)模式穆桂,然后重啟服務(wù)宫盔,調(diào)用接口后,發(fā)現(xiàn)可以讀取到對(duì)應(yīng)的redis host享完,一切正常灼芭;具體問題定位到,由于lettuce哨兵模式引起的無法獲取到redis具體host般又,但是使用其他鏈接框架的哨兵模式?jīng)]有任何問題彼绷,且訪問正常;
解決方案
1.修改redis的連接框架茴迁,使用jedis或者其余的(這個(gè)對(duì)我們來說不現(xiàn)實(shí)寄悯,很可能影響到原有業(yè)務(wù),改動(dòng)太大)
2.使用lettuce的單機(jī)模式(這個(gè)也不允許堕义,單機(jī)掛掉猜旬,服務(wù)就癱瘓了)
3.繼續(xù)尋找解決方案,或者等待官方修復(fù)這個(gè)問題,并且去群里找到老們解決洒擦;