日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

skywalking使用方法_SkyWalking 源码分析—— Collector Server Component 服务器组件

發(fā)布時間:2025/3/8 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 skywalking使用方法_SkyWalking 源码分析—— Collector Server Component 服务器组件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
摘要: 原創(chuàng)出處 http://www.iocoder.cn/SkyWalking/collector-server-component/「芋道源碼」歡迎轉(zhuǎn)載,保留摘要,謝謝!

本文主要基于 SkyWalking 3.2.6 正式版

  • 1. 概述
  • 2. 接口
    • 2.1 Server
    • 2.2 ServerHandler
  • 3. gRPC 實現(xiàn)
    • 3.1 GRPCServer
    • 3.2 GRPCHandler
  • 4. Jetty 實現(xiàn)
    • 4.1 JettyServer
    • 4.2 JettyHandler
  • 666. 彩蛋

  • 《Netty 實現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring 實現(xiàn)原理與源碼解析 —— 精品合集》
  • 《MyBatis 實現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring MVC 實現(xiàn)原理與源碼解析 —— 精品合集》
  • 《Spring Boot 實現(xiàn)原理與源碼解析 —— 精品合集》
  • 《數(shù)據(jù)庫實體設計合集》
  • 《Java 面試題 —— 精品合集》
  • 《Java 學習指南 —— 精品合集》

1. 概述

本文主要分享 SkyWalking Collector Server Component 服務器組件。Collector 通過服務器,提供 API 接口給調(diào)用方,例如 Agent 、WebUI 。

Server Component 在 SkyWalking 架構(gòu)圖處于如下位置( 紅框 ) :

FROM https://github.com/apache/incubating-skywalking

下面我們來看看整體的項目結(jié)構(gòu),如下圖所示 :

OK,我們從接口到實現(xiàn)的順序進行分享。

2. 接口

2.1 Server

org.skywalking.apm.collector.server.Server ,服務器接口。其實現(xiàn)子類,如下類圖 :

#hostPort() 接口方法,獲得服務器地址。 #serverClassify() 接口方法,獲得服務器分類。

#initialize() 接口方法,初始化服務器。#start() 接口方法,啟動服務器。

#addHandler() 接口方法,添加請求處理器( ServerHandler )

2.2 ServerHandler

org.skywalking.apm.collector.server.ServerHandler ,服務器處理器接口。其實現(xiàn)子類,如下類圖 :

ServerHandler 無任何接口方法。

一個 ServerHandler 對應一個請求的處理。

3. gRPC 實現(xiàn)

3.1 GRPCServer

org.skywalking.apm.collector.server.grpc.GRPCServer ,基于 gRPC 的服務器實現(xiàn)。

#hostPort() 實現(xiàn)方法,獲得服務器地址。 #serverClassify() 實現(xiàn)方法,獲得服務器分類為 "Google-RPC"。

#initialize() 實現(xiàn)方法,調(diào)用 io.grpc.netty.NettyServerBuilder#forAddress(address) 方法,NettyServerBuilder 。此處,服務器并未創(chuàng)建與啟動。 #start() 實現(xiàn)方法,創(chuàng)建 io.grpc.Server 對象,并啟動服務器。

#addHandler(handler) 實現(xiàn)方法,調(diào)用 NettyServerBuilder#addService(...) 方法,添加 gRPC 請求處理器( GRPCHandler )。

目前,GRPCServer 使用在 collector-agent-grpc-provider / collector-remote-grpc-provider 項目。

3.2 GRPCHandler

org.skywalking.apm.collector.server.grpc.GRPCHandler ,gRPC 請求處理器接口。其實現(xiàn)子類,如下類圖 :

GRPCHandler 無任何接口方法。

4. Jetty 實現(xiàn)

3.1 JettyServer

org.skywalking.apm.collector.server.jetty.JettyServer ,基于 Jetty 的服務器實現(xiàn)。

#hostPort() 實現(xiàn)方法,獲得服務器地址。 #serverClassify() 實現(xiàn)方法,獲得服務器分類為 "Jetty"。

#initialize() 實現(xiàn)方法,創(chuàng)建 org.eclipse.jetty.server.Server 和 org.eclipse.jetty.servle.ServletContextHandler 對象。此處,服務器并未啟動。 #start() 實現(xiàn)方法,啟動服務器。

#addHandler(handler) 實現(xiàn)方法,使用 ServerHandler 創(chuàng)建 org.eclipse.jetty.servlet.ServletHolder 對象,并調(diào)用 ServletContextHandler#addServlet(servlet, pathSpec) 方法進行添加。

目前,JettyServer 使用在 collector-agent-jetty-provider / collector-ui-jetty-provider 項目。

3.2 JettyHandler

org.skywalking.apm.collector.server.jetty.JettyHandler ,繼承 javax.servlet.http.HttpServlet 抽象類,Jetty 請求處理。

#pathSpec() 抽象方法,請求路徑定義。

#doGet(HttpServletRequest) 抽象方法,處理 Get 請求,并返回 com.google.gson.JsonElement對象。

  • 該抽象方法會被 `#doGet(HttpServletRequest, HttpServletResponse)` 方法調(diào)用。
    • 成功時,調(diào)用 `#reply(HttpServletResponse, JsonElement)` 方法,返回 JSON 。
    • 錯誤時,調(diào)用 `#replyError(HttpServletResponse, errorMessage, status)` 方法,返回 JSON 。

#doPost(HttpServletRequest) 抽象方法,處理 Post 請求,并返回 com.google.gson.JsonElement 對象。

  • 該抽象方法會被 `#doPost(HttpServletRequest, HttpServletResponse)` 方法調(diào)用。

HttpServlet 所有方法被重寫,并標記 final 修飾符,不允許子類重寫。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的skywalking使用方法_SkyWalking 源码分析—— Collector Server Component 服务器组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。