跟踪React流–将Spring Cloud Sleuth与Boot 2结合使用

Spring Cloud Sleuth在OpenZipkin Brave的基础上增加了对Spring工具的支持, 从而使Spring Boot应用程序的分布式跟踪变得异常简单。 这是关于使用此出色的库添加对分布式跟踪的支持所需内容的简要介绍。

考虑两个应用程序–一个使用上游服务应用程序的客户端应用程序,都使用Spring WebFlux ( Spring的React式Web堆栈):

Spring Cloud Sleuth样本流

我的目标是确保可以跟踪从用户到客户端应用程序再到服务应用程序的流,并清晰记录请求的延迟。

Spring Cloud Sleuth启用的最终拓扑如下:

Spring Cloud Sleuth流动拉链

来自客户端和服务应用程序的采样跟踪信息通过RabbitMQ之类的排队机制导出到Zipkin。

那么,对客户端和服务应用程序需要进行哪些更改–就像我说的那样,非常简单! 需要引入以下库–在我的情况下是通过gradle引入的:

compile("org.springframework.cloud:spring-cloud-starter-sleuth")compile("org.springframework.cloud:spring-cloud-starter-zipkin")compile("org.springframework.amqp:spring-rabbit")

未指定版本,因为期望通过Spring Cloud BOM引入它们,这要归功于Spring Gradle Dependency Management插件 :

