在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分布式鏈路跟蹤Sleuth與Zipkin

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-01-13 10:11 ? 次閱讀

  • Spring Cloud Sleuth
  • Zipkin
  • 快速上手
    • 方式一、HTTP
    • 方式二、消息總線 RabbitMQ

隨著業務發展,系統拆分導致系統調用鏈路愈發復雜一個前端請求可能最終需要調用很多次后端服務才能完成,當整個請求變慢或不可用時,我們是無法得知該請求是由某個或某些后端服務引起的,這時就需要解決如何快讀定位服務故障點,以對癥下藥。于是就有了分布式系統調用跟蹤的誕生。

現今業界分布式服務跟蹤的理論基礎主要來自于 Google 的一篇論文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,使用最為廣泛的開源實現是 Twitter 的 Zipkin,為了實現平臺無關、廠商無關的分布式服務跟蹤,CNCF 發布了布式服務跟蹤標準 Open Tracing。國內,淘寶的 “鷹眼”、京東的 “Hydra”、大眾點評的 “CAT”、新浪的 “Watchman”、唯品會的 “Microscope”、窩窩網的 “Tracing” 都是這樣的系統。

Dapper, a Large-Scale Distributed Systems Tracing Infrastructure:

https://research.google.com/pubs/pub36356.html

Spring Cloud Sleuth 也為我們提供了一套完整的解決方案。在本章中,我們將詳細介紹如何使用 Spring Cloud Sleuth + Zipkin 來為我們的微服務架構增加分布式服務跟蹤的能力。

Spring Cloud Sleuth

一般的,一個分布式服務跟蹤系統主要由三部分構成:

  • 數據收集
  • 數據存儲
  • 數據展示

根據系統大小不同,每一部分的結構又有一定變化。譬如,對于大規模分布式系統,數據存儲可分為實時數據和全量數據兩部分,實時數據用于故障排查(Trouble Shooting),全量數據用于系統優化;數據收集除了支持平臺無關和開發語言無關系統的數據收集,還包括異步數據收集(需要跟蹤隊列中的消息,保證調用的連貫性),以及確保更小的侵入性;數據展示又涉及到數據挖掘和分析。雖然每一部分都可能變得很復雜,但基本原理都類似。

2c6b6e30-92e3-11ed-bfe3-dac502259ad0.jpg

服務追蹤的追蹤單元是從客戶發起請求(request)抵達被追蹤系統的邊界開始,到被追蹤系統向客戶返回響應(response)為止的過程,稱為一個 trace 。每個 trace 中會調用若干個服務,為了記錄調用了哪些服務,以及每次調用的消耗時間等信息,在每次調用服務時,埋入一個調用記錄,稱為一個 span 。這樣,若干個有序的 span 就組成了一個 trace。在系統向外界提供服務的過程中,會不斷地有請求和響應發生,也就會不斷生成 trace,把這些帶有 span 的 trace 記錄下來,就可以描繪出一幅系統的服務拓撲圖。附帶上 span 中的響應時間,以及請求成功與否等信息,就可以在發生問題的時候,找到異常的服務;根據歷史數據,還可以從系統整體層面分析出哪里性能差,定位性能優化的目標。

Spring Cloud Sleuth 為服務之間調用提供鏈路追蹤。通過 Sleuth 可以很清楚的了解到一個服務請求經過了哪些服務,每個服務處理花費了多長。從而讓我們可以很方便的理清各微服務間的調用關系。此外 Sleuth 可以幫助我們:

  • 耗時分析 :通過 Sleuth 可以很方便的了解到每個采樣請求的耗時,從而分析出哪些服務調用比較耗時;
  • 可視化錯誤 :對于程序未捕捉的異常,可以通過集成 Zipkin 服務界面上看到;
  • 鏈路優化 :對于調用比較頻繁的服務,可以針對這些服務實施一些優化措施。

Spring Cloud Sleuth 可以結合 Zipkin,將信息發送到 Zipkin,利用 Zipkin 的存儲來存儲信息,利用 Zipkin UI 來展示數據。

這是 Spring Cloud Sleuth 的概念圖:

2c9f7be4-92e3-11ed-bfe3-dac502259ad0.jpg

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

