Spring Cloud系列教程(十五):服务追踪SpringCloud Sleuth集成Zipkin持久化到Elasticsearch(Finchley版本)

一、前言

在上一篇文章中Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本),实现了将服务追踪采集的数据持久化到MySQL数据库中,而且大家都知道zipkin默认是存内存的,这样到了生产环境不可行,这节将实现zipkin将数据持久化到Elasticsearch,项目工程例子依然使用Spring Cloud系列教程(十四),请自己下载相应的代码即可。

Zipkin支持多种存储

  • 内存(默认)
  • MySQL(数据量大时,查询较为缓慢,不建议使用)
  • Elasticsearch
  • Cassandra(Twitter官方使用Cassandra作为Zipkin Server的存储,但国内大规模用Cassandra的公司较少,Cassandra相关文档也不多)

二、Elasticsearch介绍

Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎,同时Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。总之它具有以下功能:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  • 实时分析的分布式搜索引擎。
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

1. Elasticsearch应用场景

  • 大型分布式日志分析系统ELK
    • elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据)
  • 大型电商商品搜索系统
  • 网盘搜索引擎

2. Elasticsearch存储结构

Elasticsearch是文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:

{
“name” : “Thinkingcao”,
“sex” : 0,
“age” : 25
}

其中关系型数据库与Elasticsearch对应关系:

数据库类型 名词1 名词2 名词3 名词4
关系数据库 数据库 列(Columns)
Elasticsearch 索引(Index) 类型(type) 文档(Docments) 字段(Fields)

三、下载Elasticsearch

1. 环境

  • SpringBoot 2.0.3.RELEASE
  • SpringCloud Finchley.RELEASE
  • ElasticSearch 6.5.4
  • zipkin-server-2.12.9-exec.jar

注: 这只是我使用的环境,很稳定,ElasticSearchzipkin-server版本可不必用此版本。

2. 下载

为了简单起见,在Windows平台搭建Elasticsearch的安装环境,Elasticsearch版本我们选择 ElasticSearch6.5.4,直接下载zip的安装包,解压开了之后直接双击.bat批处理文件即可,下载地址如下:

3. 启动Elasticsearch

双击elasticsearch-6.5.4\bin\elasticsearch.bat文件即可),启动成功后输入地址: http://localhost:9200/?pretty 测试是否成功,出现下图结果说明OK。
在这里插入图片描述

四、启动zipkin-server

启动命令如下:

java -jar \zipkin-server-2.12.9-exec.jar
--STORAGE_TYPE=elasticsearch --ES_HOSTS=http://127.0.0.1:9200
  • STORAGE_TYPE: 表明存储类型(elasticsearch )
  • ES_HOSTS: 表明存储地址(http://127.0.0.1:9200)

五、测试

方案: 按照顺序依次启动以下服务,然后调用接口请求一次服务,查看zipkin-server的UI界面,发现有一条追踪的数据后,我们停掉zipkin-server,然后再以上面的方式启动(命令行设置Mysql),如果启动后能查询到我们刚才请求的哪一条服务追踪数据,说明OK了同时也可以查看数据表,会发现多了几条数据。
①. eureka-server: 服务注册中心,端口8000;
②. app-pay: 支付服务工程,端口8763;
③. app-member: 会员服务工程,端口8765;
④. app-order: 订单服务工程,端口8761;

步骤1. 访问注册中心:http://127.0.0.1:8000/
在这里插入图片描述

步骤2. 访问订单服务: http://127.0.0.1:8761/getOrderToMemberToMsg
在这里插入图片描述

步骤3. 查看zipkin-server的UI界面
在这里插入图片描述

步骤4. 重启zipkin-server,然后再次查看UI界面,发现依然能够查询到上一次请求的服务链路追踪数据
在这里插入图片描述
至此,SpringCloud Sleuth集成Zipkin持久化数据存储Elasticsearch已经实战完成了,这里还看不到Elasticsearch中的数据,可借助kibana可视化界面查看。

六、源码

源码: https://github.com/Thinkingcao/SpringCloudLearning/tree/master/springcloud-sleuth-zipkin

七、SpringCloud系列教程

下一篇: Spring Cloud系列教程(十六):下一代网关服务Gateway(Finchley版本)

SpringCloud教程汇总: Spring Cloud系列教程(汇总篇):专栏汇总篇(持续更新中)

在这里插入图片描述

发布了329 篇原创文章 · 获赞 232 · 访问量 80万+

猜你喜欢

转载自blog.csdn.net/Thinkingcao/article/details/104957351