diff --git a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/pom.xml b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/pom.xml
index 5b086e9b..df663f00 100644
--- a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/pom.xml
+++ b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/pom.xml
@@ -50,6 +50,43 @@
2.13.0
+
+
+
+ io.zipkin.brave
+ brave
+
+
+ io.zipkin.reporter2
+ zipkin-sender-okhttp3
+
+
+
+
+
+ io.zipkin.brave
+ brave-instrumentation-spring-webmvc
+
+
+
+
+ io.zipkin.brave
+ brave-instrumentation-dubbo
+ 5.10.1
+
+
+
+
+
+ io.zipkin.brave
+ brave-bom
+ 5.9.1
+ pom
+ import
+
+
+
+
diff --git a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/java/cn/iocoder/springboot/lab40/zpkindemo/consumerdemo/config/SpringMvcConfiguration.java b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/java/cn/iocoder/springboot/lab40/zpkindemo/consumerdemo/config/SpringMvcConfiguration.java
new file mode 100644
index 00000000..304a394f
--- /dev/null
+++ b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/java/cn/iocoder/springboot/lab40/zpkindemo/consumerdemo/config/SpringMvcConfiguration.java
@@ -0,0 +1,25 @@
+package cn.iocoder.springboot.lab40.zpkindemo.consumerdemo.config;
+
+import brave.spring.webmvc.SpanCustomizingAsyncHandlerInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+@Import(SpanCustomizingAsyncHandlerInterceptor.class)
+public class SpringMvcConfiguration implements WebMvcConfigurer {
+
+ @Autowired
+ public SpanCustomizingAsyncHandlerInterceptor webMvcTracingCustomizer;
+
+ /**
+ * Decorates server spans with application-defined web tags
+ */
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(webMvcTracingCustomizer);
+ }
+
+}
diff --git a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/java/cn/iocoder/springboot/lab40/zpkindemo/consumerdemo/config/ZipkinConfiguration.java b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/java/cn/iocoder/springboot/lab40/zpkindemo/consumerdemo/config/ZipkinConfiguration.java
new file mode 100644
index 00000000..29903e32
--- /dev/null
+++ b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/java/cn/iocoder/springboot/lab40/zpkindemo/consumerdemo/config/ZipkinConfiguration.java
@@ -0,0 +1,84 @@
+package cn.iocoder.springboot.lab40.zpkindemo.consumerdemo.config;
+
+import brave.CurrentSpanCustomizer;
+import brave.SpanCustomizer;
+import brave.Tracing;
+import brave.http.HttpTracing;
+import brave.servlet.TracingFilter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import zipkin2.Span;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.Sender;
+import zipkin2.reporter.okhttp3.OkHttpSender;
+
+import javax.servlet.Filter;
+
+@Configuration
+public class ZipkinConfiguration {
+
+ // ==================== 通用配置 ====================
+
+ /**
+ * Configuration for how to send spans to Zipkin
+ */
+ @Bean
+ public Sender sender() {
+ return OkHttpSender.create("http://127.0.0.1:9411/api/v2/spans");
+ }
+
+ /**
+ * Configuration for how to buffer spans into messages for Zipkin
+ */
+ @Bean
+ public AsyncReporter spanReporter() {
+ return AsyncReporter.create(sender());
+ }
+
+ /**
+ * Controls aspects of tracing such as the service name that shows up in the UI
+ */
+ @Bean
+ public Tracing tracing(@Value("${spring.application.name}") String serviceName) {
+ return Tracing.newBuilder()
+ .localServiceName(serviceName)
+// .currentTraceContext(ThreadLocalCurrentTraceContext.newBuilder()
+// .addScopeDecorator(MDCScopeDecorator.create()) // puts trace IDs into logs
+// .build()
+// )
+ .spanReporter(spanReporter()).build();
+ }
+
+ /**
+ * Allows someone to add tags to a span if a trace is in progress
+ */
+ @Bean
+ public SpanCustomizer spanCustomizer(Tracing tracing) {
+ return CurrentSpanCustomizer.create(tracing);
+ }
+
+ // ==================== HTTP 相关 ====================
+
+ /**
+ * Decides how to name and tag spans. By default they are named the same as the http method
+ */
+ @Bean
+ public HttpTracing httpTracing(Tracing tracing) {
+ return HttpTracing.create(tracing);
+ }
+
+ /**
+ * Creates server spans for http requests
+ */
+ @Bean
+ public Filter tracingFilter(HttpTracing httpTracing) {
+ return TracingFilter.create(httpTracing);
+ }
+
+ // ==================== SpringMVC 相关 ====================
+ // @see SpringMvcConfiguration 类上的,@Import(SpanCustomizingAsyncHandlerInterceptor.class)
+
+
+
+}
diff --git a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/resources/application.yaml b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/resources/application.yaml
index 32af3588..ef960b5f 100644
--- a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/resources/application.yaml
+++ b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-consumer/src/main/resources/application.yaml
@@ -1,8 +1,15 @@
+spring:
+ application:
+ name: user-service-consumer
+
# dubbo 配置项,对应 DubboConfigurationProperties 配置类
dubbo:
# Dubbo 应用配置
application:
- name: user-service-consumer # 应用名
+ name: ${spring.application.name} # 应用名
# Dubbo 注册中心配置
registry:
address: zookeeper://127.0.0.1:2181 # 注册中心地址。个鞥多注册中心,可见 http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html 文档。
+ # Dubbo 服务提供者的配置,对应 ConsumerConfig 类
+ consumer:
+ filter: tracing
diff --git a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/pom.xml b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/pom.xml
index 9e6a301c..c818e108 100644
--- a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/pom.xml
+++ b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/pom.xml
@@ -50,6 +50,36 @@
2.13.0
+
+
+
+ io.zipkin.brave
+ brave
+
+
+ io.zipkin.reporter2
+ zipkin-sender-okhttp3
+
+
+
+
+ io.zipkin.brave
+ brave-instrumentation-dubbo
+ 5.10.1
+
+
+
+
+
+ io.zipkin.brave
+ brave-bom
+ 5.9.1
+ pom
+ import
+
+
+
+
diff --git a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/src/main/java/cn/iocoder/springboot/lab40/zipkindemo/providerdemo/config/ZipkinConfiguration.java b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/src/main/java/cn/iocoder/springboot/lab40/zipkindemo/providerdemo/config/ZipkinConfiguration.java
new file mode 100644
index 00000000..3348c706
--- /dev/null
+++ b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/src/main/java/cn/iocoder/springboot/lab40/zipkindemo/providerdemo/config/ZipkinConfiguration.java
@@ -0,0 +1,57 @@
+package cn.iocoder.springboot.lab40.zipkindemo.providerdemo.config;
+
+import brave.CurrentSpanCustomizer;
+import brave.SpanCustomizer;
+import brave.Tracing;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import zipkin2.Span;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.Sender;
+import zipkin2.reporter.okhttp3.OkHttpSender;
+
+@Configuration
+public class ZipkinConfiguration {
+
+ // ==================== 通用配置 ====================
+
+ /**
+ * Configuration for how to send spans to Zipkin
+ */
+ @Bean
+ public Sender sender() {
+ return OkHttpSender.create("http://127.0.0.1:9411/api/v2/spans");
+ }
+
+ /**
+ * Configuration for how to buffer spans into messages for Zipkin
+ */
+ @Bean
+ public AsyncReporter spanReporter() {
+ return AsyncReporter.create(sender());
+ }
+
+ /**
+ * Controls aspects of tracing such as the service name that shows up in the UI
+ */
+ @Bean
+ public Tracing tracing(@Value("${spring.application.name}") String serviceName) {
+ return Tracing.newBuilder()
+ .localServiceName(serviceName)
+// .currentTraceContext(ThreadLocalCurrentTraceContext.newBuilder()
+// .addScopeDecorator(MDCScopeDecorator.create()) // puts trace IDs into logs
+// .build()
+// )
+ .spanReporter(spanReporter()).build();
+ }
+
+ /**
+ * Allows someone to add tags to a span if a trace is in progress
+ */
+ @Bean
+ public SpanCustomizer spanCustomizer(Tracing tracing) {
+ return CurrentSpanCustomizer.create(tracing);
+ }
+
+}
diff --git a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/src/main/resources/application.yaml b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/src/main/resources/application.yaml
index 3998dbeb..9fa121ee 100644
--- a/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/src/main/resources/application.yaml
+++ b/lab-40/lab-40-zipkin-dubbo/lab-40-zipkin-dubbo-provider/src/main/resources/application.yaml
@@ -1,8 +1,12 @@
+spring:
+ application:
+ name: user-service-provider
+
# dubbo 配置项,对应 DubboConfigurationProperties 配置类
dubbo:
# Dubbo 应用配置
application:
- name: user-service-provider # 应用名
+ name: ${spring.application.name} # 应用名
# Dubbo 注册中心配
registry:
address: zookeeper://127.0.0.1:2181 # 注册中心地址。个鞥多注册中心,可见 http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html 文档。
@@ -13,3 +17,6 @@ dubbo:
# 配置扫描 Dubbo 自定义的 @Service 注解,暴露成 Dubbo 服务提供者
scan:
base-packages: cn.iocoder.springboot.lab40.zipkindemo.providerdemo.service
+ # Dubbo 服务提供者的配置,对应 ProviderConfig 类
+ provider:
+ filter: tracing
diff --git a/labx-13/labx-13-sc-sleuth-dubbo/labx-13-sc-sleuth-dubbo-consumer/src/main/resources/application.yaml b/labx-13/labx-13-sc-sleuth-dubbo/labx-13-sc-sleuth-dubbo-consumer/src/main/resources/application.yaml
index 696e55cd..45680e3e 100644
--- a/labx-13/labx-13-sc-sleuth-dubbo/labx-13-sc-sleuth-dubbo-consumer/src/main/resources/application.yaml
+++ b/labx-13/labx-13-sc-sleuth-dubbo/labx-13-sc-sleuth-dubbo-consumer/src/main/resources/application.yaml
@@ -16,7 +16,7 @@ dubbo:
# Dubbo 服务注册中心配置,对应 RegistryConfig 类
registry:
address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址
- # Dubbo 服务提供者的配置,对应 ProviderConfig 类
+ # Dubbo 服务提供者的配置,对应 ConsumerConfig 类
consumer:
filter: tracing
# Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类