Zipkin

Zipkin 是 Twitter 的一個開源項目,它基于 Google Dapper 實現,它致力于收集服務的定時數據,以解決微服務架構中的延遲問題,包括數據的收集、存儲、查找和展現。我們可以使用它來收集各個服務器上請求鏈路的跟蹤數據,并通過它提供的 REST API 接口來輔助我們查詢跟蹤數據以實現對分布式系統的監控程序,從而及時地發現系統中出現的延遲升高問題并找出系統性能瓶頸的根源。除了面向開發的 API 接口之外,它也提供了方便的 UI 組件來幫助我們直觀的搜索跟蹤信息和分析請求鏈路明細,比如:可以查詢某段時間內各用戶請求的處理時間等。

Zipkin 提供了可插拔數據存儲方式:In-Memory、MySQL、Cassandra 以及 Elasticsearch。接下來的測試為方便直接采用 In-Memory 方式進行存儲,生產推薦 Elasticsearch。

2cc4c73c-92e3-11ed-bfe3-dac502259ad0.jpg

上圖展示了 Zipkin 的基礎架構,它主要由 4 個核心組件構成:

  • Collector :收集器組件,它主要用于處理從外部系統發送過來的跟蹤信息,將這些信息轉換為 Zipkin 內部處理的 Span 格式,以支持后續的存儲、分析、展示等功能。
  • Storage :存儲組件,它主要對處理收集器接收到的跟蹤信息,默認會將這些信息存儲在內存中,我們也可以修改此存儲策略,通過使用其他存儲組件將跟蹤信息存儲到數據庫中。
  • RESTful API :API 組件,它主要用來提供外部訪問接口。比如給客戶端展示跟蹤信息,或是外接系統訪問以實現監控等。
  • Web UI :UI 組件,基于 API 組件實現的上層應用。通過 UI 組件用戶可以方便而有直觀地查詢和分析跟蹤信息。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

快速上手

Zipkin 分為兩端,一個是 Zipkin 服務端,一個是 Zipkin 客戶端,客戶端也就是微服務的應用。

客戶端會配置服務端的 URL 地址,一旦發生服務間的調用的時候,會被配置在微服務里面的 Sleuth 的監聽器監聽,并生成相應的 Trace 和 Span 信息發送給服務端。發送的方式主要有兩種,一種是 HTTP 報文的方式,還有一種是消息總線的方式如 RabbitMQ。

不論哪種方式,我們都需要:

  • 一個 Eureka 服務注冊中心,這里我們就用之前的eureka項目來當注冊中心。
  • 一個 Zipkin 服務端。
  • 兩個微服務應用,trace-a和trace-b,其中trace-a中有一個 REST 接口/trace-a,調用該接口后將觸發對trace-b應用的調用。

方式一、HTTP

在 Spring Cloud Sleuth 中對 Zipkin 的整合進行了自動化配置的封裝,所以我們可以很輕松的引入和使用它。

Zipkin 服務端

關于 Zipkin 的服務端,在使用 Spring Boot 2.x 版本后,官方就不推薦自行定制編譯了,反而是直接提供了編譯好的 jar 包來給我們使用,詳情請看 upgrade to Spring Boot 2.0 NoClassDefFoundError UndertowEmbeddedServletContainerFactory · Issue #1962 · openzipkin/zipkin · GitHub

并且以前的@EnableZipkinServer也已經被打上了@Deprecated

If you decide to make a custom server, you accept responsibility for troubleshooting your build or configuration problems, even if such problems are a reaction to a change made by the OpenZipkin maintainers. In other words, custom servers are possible, but not supported.

EnableZipkinServer.javagithub.com/openzipkin/zipkin/blob/master/zipkin-server/src/main/java/zipkin/server/EnableZipkinServer.java

簡而言之就是:私自改包,后果自負。

所以官方提供了一鍵腳本:

curl-sSLhttps://zipkin.io/quickstart.sh|bash-s
java-jarzipkin.jar

如果用 Docker 的話,直接

dockerrun-d-p9411:9411openzipkin/zipkin

任一方式啟動后,訪問 http://localhost:9411/zipkin/ 就能看到如下界面,嗯還有漢化看起來不錯。

