如何在解决方案中新建网站,诸城网络营销,江苏搜索引擎优化公司,wordpress使用攻略简述
使用 spring cloud 用到最多的是各种rest服务调用#xff0c;Twitter的Zipkin 是一种实现分布式跟踪解决方案#xff0c;Sleuth则是用来共方便的集成Zipkin。调用跟踪系统的业务场景
随着服务的拆分#xff0c;系统的模块变得越来越多#xff0c;不同的模块可能由不同…简述
使用 spring cloud 用到最多的是各种rest服务调用Twitter的Zipkin 是一种实现分布式跟踪解决方案Sleuth则是用来共方便的集成Zipkin。调用跟踪系统的业务场景
随着服务的拆分系统的模块变得越来越多不同的模块可能由不同的团队维护一个请求可能会涉及到几十个服务的协同处理 牵扯到多个团队的业务系统那么如何快速准确的定位到线上故障比较成熟的解决方案是通过调用链的方式把一次请求调用过程完整的串联起来这样就实现了对请求调用路径的监控。
故障快速定位
通过调用链跟踪一次请求的逻辑轨迹可以用完整清晰的展示出来。 开发中可以在业务日志中添加调用链ID可以通过调用链结合业务日志快速定位错误信息。
各个调用环节的性能分析
在调用链的各个环节分别添加调用时延可以分析系统的性能瓶颈进行针对性的优化。
各个调用环节的可用性持久层依赖等
通过分析各个环节的平均时延QPS等信息可以找到系统的薄弱环节对一些模块做调整如数据冗余等。
数据分析等
调用链是一条完整的业务日志可以得到用户的行为路径汇总分析应用在很多业务场景。Spring Cloud Sleuth
Spring Cloud Sleuth为Spring Cloud实现分布式跟踪解决方案。
Zipkin
为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。
使用
Zipkin可以通过http收集信息也可以通过mq收集信息
Zipkin server代码
pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.xx.xxx.server/groupIdartifactIdzipkin-server/artifactIdversion0.0.1-SNAPSHOT/versionpackagingjar/packagingnamezipkin-server/namedescriptionzipkin追踪服务/descriptionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.versionzipkin.version2.3.1/zipkin.versionspring-cloud.versionEdgware.SR2/spring-cloud.version/propertiesdependenciesdependencygroupIdio.zipkin.java/groupIdartifactIdzipkin-server/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-sleuth-zipkin-stream/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-sleuth/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-rabbit/artifactId/dependencydependencygroupIdio.zipkin.java/groupIdartifactIdzipkin-autoconfigure-ui/artifactIdscoperuntime/scope/dependencydependencygroupIdio.zipkin.java/groupIdartifactIdzipkin-autoconfigure-storage-mysql/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-sleuth-core/artifactId/dependency!--spring boot--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion1.3.2/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion1.5.4.RELEASE/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/projectapplication.yml
server:port: 9411
spring:application:name: zipkin-serversleuth:enabled: false
#rabbitmq设置如果使用http收集信息可以不用设置rabbitmq:host: 172.16.10.71port: 5672username: adminpassword: adminlistener:simple:concurrency: 1max-concurrency: 10acknowledge-mode: auto
#数据库设置如果不使用数据库可以不需要设置,需要创建zipkin数据库datasource:name: zipkindriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/zipkin?autoReconnecttrueuseUnicodetruecharacterEncodingUTF-8zeroDateTimeBehaviorconvertToNulluseSSLfalseusername: rootpassword: 123456# 会自动生成数据库表结构schema: classpath:/mysql.sqlinitialize: truecontinue-on-error: true
zipkin:storage:type: mysqljava
SpringBootApplication
EnableZipkinStreamServer
public class ZipkinServerApplication{public static void main(String[] args) {new SpringApplicationBuilder(ZipkinServerApplication.class).run(args);System.out.println(Server start succ);}
}client 代码
pom.xml添加sleuthzipkin依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-sleuth-core/artifactId
/dependency
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-sleuth/artifactId
/dependency
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-sleuth-zipkin-stream/artifactId
/dependency
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-rabbit/artifactId
/dependencyapplication.yml
#spring
spring:zipkin:enabled: true# zipkin server地址如果使用mq收集这个就不要配置base-url: http://localhost:9411# 应采样的请求百分比。例如1.0 100的请求应该被抽样。精度仅为全数即不支持0.1的痕迹。开发过程使用1.0生产根据实际情况设置sleuth:sampler:percentage: 1.0rabbitmq:host: 172.16.10.71port: 5672username: adminpassword: adminlistener:simple:concurrency: 1max-concurrency: 10acknowledge-mode: auto先启动server然后启动应用服务然后在应用服务上调用其他服务
打开server中zipkin监控面板http://localhost:9411