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

打开http://localhost:9618

查看Traces

可以通过Traces第二张图请求的上下级序顺可以看到与我们上面分析的请求路径一致。

查看Dependencies

如果Dependencies中把双箭头改成两个单箭头,加上求步骤序列编号就更清晰了。

 

.net core实现的全程序跟踪的更多相关文章

  1. Go微服务全链路跟踪详解

    在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪. 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链. 该ID称为Correlati ...

  2. 加快ASP。NET Core WEB API应用程序。第2部分

    下载source from GitHub 使用各种方法来增加ASP.NET Core WEB API应用程序的生产力 介绍 第1部分.创建测试RESTful WEB API应用程序第2部分.增加了AS ...

  3. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  4. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  5. vs2015 已经支持开发asp .net core 1.0 rc2 程序了

    vs2015 已经支持开发asp .net core 1.0 rc2 程序了 http://mp.weixin.qq.com/s?__biz=MzI0MzM1ODczOQ==&mid=2247 ...

  6. Asp.Net Core 中获取应用程序物理路径(Getting the Web Root Path and the Content Root Path in ASP.NET Core)

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...

  7. 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  8. .NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记

    一,.NET Core 自宿主应用程序个头很大 发布.NET Core应用程序有两个方式,一种是“便携式”,一种是“自宿主式”.便携式发布时,目标程序不带.net core运行环境,所以“个头”很小, ...

  9. .NET Core 2.0 应用程序大小减少50%

    .NET Core 2.0减小体积瘦身官方工具 IL Linker. IL Linker 来源于mono的linker  https://github.com/mono/linker,目前还是预览版本 ...

随机推荐

  1. HDU 2035 人见人爱A^B(二分求幂,快速求幂)

    题意:求A的B次方的后三位数字 思路1:常规求幂,直接取余求解 代码: #include<iostream> #include<cstdio> using namespace ...

  2. redis压力测试详解

    redis做压测可以用自带的redis-benchmark工具,使用简单,效果也比较不错. linux下一般无需下载,windows下redis-benchmark压力测试工具下载地址:http:// ...

  3. leetcode 111 Minimum Depth of Binary Tree(DFS)

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  4. Windows下使用vim编写代码,使用nmake编译代码,使用vs来调试代码

    1.编写代码 2.编写Makefile,如果要调试, 2.1.需要在编译的时候加上/Zi ( Generates complete debugging information),编译由cl.exe来完 ...

  5. HihoCoder1672 : 区间问题([Offer收割]编程练习赛41)(贪心)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定N个区间[Ai, Bi],请你找到包含元素最少的整数集合S,使得每个区间都至少有两个整数在S中. 例如给定三个区间[1 ...

  6. 【LeetCode】046. Permutations

    题目: Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] ha ...

  7. mysql5.1的编译安装 ----针对第一次安装mysql的

    由于是第一次安装,不能确定你是否有安装编译和mysql所要依赖的插件,使用我是当做你最原始的安装环境.  1.安装mysql5.1的依赖包 yum install -y gcc gcc-c++ aut ...

  8. AI-Info-Micron-Solutions-Menu:Solutions

    ylbtech-AI-Info-Micron-Solutions-Menu:Solutions 1.返回顶部 1. 按应用分类 汽车解决方案 美光科技不仅是你的存储提供商,更是你的长期合作伙伴.我们提 ...

  9. Jasper:目录/资源

    ylbtech-Jasper:目录/资源 1. 官网返回顶部 1. https://www.jasper.com/ 2. 2.返回顶部 1. http://api.jasperwireless.com ...

  10. css水平居中方式

    1. text-align:center 这种方式只适合于内联元素或者文字处于块元素当中是,给块元素设置这个,那么块元素当中的文字或者内联元素则居中.兼容各种浏览器 <div class=&qu ...