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中把双箭头改成两个单箭头,加上求步骤序列编号就更清晰了。

相关文章:

  • Ocelot——初识基于.Net Core的API网关

  • Ocelot API网关的实现剖析

  • 微服务网关Ocelot

  • API网关Ocelot 使用Polly 处理部分失败问题

  • 谈谈微服务中的 API 网关(API Gateway)

  • Ocelot网关

  • Ocelot统一权限验证

  • 应用监控怎么做?

  • ASP.NET Core之跨平台的实时性能监控

  • .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控

  • 应用程序的8个关键性能指标以及测量方法

  • 使用Metrics监控应用程序的性能

  • 下一个计划 : .NET/.NET Core应用性能管理

  • Ocelot监控

  • Ocelot 集成Butterfly 实现分布式跟踪

原文:http://www.cnblogs.com/axzxs2001/p/8478340.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

Ocelot中使用Butterfly实践相关推荐

  1. .NET Core开源API网关 – Ocelot中文文档

    Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butterfly ...

  2. Swagger如何访问Ocelot中带权限验证的API

    先亮源代码:https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/SwaggerDe ...

  3. 免费报名 | WPS专家教你文本分类在企业中的应用实践

    文本分类问题是企业在 NLP 领域中处理文本数据时经常会遇到的一个问题,很多时候,我们需要将文本信息进行分类,或提相关的接口以供外部进行文本上传,在针对于用户所上传的文档信息就需要进行文档内容的分类, ...

  4. 团队开发中的 Git 实践

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 本文转载自:https://segmentfault.com/a/ ...

  5. php面向对象实践,【技术产品】PHP中的面向对象实践-基本实践案例

    PHP中的面向对象实践-基本实践 (一).基本实践 一.类的概念 一.共同点: 都有相同的属性 都有相同的方法 二.不同点: 具体的值是不一样的 三.总结:他们都是一类的对象 说到类,现在来说说类的概 ...

  6. Django 开发中的最佳实践之一

    为什么80%的码农都做不了架构师?>>>    Django 开发中的最佳实践之一 本文关注 Django 开发中调试的部分. 出自 Flask 项目旗下的 Werkzeug deb ...

  7. Ocelot中文文档-缓存

    Ocelot中文文档-缓存 原文:Ocelot中文文档-缓存 目前Ocelot使用CacheManager项目提供了一些非常基本的缓存.这是一个了不起的项目,它解决了很多缓存问题. 我会推荐这个软件包 ...

  8. HBase在大搜车金融业务中的应用实践

    摘要: 2017云栖大会HBase专场,大搜车高级数据架构师申玉宝带来HBase在大搜车金融业务中的应用实践.本文主要从数据大屏开始谈起,进而分享了GPS风控实践,包括架构.聚集分析等,最后还分享了流 ...

  9. AI开发者大会之语音语义技术实践与应用:2020年7月3日《NLP在教育行业的应用》、《AI防疫-语音语义技术在政务联络场景中的应用》、《智能客服机器人在售前导购场景中的应用实践》

    AI开发者大会之语音语义技术实践与应用:2020年7月3日<NLP在教育行业的应用>.<AI防疫-语音语义技术在政务联络场景中的应用>.<智能客服机器人在售前导购场景中的 ...

最新文章

  1. linux rsync 增量同步备份文件
  2. ML之ECS:利用ECS的PAI进行傻瓜式操作机器学习的算法
  3. 过来人讲述:研究生复试之注意事项
  4. .NET对象克隆的深究(转)
  5. oracle+connect+by+level,oracle connect by用法篇
  6. python会什么比c慢
  7. python3 unicode字符串_【已解决】Python3中如何声明字符串是unicode类型以避免log日志打印出错...
  8. java11 scala_JDK1.10+scala环境的搭建之windows环境
  9. 供应商禁止供货后,这个城市行动了:社区团购不得低价倾销、排挤对手
  10. 手机/邮箱等帐号判断
  11. Python gmpy2 mpz Methods
  12. 利用更改Windows7粘滞键漏洞破解登录密码
  13. java spring 下载文件_springboot下载文件(使用流)
  14. ardupilot 增加新的定点控制实现刹车
  15. 【信号用指数、正弦和余弦表示的原因】
  16. twitter注册不了_如何阻止Twitter重点阻止不相关的通知
  17. nacos做配置中心读取不到配置报错:Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ‘cou
  18. C语言经典例题100道
  19. Linux-新建用户/群组以及修改文件权限
  20. 第一篇:初学编程对未来的展望

热门文章

  1. PropertiesUtil 获取文件属性值
  2. httpcilent绕过证书
  3. jquery验证手机号码和邮箱地址例子
  4. Python应用02 Python服务器进化
  5. 实现一个登录:Mac+.NET 5+Identity+JWT+VS Code
  6. 我用段子讲.NET之依赖注入(一)
  7. 巧用Newtonsoft.Json处理重复请求/并发请求?
  8. 小米 华为都要造车?.NET高薪潮来了!(附招聘链接)
  9. 如何在 .NET 程序万种死法中有效的生成 Dump (上)
  10. .NET Core 下使用 gRPC