ext {springCloudVersion = 'Finchley.RELEASE'
}apply plugin: 'io.spring.dependency-management'dependencyManagement {imports {mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"}
}

就是这样,应用程序中的所有日志现在都应该开始记录跟踪和跨度,请参阅以下跨两个不同服务的日志中的traceid记录:

2018-06-22 04:06:28.579  INFO [sample-client-app,c3d507df405b8aaf,c3d507df405b8aaf,true] 9 --- [server-epoll-13] sample.load.PassThroughHandler           : handling message: Message(id=null, payload=Test, delay=1000)
2018-06-22 04:06:28.586  INFO [sample-service-app,c3d507df405b8aaf,829fde759da15e63,true] 8 --- [server-epoll-11] sample.load.MessageHandler               : Handling message: Message(id=5e7ba240-f97d-405a-9633-5540bbfe0df1, payload=Test, delay=1000)

此外,Zipkin UI还记录了导出的信息,并可以通过以下方式直观地显示示例跟踪:

Spring Cloud Sleuth拉链皮

此示例可在我的github存储库中找到 -https://github.com/bijukunjummen/sleuth-webflux-sample,可以使用docker-compose轻松启动,并插入所有依赖项。

翻译自: https://www.javacodegeeks.com/2018/06/reactive-flow-spring-cloud-sleuth.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDK命令之java -- 用来执行字节码文件,即用来执行Java程序

文章目录一、命令介绍二、用法格式三、常用选项四、常用选项详解-client,-server-hotspot-classpath,-cp-classpath-Dvalue-verbose[:class|gc|jni]-verbose:gc-verbose:jni-version-showversion-ea[:...|:] 和 -enableassertions[:...|:]-da[:...|:] 和 -disableas…

php中双引号的区别,PHP中单引号和双引号的区别

好久没有写博客了,都忘了积累知识啦……现在开始全新的生活,重拾记录的习惯。今天要写的就是PHP中单引号和双引号的区别。在PHP中,我们可以使用单引号或者双引号来表示字符串。不过我们作为开发者,应该了解其中的区别。一、字符串…

sbe 详解_内部简单二进制编码(SBE)

sbe 详解SBE是用于金融行业的非常快速的序列化库,在本博客中,我将介绍一些使其快速发展的设计选择。 序列化的全部目的是对消息进行编码和解码,并且有很多可用的选项,例如XML,JSON,Protobufer,…

php调用swf文件上传,swfupload-jquery-plugin AJAX+PHP 文件上传

var listitem>file.name (Math.round(file.size/1024) KB)>>>Pending;$(#log).append(listitem);$(this).swfupload(startUpload);})//绑定开始上传文件事件.bind(uploadStart, function(event, file){$(#log li#file.id).find(p.status).text(Uploading...);$(#lo…

aws lambda使用_使用AWS Lambdas扩展技术堆栈

aws lambda使用面对现实吧。 调试性能问题很困难,但是更难解决。 假设您发现了有害的代码,这些代码正在拖慢您的应用的运行速度。 最终会有一段时间,您发现此代码减速是同步的或线性执行的。 解决这些有问题的代码段的最有效方法之一就是将最…

Java声明定义抽象类/接口/继承/实现

文章目录声明定义抽象类声明定义接口派生类、抽象类、接口的继承要点声明定义抽象类 public abstract class CRMSystem {public abstract Client add(Client newGuy); //添加用户方法public abstract Event add(Event e, Client guy); //重载添加事件、用户方法public abstrac…

cuba开发_使用CUBA进行开发–与Spring相比有很大的转变?

cuba开发阅读另一个供内部公司使用的Web项目的要求时,您(至少是我自己)通常会看到一个很普通的集合:定义明确的数据存储结构(或有时是现有的旧数据库),大量的数据输入形式,非常复杂的…

imagettftext php7,mac php7 imagettftext

Mac OS X 自带PHP环境gd库安装扩展freetype问题: “Call to undefined function imagettftext()”解决方法:curl -s [http://php-osx.liip.ch/install.sh](https://link.jianshu.com/?thttp://php-osx.liip.ch/install.sh) | bash -s 7.3sudo vim ~/.ba…

图片授权模式

RM、RF、PE是3种不同的图片授权模式,由图片卖家设定,图片买家根据自己的需要来进行选择。这三种模式是图片行业在发展过程中,经过对图片用户需求的不断总结而确定的。摄影师可以根据自己的销售意愿,在编辑图片的时候,对…

java线程池延期执行一次_Java使用者的延期执行

java线程池延期执行一次在前面的博客文章(“ 延迟执行Java的供应商 “),我引用礁HORSTMANN的陈述书中‘ 的Java SE8为真的很急关于lambda表达式’,‘所有的lambda表达式的点被推迟执行 。’ Horstmann在最后一年为Dobb博士的杂志写…

python时间序列数据分析,Python数据分析之时间序列

Python数据分析之时间序列发布时间:2020-07-10 06:56:27来源:51CTO阅读:808作者:up4ever1. 时间序列类型时间戳(timestramp)即特定的时刻固定时期(period)如2018年1月或2018年1月1日时间间隔(interval)由起始和结束时间戳表示2. P…

java jdk 序列化_JDK 11:Java序列化的终结开始了吗?

java jdk 序列化在博客文章“ 将Google的协议缓冲区与Java结合使用 ”中,我引用了乔什布洛赫(Josh Bloch)的第三版的有效Java ,他写道:“没有理由在您编写的任何新系统中使用Java序列化。” Bloch建议使用“跨平台结构…

php+ksort+返回true,PHP preg_replace函数

mixed preg_replace( mixed pattern, mixed replacement, mixed subject [, int limit] )在PHP中用来执行正则表达式的匹配以及替换的函数。可以返回一个正则表达式转换后的值。在subject中搜索pattern模式的匹配项,并用replacement模式进行替换。如果指定了 limit&…

下拉选择框

</select> 标签有一个属性 multiple&#xff0c;将其设置成 multiple"multiple" 按住 Ctrl 键即可实现多选。 请看例子&#xff1a; <html><head><meta http-equiv"Content-Type" content"text/html; charsetgb2312" />…

rest端点_REST:使用Controller端点?

rest端点在一般的REST架构中&#xff0c;基本概念是资源。 在资源之后&#xff0c;下一步是为这些资源开发一个统一接口&#xff0c;这在HTTP领域通常意味着&#xff1a; 创建为POST 阅读就是GET 更新为PUT&#xff08;或部分更新为PATCH&#xff09; 删除已删除 在现实世…

Java 字符串与整数之间的互相转换

1、如何将字符串String转化为整数int int i Integer.parseInt(str); int i Integer.valueOf(my_str).intValue(); 注: 字串转成Double, Float, Long的方法大同小异。 2、如何将字符串String转化为Integer Integer integerInteger.valueOf(i)3、如何将整数 int 转换成字串 Str…

hello world_建立无服务器的“ Hello World”功能

hello world无服务器 &#xff0c;功能即服务&#xff08;FaaS&#xff09;或仅具有云功能&#xff0c;就可以编写将在云中运行的代码。 您可以使用多种不同的语言&#xff08;例如JavaScript&#xff08;Node.js&#xff09;&#xff0c;Swift&#xff0c;Python&#xff0c;J…

xshell调出oracle安装界面,XShell+Xmanager实现在XShell中显示远程服务器的图形界面

你可以使用Xmanager软件&#xff0c;远程安装Oracle软件&#xff0c;Linux操作系统使用字符安装并不影响这种方式的使用。这个方案也可以大大优化你的Linux系统的性能&#xff0c;进而提高你的数据库性能。启动你的的Xmanager&#xff0c;我现在使用的是3.0版本&#xff0c;接收…

Oracle 数据库错误信息:动态执行表不可访问,本会话的自动统计被禁止

使用 PL/SQL 时, 每次第一次打开表的时候会提示以下信息&#xff1a; 动态执行表不可访问&#xff0c;本会话的自动统计被禁止&#xff0c;原因&#xff1a;V$SESSION,V$SESSTAT,V$STATNAME 没有被授权&#xff0c;没有权限访问这几张表&#xff0c;所以没有本法进行统计!那就…