zoukankan      html  css  js  c++  java
  • .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

    打开http://localhost:9618

    查看Traces

     

     

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

    查看Dependencies

     

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

     
  • 相关阅读:
    【ES6】数组的扩展——扩展运算符
    【ES6】函数的扩展
    菜鸡程序员是如何写代码的?
    我是技术总监,我出来求职,竟然找不到工作!
    为什么互联网公司天天都在招人?
    这个立冬,我线下面基了一位TMD高级专家,太牛逼了!
    太可怕了!有些码农为啥写代码,写到监狱里去了?
    56岁潘石屹生日当天宣布要学编程语言Python,网友:地产商来抢码农饭碗了!
    如何写出让同事无法维护的代码?
    hdu 1037 Keep on Truckin'
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/8523421.html
Copyright © 2011-2022 走看看