成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

強力監(jiān)控!Spring Boot 3.3 集成 Zipkin 全面追蹤 RESTful API 性能

開發(fā) 前端
通過本文的演示,我們成功地將 Zipkin 集成到了 Spring Boot 3 項目中,監(jiān)控 RESTful API 的性能表現(xiàn)。Zipkin 作為一款強大的分布式追蹤工具,能夠在微服務(wù)架構(gòu)下幫助開發(fā)者快速定位系統(tǒng)瓶頸,優(yōu)化服務(wù)性能。

隨著微服務(wù)架構(gòu)的流行,應(yīng)用程序被分解為多個獨立的服務(wù)組件,系統(tǒng)的復(fù)雜度也隨之增加。在這種情況下,傳統(tǒng)的日志和監(jiān)控手段很難全面追蹤服務(wù)之間的調(diào)用情況。特別是在排查系統(tǒng)瓶頸或處理性能問題時,缺乏全局的調(diào)用鏈路追蹤工具會極大地影響問題定位和解決效率。

Zipkin 作為一款強大的分布式追蹤系統(tǒng),專注于解決微服務(wù)架構(gòu)下的性能監(jiān)控和故障追蹤問題。它通過記錄每個服務(wù)的調(diào)用細(xì)節(jié),并將這些數(shù)據(jù)可視化,使開發(fā)者能夠清楚地了解服務(wù)調(diào)用的順序、耗時和錯誤原因,從而快速定位性能瓶頸或故障點。

運行效果:

圖片圖片

若想獲取項目完整代碼以及其他文章的項目源碼,且在代碼編寫時遇到問題需要咨詢交流,歡迎加入下方的知識星球。

本文將深入講解如何在 Spring Boot 3.3 中集成 Zipkin 來監(jiān)控 RESTful API 的性能表現(xiàn)。我們將從 Zipkin 的基本概念出發(fā),介紹它的安裝與配置,并通過前后端代碼示例演示如何實現(xiàn)對 API 調(diào)用鏈路的追蹤和性能監(jiān)控。

Zipkin 介紹

什么是 Zipkin?

Zipkin 是一款分布式追蹤系統(tǒng),最初由 Twitter 開發(fā),專門用于幫助工程師分析和監(jiān)控微服務(wù)架構(gòu)下服務(wù)的通信。它能記錄跨越多個服務(wù)之間的調(diào)用鏈路,并且詳細(xì)地展示調(diào)用的耗時和路徑。Zipkin 的核心功能包括:

  • 追蹤請求路徑:記錄請求在不同服務(wù)之間的傳遞情況。
  • 分析請求耗時:展示每個請求在各個服務(wù)節(jié)點的耗時,便于找到性能瓶頸。
  • 異常定位:能夠快速定位系統(tǒng)中的錯誤請求,便于開發(fā)者快速修復(fù)問題。

Zipkin 的工作原理

Zipkin 使用 Span 和 Trace 作為核心概念。每一個 Span 表示一個工作單元,例如一次服務(wù)調(diào)用或數(shù)據(jù)庫查詢。Trace 則是一組相關(guān)的 Span,它們表示某個請求從開始到結(jié)束的整個鏈路。Zipkin 會通過 Zipkin Server 收集并存儲這些 Span,然后在 Web UI 中可視化展示出來,幫助開發(fā)者分析性能數(shù)據(jù)。

Zipkin 的安裝與配置

運行 Zipkin 服務(wù)器

Zipkin 可以通過 Docker 運行,也可以直接下載可執(zhí)行的 .jar 文件來啟動。以下是通過 Docker 安裝 Zipkin 的步驟:

docker run -d -p 9411:9411 openzipkin/zipkin

該命令會在 9411 端口啟動 Zipkin 服務(wù),你可以通過瀏覽器訪問 http://localhost:9411 來查看 Zipkin 的 Web UI。

集成 Zipkin 到 Spring Boot

