一、使用turbine的意义

引入多个hystrix stream:

1、使用hystrix-dashboard的可以添加多个stream的功能

图中添加的两个stream会在真正monitor的时候分开展示,这样的话,假设两个stream都引用了同一个方法a,那么方法a会分开展示两次,如下:

实际上我们只需要统计a的处理能力,与谁调用无关,所以希望在整个dashboard下只有一个a的展示,那么我们就需要通过turbine将这些所有a的展示汇聚起来。

注意:

  • turbine的汇聚也是实时的

2、使用turbine进行汇聚

turbine介绍:附7 turbine

turbine部署:第二章 部署war包到tomcat

二、总体图

前提:

  • 假设有两个服务A/B分别布在两台机器上(这里为了简单,使用一个服务myboot来代替),A、B都访问myboot2的两个接口getHotelInfo和getHotelInfo2(这两个接口也是commandKey的名字);
  • 同时在一台机器上部署了turbine.war。

测试:

  • A、B对两个接口getHotelInfo和getHotelInfo2能否分别聚合。

三、操作

1、分别将myboot项目在两台机器上启动

  • 会用到的命令:scp myboot.jar root@192.22.22.22:~/zjg/service(将本地的myboot.jar拷贝到远程机器的~/zjg/service目录下)

2、启动myboot2.jar

3、配置tomcat的webapps下的turbine/WEB-INF/classes/config.properties

  1. InstanceDiscovery.impl=com.netflix.turbine.discovery.ConfigPropertyBasedDiscovery
  2. #cluster
  3. turbine.aggregator.clusterConfig=default
  4. #turbine.aggregator.clusterConfig=myboot
  5. turbine.instanceUrlSuffix=:8001/hystrix.stream
  6. turbine.ConfigPropertyBasedDiscovery.default.instances=192.11.11.11,192.22.22.22

说明:配置了一个cluster为default,原因及其他配置见 附7 turbine

4、启动turbine

  • 如果需要tomcat的关闭过程可能不会关闭干净,使用ps -ef | grep tomcat,之后进行kill就好。

5、分别启动两台机器上的hystrix-dashboard

6、浏览器输入

  • "192.11.11.11:7979/hystrix-dashboard"并添加"192.11.11.11:8001/hystrix.stream"进行monitor
  • "192.22.22.22:7979/hystrix-dashboard"并添加"192.22.22.22:8001/hystrix.stream"进行monitor
  • "192.11.11.11:7979/hystrix-dashboard"(重新打开一个页面)并添加"192.11.11.11:8080/turbine/turbine.stream"进行monitor

7、使用swagger分别访问myboot调用myboot2的两个接口getHotelInfo和getHotelInfo2,查看3个monitor页面,会发现turbine.stream会是前两个hystrix.stream的聚合结果

四、turbine结果

第二十六章 hystrix-dashboard + turbine的更多相关文章

  1. 【第二十六章】 hystrix-dashboard + turbine

    一.使用turbine的意义 引入多个hystrix stream: 1.使用hystrix-dashboard的可以添加多个stream的功能 图中添加的两个stream会在真正monitor的时候 ...

  2. Gradle 1.12用户指南翻译——第二十六章. War 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  3. “全栈2019”Java多线程第二十六章:同步方法生产者与消费者线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. “全栈2019”Java第二十六章:流程控制语句中循环语句do-while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. SpringBoot | 第二十六章:邮件发送

    前言 讲解了日志相关的知识点后.今天来点相对简单的,一般上,我们在开发一些注册功能.发送验证码或者订单服务时,都会通过短信或者邮件的方式通知消费者,注册或者订单的相关信息.而且基本上邮件的内容都是模版 ...

  6. UNP学习笔记(第二十六章 线程)

    线程有时称为轻权进程(lightweight process) 同一进程内的所有线程共享相同的全局内存.这使得线程之间易于共享信息,然后这样也会带来同步的问题 同一进程内的所有线程处理共享全局变量外还 ...

  7. 【WPF学习】第二十六章 Application类——应用程序的生命周期

    在WPF中,应用程序会经历简单的生命周期.在应用程序启动后,将立即创建应用程序对象,在应用程序运行时触发各种应用程序事件,你可以选择监视其中的某些事件.最后,当释放应用程序对象时,应用程序将结束. 一 ...

  8. python3 第二十六章 - 内置函数之Number相关

    数学函数 函数 返回值 ( 描述 ) 实例 abs(x) 返回数字的绝对值,如abs(-10) 返回 10 print(abs(-10)) =======输出:====== 10 ceil(x) 返回 ...

  9. 《Linux命令行与shell脚本编程大全》第二十六章 一些有意思的脚本

    26.1 发送消息 26.1.1 功能分析 1.确定系统中都有谁 $who 给出的信息包括用户名 用户所在终端 用户登入系统的时间 2.启用消息功能 用户可以禁止别人给我发消息,所以需要先检查一下是否 ...

随机推荐

  1. K-Means聚类和EM算法复习总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 k-means算法是一种得到最广泛使用的聚类算法. 它是将各个聚类子集内 ...

  2. Android开发学习之路-提升用户体验小技巧

    记得之前看谷歌的一个视频提到这个用户体验的问题,今天想起来了就写了个Demo来记录下. 当一个事件发生之后,用户需要一段时间才能知道结果,那么这段时间究竟应该让用户干什么?这个问题很常见,比如我们的软 ...

  3. iOS --------Crash 分析(一)

    iOS Crash 分析(文一)- 开始 1. 名词解释 1. UUID 一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID.目的是为了唯一识别这个文件. 2. dwarfdump 苹 ...

  4. 2017预防bug的重要性

    Bug,中文名缺陷.一个让软件测试员兴奋,让开发人员头疼的词.来源二次大战期间,一个称为"马克二型"的计算机,由于天气过热,硬件跟不上导致死机.最后发现是因为飞蛾,被继电器电死,将 ...

  5. 火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题

    一.先遇到document.body.scrollTop值为0的问题 做页面的时候可能会用到位置固定的层,读取document.body.scrollTop来设置层的位置,像这样, window.on ...

  6. 前端学PHP之面向对象系列第五篇——对象操作

    × 目录 [1]对象克隆 [2]对象比较[3]对象串行化[4]json 前面的话 本文主要介绍面向对象中的一些对象操作 对象克隆 对象复制,又叫对象克隆,可以通过 clone 关键字来完成 在多数情况 ...

  7. 深入学习jQuery样式操作

    × 目录 [1]设置样式 [2]增加样式 [3]删除样式[4]切换样式[5]判断样式[6]样式操作 前面的话 使用javascript脚本化CSS是一个系列,包括行间样式.计算样式.CSS类.样式表. ...

  8. jQuery之ready源码分析

    只要使用过jQuery的,想必对ready都不陌生,$(function(){})和$(document).ready(function(){})的使用更是习以为常. 要说到window.onload ...

  9. scikit-learn K近邻法类库使用小结

    在K近邻法(KNN)原理小结这篇文章,我们讨论了KNN的原理和优缺点,这里我们就从实践出发,对scikit-learn 中KNN相关的类库使用做一个小结.主要关注于类库调参时的一个经验总结. 1. s ...

  10. Rust初步(七):格式化

    在Rust中,如果要进行屏幕输出,或者写入到文件中,需要对数据进行格式化.这一篇总结一下它所支持的几种格式化方式. 这篇文章参考了以下官方文档,不过,按照我的风格,我还是会突出于C#语言的比较,这样可 ...