00:00
接下来我们整合zip来做一个可视化的追踪,我们so产生的这些调用链信息,那zip呢,可以把这个数据收集过来,作为一个图形化展示这zip的官网,那如果我们想要用,那就应该这么来用,它的原理呢就是这样,那么这个zip呢,就是有一个UI界面,也有相关的API操作,把这些数据呢也能存储到一个地方,然后呢,他也能去收集数据,那所有的数据呢,它可以从我们的自己的服务收集过来,那我们的这个服务客户端呢,就要给他汇报数据,所们需要导入zipkin的依赖,然后呢,我们客户端就能汇报数据了,汇报来的数据呢,收集到zipon的服务器里边来做可视化展示。我们要做的第一件事情,我们先来安装zon的服务器,只需要非常简单的一个命令,Docker run,杠P,我们暴露9411Z端口,我们就可以启动一个Z的服务器,然后呢,我们客户端引入我们Z这个依赖。
01:00
然后我们就可以给服务器汇报数据,那就按照这个步骤,CRLC,那现在来连上我们的这个虚拟机们,连上我们电商的虚拟机,那我们现在呢,就来装一个这个我们叫docker run docker run我们来安装一个zip,走好,我们这个zip呢下载安装成功,我docker PS来检查一下,那现在呢,ZP肯这个容器也正在运行暴露的端口9411,那有了ZP肯服务器以后,我们接下来就让客户端收集所有的链路追踪数据汇报给服务器就行了,所以每一个微服务呢,都来引入这个就行了,既然每一个非微服务都要引入,我们同样的然放到这个common里边,来到common里边除了inlo,我还可以引入zipcon,当然这个zipcon来点进来,它呢默认其实已经依赖了slo,我们引了zipk就可以不用引这个slo了,我们可以来给大家看一下,来点击zipcon,在这个zipkon引的依赖里边呢,它引入了start s,所以我们。
02:00
在这呢,只要赢了zip,肯那就是一个成套的解决方案,那接下来我们要做的就是配置每一个微服务,要向zipon来汇报这个链路追踪数据,那这个怎么配置,我们就是这一方面配置,首先每一个服务呢,有自己的service名字,这个没问题,将我们配一个zip的地址就行了,我们地址呢,指定我们5610,我们虚拟机的9411端口,然后接下来我们ZP自己呢,要关闭服务发现功能,要不然呢,Cloud把ZP自己的URL都会当成一个服务地址,然后sender sender呢就是我们ZP怎么把数据发送出去,我们是以web http的方式发送数据,还有我们的S,这有一个叫。这是采样器,采样器呢,我们默认为0.1 0.1就是10%,意思就是我们只采样10%的请求数据,当然我们现在如果写一个一,那就是100%,所有的请求呢,我们都来采样,100%呢性能能稍微降低一点,但是0.1的话,我们采样的数据不多的话,并不能反映我们系统的性能,那么就把这个我配置在一个微服务里边,然后我们来整体复制一下,那么比如来到秒杀里边。
03:12
先来配我们这个zipk的地址,有一个zipk bestrl,这个best URL我们来写上,它默认的是local host的这个9411,我们现在呢是CTRLC来复制过来,那现在已经到虚拟机192.16 8.56.10,这是我们虚拟机地址的啊,Re MQ等等都在这装的,那么9411配好以后,接下来第二个我们一定要关闭自己的服务,发现功能所spring点。Z有一个discovery client enable,我们要写一个force,就是呢,关闭我们自己的这个服务发现功能,然后send,我们以HTB的方式把这些数据呢,直接汇报给zip服务器就行了,那叫Z的这个send send。
04:00
Type,那么就来指定是以web的方式,当我们所有收集的数据也可以发给卡夫卡或者rabbit MQ,那们现在呢,就直接使用web,那完了以后呢,我们必须配置我们这个S的这个采样器,我们来配置一下spring,点一个Sam supply,我们slo的这个采样去,我现在呢是0.1,我写一个一,那就是采样100%,那这一块的配置,每一个微服务都要加,我把这复制一个,然后呢,我们来到所有的微服务里边们来全给它加上,因为我们在common里边已经依赖了这个服务追踪这块呢,就是服务追踪,那先来停掉所有的微服务,我们来给他们来加上这一块的配置,我们再来启动就行了。来到购物车,服务也一样。接下来我们启动我们所有的微服务们在这儿让他来做一个启动,把我们这个启动的时候呢,我们之前没有加这个秒杀项目给他呢,添加进来,那将秒杀的这个程序也添进来,包括秒杀服务呢,我们也来限定哈,我的启动参数,好,那现在来启动所有的服务。
05:16
好,我们现在所有服务都启动成功了以后,我们一定要检查一下每一个服务,只要控制台打印是带了四个逗号的,说明有了咱们这个zip链路追踪,把这个一清空一下来看一下,那这个购物车服务它就没带四个逗号,这那说明它的依赖有问题,我们当然可以把这个zipcon的这个依赖能给每一个服务呢,自己去依赖,我不写在com里边,他现在呢,这是启动的问题,我们不管了,这个cut author,包括我们这个search这三个呢都没有,那们这个连后台管理项目都有,还有我们的third part,那们这个没有,没有的我们就不清空它的控制台,有了的呢,我们就一清空,我们这个商城呢也是有的,订单也是有的,还有我们这个会员,会员服务呢,现在没有,那这个网关我们其实不用来加这个链路追踪功能,然后呢,再来我们这个优惠服务,优惠服务呢,有好现在呢,我们有些服务没有,没有的话呢,大家在下边儿自己给里边一放,给自己的服务里边放进去。
06:17
就行了,那以后多启动几遍,这就有了这第一次默认的编译缓存问题,好那么现在来看,那这个zip呢,既然已经有了,我们就来把我们整个网站系统呢运行上几遍,来运行一些流程,然后我们来看链路追踪的效果,因为我们有些商品呢,我们肯定是调用了好多远程服务,我们在这儿远程调用,包括在这儿我们来点一个加入购物车,购物车加进来以后呢,我们接下来去结算,我们来走整个结算流程,那该登录呢,进行登录,我们把整个流程呢运行一遍,看一下我们的链路追踪,我们去来结账,点个去结算,来选中上一些这个收货地址,让他计算的价格动态变化,提交订单,包括我们来点击去支付行,我们所有的这个请求呢,都来走一遍,然后我们来看追踪效果,你们所有的这个追踪,我们是来让他把数据收集到了我们虚拟机的9411所们来访问虚拟机9411192.16 8.5 6.10冒号9411IC服务器的地址。
07:17
好,这块9411进来以后呢,这是一个查询界面,在这个界面里边我们就可以来查,我们之前已经运行过好多东西,咱们在这儿呢就可以直接来查,比如来查商品服务,我们来点一个查找它所有的整个调用请求在这儿呢全部就展示出来了,比如我们看到这一块呢,是这样,我们整个商品服务在调用的时候呢,我们订单服务乘八八次花费了1.75秒,然后呢,库存服务六次花费了多少秒,还有商品服务自个调自个还有多少毫秒,以及re mq4次花费了这个一维秒,这统计的还挺精细的,包括我们来点进他们里边的详细信息,那每一个请求的这一块统计情况在这呢都有,我们第一个呢发的这个请求,Submit order,这个submit order呢,在里边调用了这个请求,获取我们这个库存信息的,然后呢,还调用了这些请求,在这呢都有,包括我们这个订单服务,这有一个publishsh,他都连我们这个REIT MQ的整个数据发送也。
08:17
不监控到了,所以这是一个非常完整的链路,我们以后呢,想要来做整个链路追踪,我们最终呢就是在这一块我们来查询到,比如他这呢,可以有一个按照时间查询,假设我们来查询大于100毫秒的所有请求,我觉得太慢了,我们点一个查找,我让他呢在这来可以做一个排序,最终完了,我们通过这来定位我们每一个请求,比如它它呢花费了700多毫秒,我们就可以来优化它,包括这一块的详细数据是哪个controller,返回了哪个页面,他们是怎么调用的。这个时间状态呢,在这都有,那最终呢,就是根据我们这个界面来结合我们的centerna来找到我们的慢请求,然后我们在那该降级降级,该限流限流,这是我们说的链路追踪,但链路追踪呢,现在有一个问题,就是我们这个数据啊,默认是保存到我们这个zip肯刀客启动的这个服务器里边。
09:12
这里边的数据呢,也是我们DOER1停,再一启动以后呢,我们这个追踪数据就没有了,想想它只能追踪我们在这个启动期间的这些所有数据,那如果我们想让他追踪所有的数据都能保存起来,我们可以将这个数据呢,存储到一个我们指定的地方,你们来看zip,它的这个数据也可以存储到我们指定的数据源,那么在生产环境呢,就可以来整合,我们让它的这个数据默认持久化,保存到ES里边,它默认呢是保存在内存里边的,但我们这个追踪数据由于量又大。我们查询起来又慢,所以我们不可能放到MYSQL里边,而且呢,阿帕奇也有一个列数据库卡an,这个卡aner呢,我们现在用的也不多,所以最终呢,所有数据我们都希望这个追踪数据存到ES里边,想要存ES也非常简单,就直接启动一个zip这个容器,让指定一下我们这个ES主机地址就行了,来我们现在的主机地址是56.10,来指定一个这个就行了,来大家注意,现在我们用的这个镜像呢,不是我们原生的zip镜像,这是呢我们改版了的。
10:20
我们加了数据保存到ES的这一块镜像,我们只设置上两项参数,杠杠env,就是设置两个环境参数,第一个是storage type,我们保存的数据类型保存到哪呢?有elastic search,包括呢,我们可选的只有这么多storage type,你可以选elastic search my等等一大堆,详细呢参照我们这个文档就行了,我们还可以来指定ES的host主机地址,那指定好以后呢,我们以后所有的链路追踪数据我们都会发给我们这个ES,包括我们发给哪个索引,我们都可以来指定它默认呢每天都是生成一个zip这个索引,那么在生产环境的时候呢,我就直接再来启动这么一个容器,那现在我们整个链路追踪我们就出来了。
我来说两句