国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 編程技術 - Skywalking分布式鏈路追蹤入門

Skywalking分布式鏈路追蹤入門

2020-12-16 22:27今日頭條低調的干貨君 編程技術

本文主要介紹 SkyWalking ,它是一款優秀的國產 APM 工具,并且已經成為了apache基金會的頂級項目,它包括了分布式追蹤、性能指標分析、應用和服務依賴分析等。

今天帶大家了解一款分布式鏈路追蹤軟件,為什么要介紹鏈路追蹤呢?

當前互聯網行業發展紅火,業務也越來越復雜、龐大,單機應用已經無法滿足日常需求,分布式、微服務架構應運而生。在微服務的環境中,存在日常系統的層層調用,會不停的在各個服務中進行,如果沒有一個調用鏈路的完整記錄,排查問題將會異常困難。

Skywalking分布式鏈路追蹤入門

APM(應用性能管理)

針對上面描述的情況,apm給大家帶來了解決方案,目前業界常見的一些 APM 工具主要有: Cat、Zipkin、Pinpoint、SkyWalking。

本文主要介紹 SkyWalking ,它是一款優秀的國產 APM 工具,并且已經成為了apache基金會的頂級項目,它包括了分布式追蹤、性能指標分析、應用和服務依賴分析等。

skywalking入門

軟件安裝不做描述,大家可以自行查閱資料。

官方地址:https://skywalking.apache.org/

先來看下軟件的運行界面,如下圖

Skywalking分布式鏈路追蹤入門
Skywalking分布式鏈路追蹤入門

Skywalking分布式鏈路追蹤入門

介紹下skywalking中重要的三個概念

  • 服務(Service):指服務集群
  • 端點(Endpoint):對外的接口
  • 實例(Instance):指集群中的實例

skywalking架構圖

Skywalking分布式鏈路追蹤入門

可以將skywalking看成三大塊,第一塊為數據采集,第二塊則是skywalking服務,第三塊是數據存儲。

如何將項目接入skywalking呢?

skywalking的接入非常簡單,只需要指定java啟動參數即可,如下圖

Skywalking分布式鏈路追蹤入門

// 指定運行的java agent 

-javaagent:D:\soft\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar 

// 設置該程序,在skywalking中的名字 

-Dskywalking.agent.service_name=stressTest 

// skywalking管理端口 

-Dskywalking.collector.backend_service=localhost:11800 

skywalking原理

大家看到上面的應用案例中,有下面的代碼

-javaagent:/path/to/skywalking-agent.jar 

如果對javaagent了解的話,就知道了,其實skywalking的原理就是使用java agent(java探針)。Java agent是java命令的一個參數。參數 javaagent 可以用于指定一個 jar 包。

  • 這個 jar 包的 MANIFEST.MF 文件必須指定 Premain-Class 項。
  • Premain-Class 指定的那個類必須實現 premain() 方法。

當Java 虛擬機啟動時,在執行 main 函數之前,JVM 會先運行 -javaagent 所指定 jar 包內 Premain Class 這個類的 premain 方法 。

自己實現Java agent

下面我們簡單寫一個java agent

agent代碼

public class MyAgent { 

/** 

* agentArgs 是 premain 函數得到的程序參數,隨同 “– javaagent”一起傳入。 

* Inst 是一個 java.lang.instrument.Instrumentation 的實例,由 JVM 自動傳入。 

*/ 

public static void premain(String agentArgs, Instrumentation inst) { 

System.out.println("=========premain方法執行1========"); 

System.out.println(agentArgs); } 

/** 

* 如果不存在 premain(String agentArgs, Instrumentation inst) 

* 則會執行 premain(String agentArgs) 

*/ 

public static void premain(String agentArgs) { 

  System.out.println("=========premain方法執行2========"); 

  System.out.println(agentArgs); 

  } 

為了不去手動寫MANIFREST.MF文件,我們引入maven插件

<plugin> 

<groupId>org.apache.maven.plugins</groupId> 

<artifactId>maven-jar-plugin</artifactId> 

<version>3.1.0</version> 

<configuration> 

<archive> 

<!--自動添加META-INF/MANIFEST.MF --> 

<manifest> 

<addClasspath>true</addClasspath> 

</manifest> 

<manifestEntries> 

<Premain-Class>com.example.agent.PreMainAgent</Premain-Class> 

</manifestEntries> 

</archive> 

</configuration> 

</plugin> 

執行mvn clean package打包程序,會得到myAgent.jar如下圖

Skywalking分布式鏈路追蹤入門

編寫主程序

public class Test { 

public static void main(String[] args) { 

System.out.println("主程序..."); 

idea啟動時指定agent,如下圖

Skywalking分布式鏈路追蹤入門

執行主程序結果如下:

=========premain方法執行1======== 

null 

主程序... 

主程序...

可以看到premain方法執行了,且沒有傳入參數,如果需要傳入參數javagent屬性如下設置即可:

-javaagent:/Users/ganhuojun/code/myagent/target/myAgent.jar=abc 

原文地址:https://www.toutiao.com/i6880274988621005315/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色影视 | 亚洲免费在线观看 | 日韩欧美一区二区在线观看视频 | 亚洲成人精品久久 | 国内精品久久久久久久影视红豆 | 日本久久精品 | 日韩视频在线一区 | 四虎影院在线免费播放 | 一区二区三区四区电影 | 欧洲精品一区 | 日韩一片 | 日日干狠狠干 | 国产伦精品一区二区三区精品视频 | 久久久久亚洲精品 | 免费成人高清在线视频 | 欧美日韩国产一区二区在线观看 | 男人的天堂2018 | 日韩精品网站 | 国产一区二区三区视频 | 欧美一级免费 | 黄色片子免费观看 | 免费在线成人网 | 卡通动漫第一页 | 亚洲一区二区三区视频 | av黄色在线播放 | 亚洲视频中文字幕 | 欧美一区二区三区在线观看视频 | 国产特级毛片aaaaaaa高清 | 亚洲激情视频 | 人人添人人添 | 日韩成人精品在线 | 欧美成人精品高清视频在线观看 | 国产精品久久久久久久 | 日本不卡高字幕在线2019 | 欧美天堂一区二区三区 | 日韩一级片 | 精品无码久久久久久国产 | 黄色tv在线观看 | 国产精品久久久久久久久久久久久 | 国产视频一区二区 | 无码日韩精品一区二区免费 |