springcloud微服务+zipkin+rabbitmq+es

本案例介绍了微服务与链路追踪工具zipkin的集成。
各组件安装方式不过多阐释,请自行百度。

脚本

zipkin-server启动脚本

nohup /usr/bin/java -jar /opt/modules/zipkin/zipkin-server-2.21.5-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=http://127.0.0.1:9200 --zipkin.collector.rabbitmq.addresses=centos7:5672 --zipkin.collector.rabbitmq.username=admin --zipkin.collector.rabbitmq.password=admin --zipkin.collector.rabbitmq.queue=zipkin --port=9411 >> /opt/modules/zipkin/logs/zipkin-server.log 2>&1 &

参数介绍:
nohup 守护进程方式启动
STORAGE_TYPE 数据存储类型
ES_HOSTS es集群地址
zipkin.collector.rabbitmq.addresses 收集器选用rabbitmq,链接信息
zipkin.collector.rabbitmq.username 收集器选用rabbitmq,用户
zipkin.collector.rabbitmq.password 收集器选用rabbitmq,密码
port zipkin端口

rabbit启动脚本

systemctl start rabbitmq-server.service

es启动脚本

%ES_HOME%/bin/elasticsearch -d

客户端配置

pom文件


<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-zipkinartifactId>
    <version>2.0.0.M7version>
dependency>
<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-openfeignartifactId>
    <version>2.0.0.M1version>
dependency>

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-stream-binder-rabbitartifactId>
dependency>

application.yml

server:
  port: 9002
spring:
  application:
    name: zipkin-producer
  sleuth:
    sampler:
      probability: 1 # 采集率,测试时用1, 上生产并发高的时候用0.01或者更低
    feign:
      enabled: true
  zipkin:
    base-url: http://centos7:9411
    sender:
      type: rabbit
  rabbitmq:
    addresses: centos7:5672
    username: admin
    password: admin

centos7是服务器的host地址,请自行更换配置。

结束

以上操作都完成以后config的工作就结束了,接下来是coding的事情。
由于springcloud微服务中使用的RPC大都是feign,所以本文也引入了feign,zipkin天生就拦截了feign的服务请求,所以coding的时候

@Autowired
ConsumerServiceFeign consumerServiceFeign;

@GetMapping("/hello")
public String hello() throws InterruptedException {
     
        return consumerServiceFeign.who();
}

直接调用就可以了。

工作原理分析

生产数据

Feign调用远程服务的时候,会被zipkin客户端拦截请求,然后根据配置的sender类型,将数据推送到收集器中。
本文用的收集器是rabbit,所以数据默认会推送到队列“zipkin”中。需要注意的是,队列名无法修改。

消费数据

启动zipkin-server的时候指定收集方式,本文配的收集器是rabbit,存储引擎用的是es。所以当zipkin-server启动后,会自动监听队列“zipkin”是否有新数据,当有数据被消费回来后,会存储到es中

查询数据

zipkin-server有可视化图形界面

http://centos7:9411/zipkin/

当一个查询请求发起时,会去访问存储引擎es获取数据并渲染在页面上。

你可能感兴趣的:(rabbitmq,java,elasticsearch)