用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

cloud云    -  云代码空间

——

企业级java springboot b2bc商城系统开源源码二次开发-(九)服务链路追踪(Spri

2018-12-28|381阅||

摘要:企业级java springboot b2bc商城系统开源源码二次开发-(九)服务链路追踪(Spring Cloud Sleuth)

这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件。

一、简介
Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples), and you will see the correlation data being collected in logs, as long as you are logging requests.

—— 摘自官网

Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。

二、服务追踪分析
微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。

 

 

三、术语
Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址) 
span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。
Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace。
Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束 
cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始
sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟
ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间
cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间 
将Span和Trace在一个系统中使用Zipkin注解的过程图形化:
将Span和Trace在一个系统中使用Zipkin注解的过程图形化:

 

 

四、构建工程
基本知识讲解完毕,下面我们来实战,本文的案例主要有三个工程组成:一个server-zipkin,它的主要作用使用ZipkinServer 的功能,收集调用数据,并展示;一个service-hi,对外暴露hi接口;一个service-miya,对外暴露miya接口;这两个service可以相互调用;并且只有调用了,server-zipkin才会收集数据的,这就是为什么叫服务追踪了。

4.1 构建server-zipkin

建一个spring-boot工程取名为server-zipkin,在其pom引入依赖:


<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-server</artifactId>
        </dependency>
 
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-autoconfigure-ui</artifactId>
        </dependency>
 
    </dependencies>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
在其程序入口类, 加上注解@EnableZipkinServer,开启ZipkinServer的功能:
@SpringBootApplication
@EnableZipkinServer
public class ServerZipkinApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ServerZipkinApplication.class, args);
    }
}

在配置文件application.yml指定服务端口为:
server.port=9411

4.2 创建service-hi

在其pom引入起步依赖spring-cloud-starter-zipkin,代码如下:


<dependencies>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--compile('org.springframework.cloud:spring-cloud-starter-zipkin')-->
 
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
在其配置文件application.yml指定zipkin server的地址,头通过配置“spring.zipkin.base-url”指定:
server.port=8988
spring.zipkin.base-url=http://localhost:9411
spring.application.name=service-hi

通过引入spring-cloud-starter-zipkin依赖和设置spring.zipkin.base-url就可以了。

对外暴露接口:


@SpringBootApplication
@RestController
public class ServiceHiApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ServiceHiApplication.class, args);
    }
 
    private static final Logger LOG = Logger.getLogger(ServiceHiApplication.class.getName());
 
 
    @Autowired
    private RestTemplate restTemplate;
 
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
 
    @RequestMapping("/hi")
    public String callHome(){
        LOG.log(Level.INFO, "calling trace service-hi  ");
        return restTemplate.getForObject("http://localhost:8989/miya", String.class);
    }
    @RequestMapping("/info")
    public String info(){
        LOG.log(Level.INFO, "calling trace service-hi ");
 
        return "i'm service-hi";
 
    }
 
    @Bean
    public AlwaysSampler defaultSampler(){
        return new AlwaysSampler();
    }
}

架构代码如下:

"分布式b2b <wbr

 Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求: yuncode.net


顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: cloud云
    • 等级: 高级设计师
    • 积分: 5150
    • 代码: 0 个
    • 文章: 216 篇
    • 随想: 0 条
    • 访问: 11 次
    • 关注

    人气代码

      标签

      java(57)api(3)教程(27)Spring(60)cache(2)+(8)springmvc(3)mybatis(4)(十)(2)(十一)(2)Cloud(29)Cloud-hong(1)Cloud分布式微服(1)Cloud-Hong(1)Cloud分布式微服(1)Cloud-鸿鹄Cl(1)Cloud--Hon(1)Cloud分布式微服(1)Cloud--Hon(1)Cloud分布式微服(1)Cloud--hon(1)Cloud分布式微服(1)Cloud--Hon(1)分布式微服务云系统-(1)企业分布式微服务云架(1)Cloud-Hong(1)Cloud分布式微服(1)Boot(4)企业分布式微服务云架(1)Cloud--hon(1)Cloud分布式微服(1)Cloud--Hon(1)分布式微服务云系统-(1)Cloud--Hon(1)Cloud分布式微服(1)企业分布式微服务云架(1)Cloud--hon(1)Cloud分布式微服(1)Cloud--Hon(1)分布式微服务云系统-(1)cloud--鸿鹄C(1)源码(12)-(22)cloud集成项目(1)Cloud云服务(1)整合spring(12)cloud云服务架构(5)介绍一下Spring(1)Cloud微服务架构(1)总结Spring(1)Cloud云架构(14)登出流程(3)(2)Cloud+Spri(1)Boot+Mybat(1)+微服务(1)企业分布式微服务云架(1)Spring+(1)SSO单点登录应用认(1)跟大家介绍一下关于S(1)Consul(1)Cloud构建微服务(1)Cloud构建微服务(1)Cloud构建微服务(1)SSO单点登录之OA(1)根据token获取用(1)Netflix(3)springclou(1)RestTempla(1)HongHu云架构c(1)Commons(1)普通抽象(1)Config-Git(1)Cloud--Hon(1)分布式微服务云系统-(1)Cloud微服务分布(1)企业分布式微服务云架(1)Cloud自定义引导(1)SSO单点登录之OA(1)SSO单点登录之OA(1)SSO单点登录之OA(1)cloud云架构-S(1)企业分布式微服务云架(1)企业分布式微服务云架(1)Cloud--Hon(1)Cloud分布式微服(1)项目过程构建(1)分享Spring(1)Config服务器(1)Cloud微服务架构(1)Cloud微服务分布(1)Cloud-hong(1)Cloud分布式微服(1)springclou(1)Cloud微服务分布(1)SpringBoot(59)Cloud各个组件配(1)RestTempla(1)Cloud分布式微服(1)Cloud自定义引导(1)Cloud构建微服务(1)Cloud构建微服务(1)(十七)(1)-消息驱动(1)(十六)(1)-使用spring(1)企业级(29)(二)(3)cloud项目(1)(十二)(2)(九)整合sprin(1)commonserv(1)SSO单点登录之OA(1)SSO单点登录之OA(1)SSO单点登录之OA(1)(九)整合sprin(1)commonserv(1)SSO单点登录之OA(1)SSO单点登录之OA(1)SSO单点登录之OA(1)(十三)(1)SSO单点登录之OA(1)B2B2C(53)(九)Java(1)o2o多用户商城(24)(十)Java(1)(十一)Java(2)(十二)(1)springclou(1)springclou(1)springclou(1)SSO单点登录之OA(1)springclou(1)SSO单点登录之OA(1)springclou(1)(十三)java(2)b2b2c多用户商城(7)(十四)Java(1)(十五)Java(2)(十六)Java(2)b2b2c多用户商城(1)SSO单点登录之OA(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)(十七)Java(1)springclou(1)springclou(1)项目构建过程(七)(2)mybatis电子商(1)Springclou(1)Cloud构建分布式(1)SpringClou(1)Config)(1)ssm(15)springclou(1)b2b2c多用户商城(1)B2B2C多租户电子(1)springclou(1)springclou(1)springclou(1)springclou(1)企业级java(5)shop(6)多用户商城系统源码(2)(十二)java(1)关于SpringCl(1)Bus)(1)b2bc商城系统开源(1)Sleuth)(1)多用户商城系统源码-(1)微服务java_b2(1)springclou(1)springclou(1)springclou(1)springclou(1)b2bc商城系统开源(1)配置自动刷新(1)(四):(1)b2b2c多用户商城(1)Dashboard和(1)b2b2c多用户商城(1)b2b2c多用户商城(1)多用户商城系统(1)(十)用spring(2)springboot(1)(十三)spring(1)微服务java_b2(1)(十二)spring(1)mybatis多租户(1)多级分销spring(1)mybatis多租户(1)多级分销spring(1)mybatis多租户(1)b2b2c多用户商城(1)(二)Spring(3)Boot配置文件详解(1)springclou(1)(一)构建第一个Sp(1)多用户商城系统(三)(1)微服务java_b2(1)整合JPA(1)springclou(1)多级分销Spring(1)多级分销spring(1)mybatis多租户(1)多级分销spring(1)mybatis多租户(1)mybatis多租户(1)多级分销Spring(1)cloud微服务分布(1)Cloud集成项目简(1)cloud微服务分布(1)整合企业架构的技术点(1)(一)spring(1)(十三)java(1)(五)JAVA(1)多用户商城系统源码:(1)b2b2c多用户商城(1)springclou(1)(十二)Spring(1)多用户商城系统:使用(1)Sleuth和Zip(1)(十)java(2)多用户商城系统源码:(1)(十一)企业级jav(1)b2bc商城系统开源(1)(八)java(1)(九)Java(1)多级分销spring(1)mybatis多租户(1)springclou(1)springclou(1)b2b2c多用户商城(1)(十二)微服务多用户(1)springclou(1)Springclou(1)分布式环境下自动发现(1)springclou(1)springclou(1)b2b2c多用户商城(1)b2bc商城系统开源(1)多级分销Spring(1)Dashboard和(1)多级分销Spring(1)多级分销spring(1)mybatis多租户(1)springclou(1)(十一)Java(1)springclou(1)b2bc商城系统开源(1)springclou(1)b2b2c多用户商城(1)多用户商城系统源码((1)springboot(1)Java多用户商城系(1)多用户商城系统(一)(1)springclou(1)Springboot(1)springclou(1)b2b2c多用户商城(1)b2b2c多用户商城(1)springboot(1)(十四)(1)多级Springbo(1)Springboot(1)b2b2c多用户商城(1)springclou(1)springclou(1)springclou(1)springclou(1)common-ser(1)b2b2c多用户商城(1)b2b2c多用户商城(1)企业云架构commo(1)b2bc商城系统开源(1)common-ser(1)微服务java_b2(1)多租户电子商城系统(1)b2b2c多用户商城(1)多级分销Spring(1)整合企业架构的技术点(1)springboot(1)企业云架构commo(1)微服务架构(2)(七)springb(1)(八)springb(1)(九)springb(1)Restdocs创建(1)(十一)spring(1)(十二)spring(1)(十四)在sprin(1)(十五)Spring(1)(十六)用restT(1)(十六)用restT(1)cloud微服务分布(1)SpringClou(1)服务的注册与发现(E(1)SpringClou(1)服务消费者(rest(1)SpringClou(1)服务消费者(rest(1)SpringClou(1)关于SpringCl(1)springclou(1)Cloud微服务架构(1)(六)Spring(1)Cloud云架构一服(1)(三)Spring(1)Cloud云架构一定(1)互联网分布式微服务云(1)(十六)用restT(1)教程(十五)Spri(1)(十四)在sprin(1)Config-Git(1)springclou(1)commonserv(1)commonserv(1)SSO单点登录之OA(1)Cloud云架构-S(1)根据token获取用(1)SpringClou(1)SpringClou(1)企业分布式微服务云S(1)(四)断路器(Hys(1)企业分布式微服务云S(1)(五)路由网关(zu(1)企业分布式微服务云S(1)(六)分布式配置中心(1)企业分布式微服务云S(1)(七)高可用的分布式(1)SpringClou(1)服务消费者(rest(1)(十七)上传文件(1)Tasks)(1)(七)springb(1)(八)springb(1)(九)springb(1)Restdocs创建(1)(十一)spring(1)(十二)spring(1)(十三)spring(1)(十四)在sprin(1)(十五)Spring(1)(十六)用restT(1)(十八)定时任务(S(1)

      最新提问

        站长推荐