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微服务架构视频》

 http://edu.51cto.com/course/13342.html

Ocelot中使用Butterfly实践的更多相关文章

  1. Ocelot中文文档-跟踪

    Ocelot使用一个杰出的项目Butterfly 提供了跟踪功能. 为了使用跟踪,请阅读Butterfly的文档. 在Ocelot中如果你想跟踪一个ReRoute,你需要做如下事情: 在Configu ...

  2. 混合应用中的javascript实践

    混合应用中的javascript实践 混合应用(hybird app) 在几年前便进入大众视野,近来更是越发风生水起,深受人民群众的喜爱. 目录 概念 什么是混合应用 混合方式 交互 方法注入 参数传 ...

  3. Ocelot中文文档-不支持

    Ocelot不支持一下几点... 分块编码 - Ocelot将始终获取body大小并返回Content-Length头. 如果这不适合你的场景,只能表示抱歉! 转发host头 - 您发给Ocelot的 ...

  4. Ocelot中文文档-路由

    Ocelot的主要功能是接管进入的http请求并把它们转发给下游服务.目前是以另一个http请求的形式(将来可能是任何传输机制). Ocelot将路由一个请求到另一个请求描述为ReRoute.为了在O ...

  5. Ocelot中文文档-管理

    Ocelot支持在运行时通过一个认证的Http API修改配置.有两种方式对其验证, 使用Ocelot的内置IdentityServer(仅用于向管理API验证请求)或将管理API验证挂接到您自己的I ...

  6. Ocelot中文文档-Raft(实验功能不能用于生产环境)

    Ocelot最近整合了Rafty,这是我在去年一直研究的Raft的一个实现. 这个项目实验性非常强,所以在我认为它没问题之前,请不要在生产环境中使用Ocelot的这个功能. Raft是一种分布式一致性 ...

  7. java多线程中最佳的实践方案是什么?

    java多线程中最佳的实践方案是什么? 给你的线程起个有意义的名字.这样可以方便找bug或追踪.OrderProcessor, QuoteProcessor or TradeProcessor 这种名 ...

  8. Ocelot中文文档-Route

    路由(Routing) Ocelot主要功能是接收即将发来的请求并转发它们至下游服务.与此同时,以另一个http请求的形式(在将来这可能是任何传输的机制) Ocelot将一个请求的路由描述为另一个路由 ...

  9. OpenStack环境中的NFV实践

    原文链接:http://www.99cloud.net/html/2016/jiuzhouyuanchuang_1103/250.html 在开始实践之前我们首先需要了解一些NFV概念和术语. NFV ...

随机推荐

  1. SSH免密登录实现

    现在先想要把项目部署到linux系统中 通过使用maven添加tomcat插件可以做到,右击项目 配置这里的url,是部署到哪里的意思(比如我们现在将这个项目部署到以下系统的tomcat中) 此处只有 ...

  2. 【ORM框架】Spring Data JPA(一)-- 入门

    本文参考:spring Data JPA入门   [原创]纯干货,Spring-data-jpa详解,全方位介绍  Spring Data JPA系列教程--入门 一.Spring Data JPA介 ...

  3. [转]HTML5 script 标签的 crossorigin 属性到底有什么用?

    HTML5 script 标签的 crossorigin 属性到底有什么用? 最近Bootstrap 4已经正式发布了,可能已经有爱尝鲜的小伙伴在 alpha 阶段就尝试过 BS4.不过今天要说的不是 ...

  4. 短网址API

    http://tao.tf/open/ API简介 API允许第三方自由调用URL缩短,基于text/json/jsonp/js模式,支持post.get提交. 支持缩短网址: 淘宝网(*.taoba ...

  5. PBRT笔记(13)——光线传播1:表面反射

    采样反射函数 BxDF::Sample_f()方法根据与相应的散射函数相似的分布来选择方向.在8.2节中,该方法用于寻找来自完美镜面的反射和透射光线;在这里讲介绍实现其他类型的采样技术. BxDF:: ...

  6. IntelliJ IDEA最新破解版2018.3.1(附2018.2.2 完美破解教程)

    2018.3.1最新版破解 1.官网下载IDEA 2018.3.1的商业版本点我去下载 2.破解jar下载:JetbrainsIdesCrack-3.4-release-enc.jar点我去下载 3. ...

  7. Kubernetes中的RBAC

    Kubernetes中,授权有ABAC(基于属性的访问控制).RBAC(基于角色的访问控制).Webhook.Node.AlwaysDeny(一直拒绝)和AlwaysAllow(一直允许)这6种模式. ...

  8. linux学习:网络(防火墙)及系统安全相关命令学习

    指令: top.htop.free.pstree.lsof.ifconfig.w3m.tcpdump.netstat.nmap.ufw 网络: top    #查看内存,cpu,进程之间的状态.hto ...

  9. js 阻止事件执行

    三种阻止事件执行的方式 event.preventDefault() event.stopPropagation() return false event.preventDefault() 阻止特定事 ...

  10. 最新鲜最详细的Android SDK下载安装及配置教程

    //来源: http://www.cnblogs.com/summary-2017/p/8073225.html 最近Neo突发神经,想要将学过的一些计算机视觉.机器学习中的算法都放到移动设备上去跑跑 ...