通過 Spring Cloud Sleuth,可以輕松將 Zipkin 集成到 Spring Boot 應(yīng)用中。下面的 pom.xml 配置展示了如何添加 Zipkin 相關(guān)依賴。

項目依賴配置 (pom.xml)

<?xml versinotallow="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.3.4</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.icoderoad</groupId>
	<artifactId>zipkin-restful</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>zipkin-restful</name>
	<description>Demo project for Spring Boot</description>
	
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<!-- Spring Boot Starter Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Spring Boot Zipkin -->
         <dependency>
          <groupId>io.micrometer</groupId>
          <artifactId>micrometer-tracing-bridge-brave</artifactId>
        </dependency>
    
        <dependency>
          <groupId>io.zipkin.reporter2</groupId>
          <artifactId>zipkin-reporter-brave</artifactId>
        </dependency>

        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- Thymeleaf -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

應(yīng)用配置 (application.yml)

Zipkin 的服務(wù)地址和采樣率等相關(guān)配置可以通過 application.yml 文件進行設(shè)置。

server:
  port: 8080

spring:
  application:
    name: zipkin-monitoring-demo
  zipkin:
    base-url: http://localhost:9411  # Zipkin 服務(wù)器地址
  sleuth:
    sampler:
      probability: 1.0  # 采樣率設(shè)置為 1.0 表示采集所有請求

logging:
  level:
    org.springframework.web: DEBUG

讀取配置類(@ConfigurationProperties 配置)

為了更好地管理配置項,我們可以通過 @ConfigurationProperties 注解結(jié)合 Lombok 來簡化代碼。以下是自定義 Zipkin 配置類:

package com.icoderoad.zipkin.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import lombok.Data;

@Data
@Component
@ConfigurationProperties(prefix = "spring.zipkin")
public class ZipkinProperties {
    private String baseUrl;
    private Double samplerProbability;
}

修改 RESTful API 示例

為了更好地展示 Zipkin 的追蹤功能,我們將創(chuàng)建一個返回 JSON 數(shù)據(jù)的 API,并展示它如何通過 Zipkin 進行監(jiān)控。

package com.icoderoad.zipkin.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ApiController {

    @GetMapping("/api/test")
    public Map<String, String> testApi() {
        // 模擬業(yè)務(wù)邏輯
        Map<String, String> response = new HashMap<>();
        response.put("message", "API 調(diào)用成功!");
        response.put("status", "200 OK");
        return response;
    }
}

前端頁面展示 (Thymeleaf + jQuery + Bootstrap)

在前端,我們將使用 jQuery 調(diào)用 RESTful API 并展示返回的 JSON 數(shù)據(jù)。前端使用 Bootstrap 進行頁面美化,jQuery 來處理 API 請求。

在 src/main/resources/templates 目錄下創(chuàng)建 index.html 文件:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>API 性能監(jiān)控</title>
    <link  rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
        <h1>Spring Boot 3 Zipkin 監(jiān)控示例</h1>
        <button id="testApiBtn" class="btn btn-primary">調(diào)用 API</button>
        <div id="apiResponse" class="mt-3"></div>
    </div>

    <script>
        $(document).ready(function(){
            $('#testApiBtn').click(function(){
                $.ajax({
                    url: '/api/test',
                    type: 'GET',
                    dataType: 'json',
                    success: function(response) {
                        $('#apiResponse').html('<pre>' + JSON.stringify(response, null, 2) + '</pre>');
                    },
                    error: function() {
                        $('#apiResponse').html('<div class="alert alert-danger">API 調(diào)用失敗!</div>');
                    }
                });
            });
        });
    </script>
</body>
</html>

效果展示與分析

啟動 Spring Boot 應(yīng)用并調(diào)用 /api/test 接口后,Zipkin 會記錄 API 調(diào)用鏈路信息。你可以通過訪問 http://localhost:9411/zipkin 查看追蹤數(shù)據(jù)。

