.net core实现的全程序跟踪
Ocelot中使用Butterfly实践
ocelot
Ocelot(https://github.com/TomPallister/Ocelot)是一个用.net core实现的API网关,Butterfly(https://github.com/ButterflyAPM/butterfly)是用.net core实现的全程序跟踪,现在,Ocelot中可以使用Butterfly了,关于Ocelot和Butterfly具体功能参见各自的github站点,关于Ocelot和Butterfly组合实现,参数张善友博客http://www.csharpkit.com/2018-02-04_51207.html,本篇博客讲述一个案例的实现。
博客中代码参见https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/OcelotAndButterfly,可只下载下面的项目进行测试。
项目说明表:
项目名称 |
项目类型 |
端口 |
说明 |
OcelotGateway |
web api |
5000 |
网关项目 |
API001 |
web api |
5001 |
业务api项目 |
API002 |
web api |
5002 |
业务api项目 |
TestAPI |
web api |
5577 |
测试api项目 |
Ocelot |
类库 |
无 |
Ocelot官方源码,因为有个bug,以进行pr,所以现在把clone下载来作了个修复,后续官方会修正。 |
Butterfly-web-preview-0.0.8 |
Web api |
9618 |
Butterrfly执行程序,用来收集经过节点的数据,并作展示,可以过来http://localhost:9618来访问 |
项目结构:
API001和API002本身代码非常简单,就是请求后返回一个带时间的字符串,API001在返回前,会调用API002,因为有网关存在,所以在API001的实现方法是请求网关中的API002映射路径的(详见项目代码),而不是直接访问API002(因为在微服务集群中,API002应该有多个节点,这些节点通过服务注册后才知道具体地址,所以在调用的时候,通过访问网关的地址来达到访问API002。
TestAPI中请求的是网关中的API001的映射(详见项目代码)
OcelotGateway中配置文件configuration.json中,开启各ReRoutes中的HttpHandlerOptions下的UseTracing:true即可(详见项目代码)
需要引用butterfly.Client.AspNetCore项目有:API001,API002,OcelotGateway,TestAPI,现在butterfly.Client.AspNetCore版本是0.0.8,有bug(与作者联系后期版本会修正),可以引用0.0.7进行测试。
请求的路径如下图:
请求从TestAPI的URL:http://localhost:5577/api/values/1开始,TestAPI利用HttpClient请求网关URL:http://localhost:5000/api001/values,网关中会利用HttpClient转配置中映射URL:http://localhost:5001/api/values,API001会利用HttpClient请求URL:http://localhost:5000/api002/values,网关中会利用HttpClient转配置中映射URL:http://localhost:5002/api/values
需要启动项目:
1、 用dotnet Butterfly.Web.dll --EnableHttpCollector=true启动Butterfly-web-preview-0.0.8
2、 启动OcelotGateway
3、 启动API001
4、 启动API002
查看Traces
可以通过Traces第二张图请求的上下级序顺可以看到与我们上面分析的请求路径一致。
查看Dependencies
如果Dependencies中把双箭头改成两个单箭头,加上求步骤序列编号就更清晰了。
.net core实现的全程序跟踪的更多相关文章
- Go微服务全链路跟踪详解
在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪. 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链. 该ID称为Correlati ...
- 加快ASP。NET Core WEB API应用程序。第2部分
下载source from GitHub 使用各种方法来增加ASP.NET Core WEB API应用程序的生产力 介绍 第1部分.创建测试RESTful WEB API应用程序第2部分.增加了AS ...
- Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...
- 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...
- vs2015 已经支持开发asp .net core 1.0 rc2 程序了
vs2015 已经支持开发asp .net core 1.0 rc2 程序了 http://mp.weixin.qq.com/s?__biz=MzI0MzM1ODczOQ==&mid=2247 ...
- Asp.Net Core 中获取应用程序物理路径(Getting the Web Root Path and the Content Root Path in ASP.NET Core)
如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...
- 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- .NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记
一,.NET Core 自宿主应用程序个头很大 发布.NET Core应用程序有两个方式,一种是“便携式”,一种是“自宿主式”.便携式发布时,目标程序不带.net core运行环境,所以“个头”很小, ...
- .NET Core 2.0 应用程序大小减少50%
.NET Core 2.0减小体积瘦身官方工具 IL Linker. IL Linker 来源于mono的linker https://github.com/mono/linker,目前还是预览版本 ...
随机推荐
- 分享知识-快乐自己:SpringMVC 底层执行原理解析
底层实现原理图: 观看底层代码: 1):打开 web.xml 文件 2):按住 Ctrl + 鼠标左键 进入底层查看源码 3):按住 Ctrl+o 找到对应的方法doDispatch 5): ...
- ffmpeg给视频加文字水印
ffmpeg -i dd2800.mp4 -vf "drawtext=fontfile=Arial.ttf: text='Hu':x=100:y=10:fontsize=24:fontcol ...
- SpringMVC拦截器的配置与使用详解
一.SpringMVC拦截器简介 Spring MVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.在springmvc中,定义拦截 ...
- 理解YOLOv2训练过程中输出参数含义
原英文地址: https://timebutt.github.io/static/understanding-yolov2-training-output/ 最近有人问起在YOLOv2训练过程中输出在 ...
- Qt之log数据展示模块简要实现
Log模块主要用于实时测井数据的显示和测后曲线数据的预览和打印,为更好的展示对Qt中相关知识点的应用,特以Log模块为例对其进行简要实现. 内容导图: 一.功能需求 1.界面效果图 Log模块实现曲线 ...
- Python实现排序算法之快速排序
Python实现排序算法:快速排序.冒泡排序.插入排序.选择排序.堆排序.归并排序和希尔排序 Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它 ...
- Mesos以及Marathon安装总结
安装了将近一周的环境了,终于把Mesos以及Marathon给安装上了,我指的离线安装. 策略1: 严格的按照官网的流程: http://mesos.apache.org/gettingstarted ...
- JQuery Mobile+cordova构建一个Android项目
1.安装Android开发环境 Android开发环境的安装,现在主要是由于不能访问谷歌站点,在windows下在host文件中添加一个对应的74.125.195.190 dl-ssl.goo ...
- GBK点阵显示字库的制作和使用
转自:http://blog.csdn.net/exbob/article/details/6539643 GBK编码共收录汉字21003个.符号883个,并提供1894个造字码位,简.繁体字融于一库 ...
- java反射机制(转)
一.什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息. 二.哪里用到反射机制 ...