zipkin:调用链显示分析

为什么使用了httpclient,客户端没有向zipkin server发送日志?
因为我实在main方法中调用的,完事后这个线程就没了;httpclient用的还是异步的发送日志方式;所以没发日志。
 
但是现在卡主我的确实为什么只有client的信息,没有server信息!
应该还是进程被干掉的原因,因为我是用spring注入的方式没有问题!
下面截图示意一下zipkin的内容。本机调用10.4.120.77的web服务;下面这个图是远程77的web服务的brave没有放开的情况下的情况:
zipkin:调用链显示分析
  
第一个get/是通过浏览器访问该web网站打出的日志;
zipkin:调用链显示分析
 
第二个post则是在get访问内部方法的里面通过restTemplate.postForObject方法向另外一个web网站请求站点数据(http://10.4.120.77:8081/brave-rt/);因为另外一个Web站点关闭了zipkin(将zipkin的url设置为一个不可用地址),所以没有显示。
zipkin:调用链显示分析
zipkin:调用链显示分析
 
下面让77web服务brave正常向zipkin发送日志:
zipkin:调用链显示分析
brave-rt-client的输出内容和上面的一样(都是通过浏览器出发servlet处理,所以内容一样);
同时第二个POST操作,有了变化,首先名称变成了“brave-rt”;其次点进去你会看到内容变得很全,整个调用链都出来;
zipkin:调用链显示分析
第三条记录点开来看,只有backend操作了信息:
zipkin:调用链显示分析
通过这两套数据的分析,可以得出结论:zipkin的链式数据分析是由各个节点独立通知zipkin服务器,有zipkin服务器汇聚整理而得来的;曾经我以为是下级调用会向上级反馈日志信息,看来不是,大家各自存各自的;所以会发生刚刚发生的操作行为日志并没有,而是要等一会;因为大家都是异步通知zipkin,所以只有等都搞完了才会有数据(zipkin内部应该会判断如果有缺失则数据不显示);
zipkin的brave发送日志应该有两种机制,一种是队列满了则发送,另外一个是如果在队列到了一定程度则发送;
同时第二个POST操作,有了变化,首先名称变成了“brave-rt”;其次点进去你会看到内容变得很全,整个调用链都出来;为什么?我推测zipkin处理机制(以后源码读完了再来确认一下),如果跨站点,则Server角色会把整个调用链(从上游调用到自己处理,只是上游和自己两层,不包括自己的下游)打印出来;
下面我们把调用链改一下第三个调用改为另外一台主机(和第一个服务放在一台主机上面)
zipkin:调用链显示分析
第一个不看了,大同小异;
第二个如下,和之前的基本一样,把上游(client)和自己(server)链都打印出来:
zipkin:调用链显示分析
  到了第三个,之前如果本机间访问,只会有一条ss和sr的日志,但是现在也是一条完整的上下游的调用无23 链路。
zipkin:调用链显示分析
 
 
 
 
上一篇:#9.5课堂JS总结#循环语句、函数


下一篇:centos/redhat安装mysql