Zipkin 追蹤示例:

  1. 服務(wù)調(diào)用的耗時:展示每個 API 請求在服務(wù)器端和中間件的響應(yīng)時間。
  2. 調(diào)用鏈路分析:展示微服務(wù)架構(gòu)下的調(diào)用順序,幫助開發(fā)者了解請求的具體流向。
  3. 性能瓶頸定位:通過分析每個 Span 的耗時,快速找出系統(tǒng)中性能較差的環(huán)節(jié)。

Zipkin 提供了直觀的 Web UI,可以方便地分析調(diào)用鏈路,定位性能問題。

總結(jié)

通過本文的演示,我們成功地將 Zipkin 集成到了 Spring Boot 3 項目中,監(jiān)控 RESTful API 的性能表現(xiàn)。Zipkin 作為一款強大的分布式追蹤工具,能夠在微服務(wù)架構(gòu)下幫助開發(fā)者快速定位系統(tǒng)瓶頸,優(yōu)化服務(wù)性能。結(jié)合 Spring Cloud Sleuth 的使用,Zipkin 可以無縫集成到微服務(wù)項目中,實現(xiàn)對全鏈路調(diào)用的追蹤。

未來我們可以進一步擴展 Zipkin 的使用場景,例如與 Kafka、RabbitMQ 等消息隊列集成,實現(xiàn)更復(fù)雜的追蹤方案。

通過這些實踐,開發(fā)者可以更好地管理微服務(wù)架構(gòu),快速定位并解決系統(tǒng)性能瓶頸,從而提升系統(tǒng)的穩(wěn)定性和用戶體驗。

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2024-10-30 08:05:01

Spring參數(shù)電子簽章

2024-10-15 10:38:32

2022-05-25 08:23:32

ZipKinTwitter開源項目

2024-09-05 09:38:55

SpringActuator應(yīng)用程序

2022-12-05 13:45:06

Actuator監(jiān)控

2022-05-12 11:38:26

Java日志Slf4j

2009-10-20 11:03:18

Spring 3.0

2025-01-08 09:35:55

Spring性能監(jiān)控

2022-05-18 08:32:05

服務(wù)監(jiān)控Prometheus開源

2024-10-11 11:46:40

2025-02-18 07:37:21

2024-05-31 08:12:19

2024-10-18 11:32:15

2023-05-11 12:40:00

Spring控制器HTTP

2022-07-11 09:36:38

SpringJava開發(fā)

2020-07-14 11:00:12

Spring BootRedisJava

2018-11-02 15:45:41

Spring BootRedis數(shù)據(jù)庫

2024-10-07 08:18:05

SpringBOM管理

2024-09-05 09:35:58

CGLIBSpring動態(tài)代理

2017-04-25 10:46:57

Spring BootRESRful API權(quán)限
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一级看片免费视频 | 在线成人免费av | 中文字幕久久久 | 免费av一区二区三区 | 一区二区三区中文字幕 | 羞羞的视频在线 | 99精品国产在热久久 | 日本黄色大片免费 | 欧美视频免费在线观看 | 欧美一区二区三区在线观看视频 | 蜜桃av鲁一鲁一鲁一鲁 | 久久久久国产一区二区三区不卡 | 日本一区二区视频 | 97人人澡人人爽91综合色 | 亚洲国产精品99久久久久久久久 | 国产精品一区三区 | 狠狠插狠狠操 | 日韩av成人在线 | 国产视频久久 | 日日爽 | 精品久久久久久久久久久久久久 | 亚洲精品国产成人 | 在线看黄免费 | 极品电影院 | 亚洲久草视频 | 欧美视频精品 | 亚洲网址在线观看 | 在线观看特色大片免费网站 | 午夜精品久久久久99蜜 | 国产欧美精品区一区二区三区 | 岛国av免费观看 | 黄网站免费观看 | 国产精品一区二区三区99 | h漫在线观看 | 丝袜美腿一区二区三区动态图 | 成人在线h | 久久久女| 亚洲风情在线观看 | 天天草天天干 | 99精品视频免费观看 | 成人精品鲁一区一区二区 |