Spring Cloud项目之断路器集群监控Hystrix Dashboard

image

微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

这里我们将叙述Spring Cloud中的断路器监控Hystrix Dashboard,在此之前我们需要了解一下Spring Cloud的基本组件。详情可了解https://www.souyunku.com/categories/

Hystrix Dashboard在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。

准备项目:

1. eureka-service:eureka注册中心,端口:8761,用于服务注册与发现;

2. eureka-provider_1:服务提供者1,端口:8071,用于提供服务;

3. eureka-provider_2:服务提供者2,端口:8072,用于提供服务;

4. ribbon-consumer-hystrix-dashboard:带有断路器、监控面板的消费者,端口:9000,用于消费服务、提供断路器和监控界面。

1-3个项目可参考https://www.souyunku.com/自行创建,或者从下文附件中下载。我们详细讲下ribbon-consumer-hystrix-dashboard项目的构建;

一、构建ribbon-consumer-hystrix-dashboard :

1.添加pom依赖:

image

2.启动类:

 1 /*
 2 * 开启服务负载均衡
 3 * 
 4 * @EnableDiscoveryClient向服务注册中心注册
 5 * 并且向程序的ioc注入一个bean: restTemplate
 6 * 并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
 7 */
 8 //通过 @EnableHystrix 开启 Hystrix 断路器监控,这个是必须的,并且需要在程序中声明断路点@HystrixCommand
 9 //加上@EnableHystrixDashboard注解,开启HystrixDashboard
10 @EnableHystrixDashboard
11 @EnableHystrix
12 @EnableDiscoveryClient
13 @SpringBootApplication
14 public class RibbonConsumerApplication_2 {
15 
16 @LoadBalanced
17 @Bean
18 RestTemplate restTemplate() {
19 return new RestTemplate();
20 }
21 
22 
23 public static void main(String[] args) {
24 
25 SpringApplication.run(RibbonConsumerApplication_2.class, args);
26 //将存放该项目注册信息的接口url写入本地文件
27 }
28 
29 }

3. 控制层:

 1 /**
 2 * 消费提供者方法
 3 * 描述:调用提供者的 `home` 方法
 4 **/
 5 @RestController
 6 public class ConsumerController {
 7 
 8 @Autowired
 9 private RestTemplate restTemplate;
10 
11 //创建了熔断器的功能 ,并指定了defaultStores熔断方法
12 //@HystrixCommand 声明短路点,表明该方法为hystrix包裹,
13 //可以对依赖服务进行隔离、降级、快速失败、快速重试等等hystrix相关功能 
14 //fallbackMethod 降级方法
15 //commandProperties 普通配置属性,可以配置HystrixCommand对应属性,例如采用线程池还是信号量隔离、熔断器熔断规则等等
16 //ignoreExceptions 忽略的异常,默认HystrixBadRequestException不计入失败
17 //groupKey() 组名称,默认使用类名称
18 //commandKey 命令名称,默认使用方法名 
19 @HystrixCommand(fallbackMethod = "defaultStores")
20 @GetMapping(value = "/hello")
21 public String hello() {
22 return restTemplate.getForEntity("http://eureka-provider/", String.class).getBody();
23 }
24 
25 //熔断方法直接返回了一个字符串, "feign + hystrix ,提供者服务挂了"
26 public String defaultStores() {
27 return "Ribbon + hystrix ,提供者服务挂了";
28 }
29 }

4. 安全控制 ,访问/hystrix路径要进行登录认证(可以不设置)

 1 @Configuration
 2 //@EnableWebSecurity
 3 public class SecurityConfiguration extends WebSecurityConfigurerAdapter{
 4 
 5 @Override 
 6 protected void configure(final HttpSecurity http) throws Exception {
 7 http.httpBasic()
 8 .and()
 9 .authorizeRequests()
10 .antMatchers("/hystrix")
11 .authenticated(); 
12 }
13 
14 @Autowired
15 public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
16 auth
17 .inMemoryAuthentication()
18 .withUser("root").password("123").roles("USER");//设置用户名密码
19 }
20 
21 }

二、 启动步骤:

1.启动注册中心 :eureka-service

image

2.启动eureka-provider_1和eureka-provider_2,启动后注册中心监控面板显示服务以及注册到eureka:

image

3.启动消费者项目:ribbon-consumer-hystrix-dashboard,启动后可在eureka注册中心发现服务

image

4. 登录断路器监控面板

由于我们添加了登录认证,需要在弹出框输入用户名密码(已在代码中配置)

image

登录后监控面板主页:看见一只像刺猬的神情有点凶小熊就可以了

image

5.进入图形化监控页面:

在界面依次输入:

http://127.0.0.1:9000/hystrix.stream (需要监控的)

2000 (获取监控数据间隔时间)

hello (需要监控的接口)

image
image

我们可以看一下http://127.0.0.1:9000/hystrix.stream,可以看见图形化界面的显示就是根据项目暴露的hystrix.stream接口返回的数据进行监听的。

image

下图是网上找的显示各指标的含义:

image

最后附上这四个项目的百度网盘地址:

链接:https://pan.baidu.com/s/1Q1R9I7IkQJ78sJUaokD04A

提取码:b37z

欢迎工作一到五年的Java工程师朋友们加入Java高并发QQ群: 957734884,群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容