2cd6d8a0-92e3-11ed-bfe3-dac502259ad0.jpg

至此服務端就 OK 了。

微服務應用

創建兩個基本的 Spring Boot 工程,名字分別為 trace-a 和 trace-b。

兩個工程的 pom.xml 均引入以下依賴坐標:

<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webfluxartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-sleuthartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zipkinartifactId>
dependency>

兩者的配置文件也一樣(除了spring. application.name和server.port,自行修改)

spring:
application:
name:trace-a
sleuth:
web:
client:
enabled:true
sampler:
probability:1.0#將采樣比例設置為1.0,也就是全部都需要。默認是0.1
zipkin:
base-url:http://localhost:9411/#指定了Zipkin服務器的地址
server:
port:8080
eureka:
client:
service-url:
defaultZone:http://localhost:7000/eureka/

Spring Cloud Sleuth 有一個 Sampler 策略,可以通過這個實現類來控制采樣算法。采樣器不會阻礙 span 相關 id 的產生,但是會對導出以及附加事件標簽的相關操作造成影響。Sleuth 默認采樣算法的實現是 Reservoir sampling,具體的實現類是 PercentageBasedSampler,默認的采樣比例為: 0.1(即 10%)。不過我們可以通過 spring.sleuth.sampler.percentage 來設置,所設置的值介于 0.0 到 1.0 之間,1.0 則表示全部采集。

trace-a 工程的啟動類如下:

@RestController
@SpringBootApplication
publicclassApplication{

publicstaticvoidmain(String[]args){
SpringApplication.run(Application.class,args);
}

@Autowired
privateLoadBalancerExchangeFilterFunctionlbFunction;

@Bean
publicWebClientwebClient(){
returnWebClient.builder().baseUrl("http://trace-b")
.filter(lbFunction)
.build();
}

@GetMapping("/trace-a")
publicMonotrace(){
System.out.println("===calltrace-a===");

returnwebClient().get()
.uri("/trace-b")
.retrieve()
.bodyToMono(String.class);
}

}

trace-b 工程的啟動類如下:

@RestController
@SpringBootApplication
publicclassApplication{

publicstaticvoidmain(String[]args){
SpringApplication.run(Application.class,args);
}

@GetMapping("/trace-b")
publicMonotrace(){
System.out.println("===calltrace-b===");

returnMono.just("Trace");
}

}

至此,一切就緒。Spring 應用在監測到 classpath 中有 Sleuth 和 Zipkin 后,會自動在 WebClient(或 RestTemplate)的調用過程中向 HTTP 請求注入追蹤信息,并向 Zipkin Server 發送這些信息。

進行驗證

我們分別啟動 eureka、zipkin、trace-b、trace-a,然后訪問 http://localhost:8080/trace-a 可以得到返回值 Trace,同時還能在它們的控制臺中分別獲得下面的輸出:

