PinPoint解析,RPC傳送過程

2021-08-27 20:43:47 字數 1541 閱讀 3108

最近需要對pinpoint監控進行了解,專案工程需要除了效能進行監控外,業務層面也得進行個性化定製。因此做了些關於pinpoint的研究,網上關於pinpoint的使用更多是安裝教程和一些簡單的說明。更多關於一些解析的資料則是比較匱乏,現在把自己所獲得的一些感悟拿出來分享。

從這可以看出pinpoint是一款更注重效能監控的監控性應用,對於一些物理上的應用資訊進行監視(如應用的cpu使用,記憶體的占用),而我覺得作為一款效能監控的應用,pinpoint的強大之處,還在於,首先它是一款用於監控整個鏈路級別的監控應用。(後面會講),其次,採取的位元組碼增強技巧使得它可以實現監控應用的無**級別的侵入方式。這也是很多人採用它的原因。畢竟隨著時間推移,一些古老應用可能難以維護和修改,誰也不願意去修改這裡面的**,然而還得實時對應用的狀況進行監視

下面說說什麼是基於鏈路級別的監控,也是pinpoint的乙個訊息傳輸機制。

首先得明白rpc是什麼,

rpc(remote procedure call)—遠端過程呼叫,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp或udp,為通訊程式之間攜帶資訊資料。在osi網路通訊模型中,rpc跨越了傳輸層和應用層。rpc使得開發包括網路分布式多程式在內的應用程式更加容易。

rpc採用客戶機/伺服器模式。請求程式就是乙個客戶機,而服務提供程式就是乙個伺服器。首先,客戶機呼叫程序傳送乙個有程序引數的呼叫資訊到服務程序,然後等待應答資訊。在伺服器端,程序保持睡眠狀態直到呼叫資訊到達為止。當乙個呼叫資訊到達,伺服器獲得程序引數,計算結果,傳送答覆資訊,然後等待下乙個呼叫資訊,最後,客戶端呼叫程序接收答覆資訊,獲得程序結果,然後呼叫執行繼續進行。

上述是乙個簡單的請求呼叫過程,簡單講解了一次rpc呼叫時如何跟蹤整個應用鏈的訊息,並進行記錄。

拆分和補充下

當在 tomcata 和 tomcatb 中安裝pinpoint的資料。可以把單個節點的跟蹤資料看成single traction,提現分布式事務跟蹤的流程。

當請求到達tomcata時, pinpoint agent 產生乙個 traceid.

從spring mvc 控制器中記錄資料

插入httpclient.execute()方法的呼叫並在httpget中配置traceid

在http header中配置子 traceid

傳輸打好tag的請求到tomcatb.

從spring mvc控制器中記錄資料並完成請求

當從tomcatb回來的請求完成時,pinpoint agent傳送跟蹤資料到pinpoint collector就此儲存在hbase中

在對tomcatb的http呼叫結束後,tomcata的請求也完成了。pinpoint agent傳送跟蹤資料到pinpoint collector就此儲存在hbase中

ui從hbase中讀取跟蹤資料並通過排序樹來建立呼叫棧

講了那麼多到了這才是pinpoint的技術精華,這方面網上有比較好的資料

這篇部落格我覺得是講的比較細緻的

RPC原理解析

rpc remote procedure call protocol 遠端過程呼叫協議,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp ip或udp,為通訊程式之間攜帶資訊資料。rpc將原來的本地呼叫轉變為呼叫遠端的伺服器上的方法...

RPC原理解析

rpc remote procedure call protocol 遠端過程呼叫協議,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp ip或udp,為通訊程式之間攜帶資訊資料。rpc將原來的本地呼叫轉變為呼叫遠端的伺服器上的方法...

python 郵件解析 解析python傳送郵件

獲取郵件伺服器 email host smtp.163.com send user 163.com password x123456 定義傳送郵件主體 def send mail self,user list,sub,content user message mimetext content,sub...