--trace-a
===calltrace-a===
2018-04-2320:20:42.016INFO[trace-a,,,]71722---[ender@761e788f}]s.c.a.AnnotationConfigApplicationContext:RefreshingSpringClientFactory-localhost:startupdate[MonApr2320:20:42CST2018];parent:org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@41ab013
2018-04-2320:20:42.103INFO[trace-a,,,]71722---[ender@761e788f}]f.a.AutowiredAnnotationBeanPostProcessor:JSR-330'javax.inject.Inject'annotationfoundandsupportedforautowiring
2018-04-2320:20:42.421INFO[trace-a,,,]71722---[ender@761e788f}]c.netflix.config.ChainedDynamicProperty:Flippingproperty:localhost.ribbon.ActiveConnectionsLimittouseNEXTproperty:niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647
2018-04-2320:20:42.441INFO[trace-a,,,]71722---[ender@761e788f}]c.n.u.concurrent.ShutdownEnabledTimer:Shutdownhookinstalledfor:NFLoadBalancer-PingTimer-localhost
2018-04-2320:20:42.476INFO[trace-a,,,]71722---[ender@761e788f}]c.netflix.loadbalancer.BaseLoadBalancer:Client:localhostinstantiatedaLoadBalancer:DynamicServerListLoadBalancer:{NFLoadBalancer:name=localhost,currentlistofServers=[],Loadbalancerstats=Zonestats:{},Serverstats:[]}ServerList:null
2018-04-2320:20:42.485INFO[trace-a,,,]71722---[ender@761e788f}]c.n.l.DynamicServerListLoadBalancer:UsingserverListUpdaterPollingServerListUpdater
2018-04-2320:20:42.492INFO[trace-a,,,]71722---[ender@761e788f}]c.n.l.DynamicServerListLoadBalancer:DynamicServerListLoadBalancerforclientlocalhostinitialized:DynamicServerListLoadBalancer:{NFLoadBalancer:name=localhost,currentlistofServers=[],Loadbalancerstats=Zonestats:{},Serverstats:[]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@516a7895
2018-04-2320:20:42.548INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]s.c.a.AnnotationConfigApplicationContext:RefreshingSpringClientFactory-trace-b:startupdate[MonApr2320:20:42CST2018];parent:org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@41ab013
2018-04-2320:20:42.617INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]f.a.AutowiredAnnotationBeanPostProcessor:JSR-330'javax.inject.Inject'annotationfoundandsupportedforautowiring
2018-04-2320:20:42.855INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]c.netflix.config.ChainedDynamicProperty:Flippingproperty:trace-b.ribbon.ActiveConnectionsLimittouseNEXTproperty:niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647
2018-04-2320:20:42.868INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]c.n.u.concurrent.ShutdownEnabledTimer:Shutdownhookinstalledfor:NFLoadBalancer-PingTimer-trace-b
2018-04-2320:20:42.869INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]c.netflix.loadbalancer.BaseLoadBalancer:Client:trace-binstantiatedaLoadBalancer:DynamicServerListLoadBalancer:{NFLoadBalancer:name=trace-b,currentlistofServers=[],Loadbalancerstats=Zonestats:{},Serverstats:[]}ServerList:null
2018-04-2320:20:42.870INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]c.n.l.DynamicServerListLoadBalancer:UsingserverListUpdaterPollingServerListUpdater
2018-04-2320:20:42.905INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]c.netflix.config.ChainedDynamicProperty:Flippingproperty:trace-b.ribbon.ActiveConnectionsLimittouseNEXTproperty:niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647
2018-04-2320:20:42.907INFO[trace-a,d28b72b2317c023f,d28b72b2317c023f,true]71722---[ctor-http-nio-2]c.n.l.DynamicServerListLoadBalancer:DynamicServerListLoadBalancerforclienttrace-binitialized:DynamicServerListLoadBalancer:{NFLoadBalancer:name=trace-b,currentlistofServers=[172.16.106.93:8081],Loadbalancerstats=Zonestats:{defaultzone=[Zone:defaultzone;Instancecount:1;Activeconnectionscount:0;Circuitbreakertrippedcount:0;Activeconnectionsperserver:0.0;]
},Serverstats:[[Server:172.16.106.93:8081;Zone:defaultZone;TotalRequests:0;Successiveconnectionfailure:0;Totalblackoutseconds:0;Lastconnectionmade:ThuJan0108:00:00CST1970;Firstconnectionmade:ThuJan0108:00:00CST1970;ActiveConnections:0;totalfailurecountinlast(1000)msecs:0;averageresptime:0.0;90percentileresptime:0.0;95percentileresptime:0.0;minresptime:0.0;maxresptime:0.0;stddevresptime:0.0]
]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@31f05c5
2018-04-2320:20:43.878INFO[trace-a,,,]71722---[erListUpdater-1]c.netflix.config.ChainedDynamicProperty:Flippingproperty:trace-b.ribbon.ActiveConnectionsLimittouseNEXTproperty:niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647


--trace-b
===calltrace-b===
2018-04-2320:20:43.944INFO[trace-b,,,]71662---[ender@22a10ac6}]s.c.a.AnnotationConfigApplicationContext:RefreshingSpringClientFactory-localhost:startupdate[MonApr2320:20:43CST2018];parent:org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@49c6c24f
2018-04-2320:20:44.124INFO[trace-b,,,]71662---[ender@22a10ac6}]f.a.AutowiredAnnotationBeanPostProcessor:JSR-330'javax.inject.Inject'annotationfoundandsupportedforautowiring
2018-04-2320:20:44.524INFO[trace-b,,,]71662---[ender@22a10ac6}]c.netflix.config.ChainedDynamicProperty:Flippingproperty:localhost.ribbon.ActiveConnectionsLimittouseNEXTproperty:niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647
2018-04-2320:20:44.550INFO[trace-b,,,]71662---[ender@22a10ac6}]c.n.u.concurrent.ShutdownEnabledTimer:Shutdownhookinstalledfor:NFLoadBalancer-PingTimer-localhost
2018-04-2320:20:44.600INFO[trace-b,,,]71662---[ender@22a10ac6}]c.netflix.loadbalancer.BaseLoadBalancer:Client:localhostinstantiatedaLoadBalancer:DynamicServerListLoadBalancer:{NFLoadBalancer:name=localhost,currentlistofServers=[],Loadbalancerstats=Zonestats:{},Serverstats:[]}ServerList:null
2018-04-2320:20:44.610INFO[trace-b,,,]71662---[ender@22a10ac6}]c.n.l.DynamicServerListLoadBalancer:UsingserverListUpdaterPollingServerListUpdater
2018-04-2320:20:44.617INFO[trace-b,,,]71662---[ender@22a10ac6}]c.n.l.DynamicServerListLoadBalancer:DynamicServerListLoadBalancerforclientlocalhostinitialized:DynamicServerListLoadBalancer:{NFLoadBalancer:name=localhost,currentlistofServers=[],Loadbalancerstats=Zonestats:{},Serverstats:[]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@1e1794d0

訪問 http://localhost:9411/zipkin

點擊 Find Traces 會看到有一條記錄:

2ce66284-92e3-11ed-bfe3-dac502259ad0.jpg

點擊記錄進去頁面,可以看到每一個服務所耗費的時間和順序:

2cf41924-92e3-11ed-bfe3-dac502259ad0.jpg

點擊依賴分析,可以看到項目之間的調用關系:

2d0a86aa-92e3-11ed-bfe3-dac502259ad0.jpg

方式二、消息總線 RabbitMQ

因為之前說的 Zipkin 不再推薦我們來自定義 Server 端了,所以在最新版本的 Spring Cloud 依賴管理里已經找不到 zipkin-server 了。

那么如果直接用官方提供的 jar 包怎么從 RabbitMQ 中獲取 trace 信息呢?

我們可以通過環境變量讓 Zipkin 從 RabbitMQ 中讀取信息,就像這樣:

RABBIT_ADDRESSES=localhostjava-jarzipkin.jar

可配置的環境變量如下表所示:

屬性 環境變量 描述
zipkin.collector.rabbitmq.concurrency RABBIT_CONCURRENCY 并發消費者數量,默認為1
zipkin.collector.rabbitmq.connection-timeout RABBIT_CONNECTION_TIMEOUT 建立連接時的超時時間,默認為 60000毫秒,即 1 分鐘
zipkin.collector.rabbitmq.queue RABBIT_QUEUE 從中獲取 span 信息的隊列,默認為 zipkin
zipkin.collector.rabbitmq.uri RABBIT_URI 符合RabbitMQ URI 規范 的 URI,例如amqp://user:pass@host:10000/vhost

如果設置了 URI,則以下屬性將被忽略。

屬性 環境變量 描述
zipkin.collector.rabbitmq.addresses RABBIT_ADDRESSES 用逗號分隔的 RabbitMQ 地址列表,例如localhost:5672,localhost:5673
zipkin.collector.rabbitmq.password RABBIT_PASSWORD 連接到 RabbitMQ 時使用的密碼,默認為 guest
zipkin.collector.rabbitmq.username RABBIT_USER 連接到 RabbitMQ 時使用的用戶名,默認為guest
zipkin.collector.rabbitmq.virtual-host RABBIT_VIRTUAL_HOST 使用的 RabbitMQ virtual host,默認為 /
zipkin.collector.rabbitmq.use-ssl RABBIT_USE_SSL 設置為true則用 SSL 的方式與 RabbitMQ 建立鏈接

關于 Zipkin 的 Client 端,也就是微服務應用,我們就在之前 trace-a、trace-b 的基礎上修改,只要在他們的依賴里都引入 spring-cloud-stream-binder-rabbit 就好了,別的不用改。


org.springframework.cloud
spring-cloud-stream-binder-rabbit

不過為了說明是通過 RabbitMQ 傳輸的信息,我將 spring.zipkin.base-url 均改為http://localhost:9412/,即指向一個錯誤的地址。

分別重啟 trace-a、trace-b 工程,并啟動 Zipkin Server

RABBIT_ADDRESSES=localhostjava-jarzipkin.jar

然后訪問 http://localhost:8080/trace-a 并刷新 Zipkin UI,看到如下內容,就說明 Sleuth+Zipkin+RabbitMQ 整合成功了。

2d19db00-92e3-11ed-bfe3-dac502259ad0.jpg

此時看 RabbitMQ Admin,會看到多了一個名為 zipkin 的 Queue

2d25b18c-92e3-11ed-bfe3-dac502259ad0.jpg

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分布式
    +關注

    關注

    1

    文章

    899

    瀏覽量

    74502
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14343

原文標題:分布式鏈路跟蹤 Sleuth 與 Zipkin

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HarmonyOS Next 應用元服務開發-分布式數據對象遷移數據權限與基礎數據

    使用分布式數據對象遷移數據,當需要遷移的數據較大(100KB以上)或需要遷移文件時,可以使用分布式數據對象。原理與接口說明詳見分布式數據對象跨設備數據同步。 說明:自API 12起,由于直接使用跨
    發表于 12-24 09:40

    分布式通信的原理和實現高效分布式通信背后的技術NVLink的演進

    大型模型的大小已經超出了單個 GPU 的范圍。所以就需要實現跨多個 GPU 的模型訓練,這種訓練方式就涉及到了分布式通信和 NVLink。 當談及分布式通信和 NVLink 時,我們進入了一個引人入勝且不斷演進的技術領域,下面我們將簡單介紹
    的頭像 發表于 11-18 09:39 ?447次閱讀
    <b class='flag-5'>分布式</b>通信的原理和實現高效<b class='flag-5'>分布式</b>通信背后的技術NVLink的演進

    分布式光纖測溫解決方案

    分布式光纖測溫解決方案
    的頭像 發表于 11-12 01:02 ?148次閱讀
    <b class='flag-5'>分布式</b>光纖測溫解決方案

    淺談屋頂分布式光伏發電技術的設計與應用

    【摘要】為了緩解城市用電緊張袁降低人們的用電成本,可以在工業園區、辦公樓屋頂等場所應用屋頂分布式光伏發電技術進行就近轉換、并網發電袁充分利用建筑物屋頂的太陽資源。概述屋頂分布式光伏發電技術,分析屋頂
    的頭像 發表于 11-11 15:10 ?483次閱讀
    淺談屋頂<b class='flag-5'>分布式</b>光伏發電技術的設計與應用

    分布式光纖測溫是什么?應用領域是?

    分布式光纖測溫是一種先進的溫度測量技術,它利用光纖的拉曼散射原理進行溫度監測。以下是對分布式光纖測溫的詳細介紹: 一、基本原理 分布式光纖測溫的原理基于光纖的拉曼散射效應。當光纖某處的溫度發生變化
    的頭像 發表于 10-24 15:30 ?372次閱讀
    <b class='flag-5'>分布式</b>光纖測溫是什么?應用領域是?

    分布式光纖聲波傳感技術的工作原理

    分布式光纖聲波傳感技術(Distributed Acoustic Sensing,DAS)是一種利用光纖作為傳感元件,實現對沿光纖路徑上的環境參數進行連續分布式測量的技術。
    的頭像 發表于 10-18 14:50 ?674次閱讀
    <b class='flag-5'>分布式</b>光纖聲波傳感技術的工作原理

    分布式輸電線路故障定位中的分布式是指什么

    所謂分布式指的是產品的部署方式,是相對于集中式而言的。 一、部署方式 分散安裝:分布式輸電線路故障定位系統中的采集裝置需要安裝在輸電線路的多個位置,通常是每隔一定距離設置一個監測點,以確保對整條線路
    的頭像 發表于 10-16 11:39 ?257次閱讀
    <b class='flag-5'>分布式</b>輸電線路故障定位中的<b class='flag-5'>分布式</b>是指什么

    隆基全球分布式研發中心揭牌

    攜手BC向未來,創新共筑生態。7月3日,隆基全球分布式研發中心啟用儀式暨合作伙伴共創大會在嘉興舉行。
    的頭像 發表于 07-04 11:06 ?512次閱讀

    鴻蒙開發接口數據管理:【@ohos.data.distributedData (分布式數據管理)】

    分布式數據管理為應用程序提供不同設備間數據庫的分布式協同能力。通過調用分布式數據各個接口,應用程序可將數據保存到分布式數據庫中,并可對分布式
    的頭像 發表于 06-07 09:30 ?996次閱讀
    鴻蒙開發接口數據管理:【@ohos.data.distributedData (<b class='flag-5'>分布式</b>數據管理)】

    分布式光伏發電有哪些優點?分布式光伏發電有哪些應用形式?

    分布式光伏發電是一種在用戶附近或用電現場配置的小型光伏發電系統,它具有許多顯著的優點和多樣的應用形式。
    的頭像 發表于 04-29 17:44 ?4203次閱讀

    分布式能源是什么意思?分布式能源有什么優勢?

    分布式能源指的是在用戶端或靠近用戶端的小型能源供應系統,它能夠直接滿足用戶的多種能源需求,如電力、熱能和冷能。
    的頭像 發表于 04-29 17:26 ?2288次閱讀

    HarmonyOS開發實例:【分布式數據服務】

    分布式數據服務(Distributed Data Service,DDS)為應用程序提供不同設備間數據分布式的能力。
    的頭像 發表于 04-18 10:18 ?729次閱讀
    HarmonyOS開發實例:【<b class='flag-5'>分布式</b>數據服務】

    HarmonyOS實戰案例:【分布式賬本】

    Demo基于Open Harmony系統使用ETS語言進行編寫,本Demo主要通過設備認證、分布式拉起、分布式數據管理等功能來實現。
    的頭像 發表于 04-12 16:40 ?1330次閱讀
    HarmonyOS實戰案例:【<b class='flag-5'>分布式</b>賬本】

    鴻蒙OS 分布式任務調度

    鴻蒙OS 分布式任務調度概述 在 HarmonyO S中,分布式任務調度平臺對搭載 HarmonyOS 的多設備構筑的“超級虛擬終端”提供統一的組件管理能力,為應用定義統一的能力基線、接口
    的頭像 發表于 01-29 16:50 ?497次閱讀

    什么是分布式架構?

    分布式架構是指將一個系統或應用拆分成多個獨立的節點,這些節點通過網絡連接進行通信和協作,以實現共同完成任務的一種架構模式。這種架構模式旨在提高系統的可擴展性、可靠性和性能表現。 一、分布式架構的特點
    的頭像 發表于 01-12 15:04 ?1237次閱讀
    什么是<b class='flag-5'>分布式</b>架構?
    主站蜘蛛池模板: xxxx黄| se97se成人亚洲网站在线观看| 好大好硬好爽免费视频| 福利视频一区二区三区| 日本黄色一级网站| 偷偷要色偷偷| 色成人在线| 男人天堂网在线| 五月天亚洲婷婷| 色a4yy综合私人| 男女www视频在线看网站| 天天透天天操| 2019国产情侣| 天天久久影视色香综合网| 免费看的一级毛片| 99久在线| 丁香激情五月| 日本黄色片段| 色v在线| 一级做a爰片久久毛片看看| 日韩美女三级| 国产 麻豆 欧美亚洲综合久久| 国产美女亚洲精品久久久综合| 午夜性视频播放免费视频| 五月婷婷丁香综合| www.色天使| 1024手机看片欧美日韩| 四虎永久影院| 天天添天天射| www一区二区三区| 欧美1| 精品视频一区在线观看| 五月激情站| 天天干狠狠干| 亚洲一本视频| 日本色图视频| 在线理论视频| 好紧好湿好黄的视频| 国产高清免费| 国产视频观看| 三级黄色a|