hystrix

Spring Cloud学习笔记【六】Hystrix 监控数据聚合 Turbine

谁说胖子不能爱 提交于 2019-11-28 03:41:32
上一篇 我们介绍了使用 Hystrix Dashboard 来展示 Hystrix 用于熔断的各项度量指标。通过 Hystrix Dashboard,我们可以方便的查看服务实例的综合情况,比如:服务调用次数、服务调用延迟等。但是仅通过 Hystrix Dashboard 我们只能实现对服务当个实例的数据展现,在生产环境我们的服务是肯定需要做高可用的,那么对于多实例的情况,我们就需要将这些度量指标数据进行聚合。下面,我们就来介绍一下另外一个工具:Turbine。 准备工作 我们将用到之前实现的几个应用,包括: eureka-server:服务注册中心 service-producer:服务提供者 service-hystrix-feign:使用 Feign 和 Hystrix 实现的服务消费者 service-hystrix-ribbon:使用 Ribbon 和 Hystrix 实现的服务消费者 service-hystrix-dashboard:用于展示 service-hystrix-feign 和 service-hystrix-ribbon 服务的 Hystrix 数据 创建 Turbine 创建一个标准的 Spring Boot 工程,命名为:service-turbine POM 依赖 1 <dependency> 2 <groupId>org

Turbine——Hystrix集群监控

无人久伴 提交于 2019-11-28 03:41:05
上一篇文章讲述了如何利用Hystrix Dashboard去监控断路器的Hystrix command。当我们有很多个服务的时候,这就需要聚合所有服务的Hystrix Dashboard的数据了。这就需要用到Spring Cloud的另一个组件了,即Hystrix Turbine。 一、Hystrix Turbine简介 看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看多个系统或集群系统的Hystrix Dashboard数据就需要用到Hystrix Turbine。Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。Hystrix Turbine的使用非常简单,只需要引入相应的依赖和加上注解和配置就可以了。 二、准备工作 因为我们需要监控多个服务的Dashboard,所以需要搭建一个Turbine服务来聚合监控 Hystrix 断路器,取名为spring-cloud-hystrix-turbine。 三、创建spring-cloud-hystrix-turbine 1、引入pom依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi

Spring Cloud Alibaba Sentinel 整合 Feign 的设计实现

佐手、 提交于 2019-11-28 03:26:26
作者 | Spring Cloud Alibaba 高级开发工程师洛夜 来自公众号阿里巴巴中间件投稿 前段时间 Hystrix 宣布不再维护之后( Hystrix 停止开发。。。Spring Cloud 何去何从? ),Feign 作为一个跟 Hystrix 强依赖的组件,必然会有所担心后续的使用。 作为 Spring Cloud Alibaba 体系中的熔断器 Sentinel,Sentinel 目前整合了 Feign,本文对整合过程做一次总结,欢迎大家讨论和使用。 Feign 是什么? Feign 是一个 Java 实现的 Http 客户端,用于简化 Restful 调用。 Feign 跟 OkHttp、HttpClient 这种客户端实现理念不一样。Feign 强调接口的定义,接口中的一个方法对应一个 Http 请求,调用方法即发送一个 Http 请求;OkHttp 或 HttpClient 以过程式的方式发送 Http 请求。Feign 底层发送请求的实现可以跟 OkHttp 或 HttpClient 整合。 要想整合 Feign,首先要了解 Feign 的使用以及执行过程,然后看 Sentinel 如何整合进去。 Feign 的使用 需要两个步骤: 1、使用 @EnableFeignClients 注解开启 Feign 功能 @SpringBootApplication

Spring Cloud Feign实例讲解

自闭症网瘾萝莉.ら 提交于 2019-11-28 03:25:33
前面博文搭建了一个 Eureka+Ribbon+Hystrix 的框架,虽然可以基本满足服务之间的调用,但是代码看起来实在丑陋,每次客户端都要写一个 restTemplate ,为了让调用更美观,可读性更强,现在我们开始学习使用 Feign 。 Feign 包含了 Ribbon 和 Hystrix ,这个在实战中才慢慢体会到它的意义,所谓的包含并不是 Feign 的 jar 包包含有 Ribbon 和 Hystrix 的 jar 包这种物理上的包含,而是 Feign 的功能包含了其他两者的功能这种逻辑上的包含。简言之: Feign 能干 Ribbon 和 Hystrix 的事情,但是要用 Ribbon 和 Hystrix 自带的注解必须要引入相应的 jar 包才可以。 案例一: Eureka 注册中心: https://github.com/yejingtao/forblog/tree/master/demo-eureka-register 服务提供方: https://github.com/yejingtao/forblog/tree/master/demo-feign-freeservice 服务调用方: https://github.com/yejingtao/forblog/tree/master/demo-feign-freeconsumer 服务提供方就是个简单的

Dubbo的高可用性

╄→尐↘猪︶ㄣ 提交于 2019-11-28 01:25:57
1、zookeeper宕机与dubbo直连 现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务。 原因: 健壮性 l 监控中心宕掉不影响使用,只是丢失部分采样数据 l 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务 l 注册中心对等集群,任意一台宕掉后,将自动切换到另一台 l 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯 l 服务提供者无状态,任意一台宕掉后,不影响使用 l 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复 高可用:通过设计,减少系统不能提供服务的时间; Dubbo直连: 直接连接到服务器ip地址,绕过zookeeper 2、集群下dubbo负载均衡配置 在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。 负载均衡策略 Random LoadBalance 随机,按权重设置随机概率。 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。 RoundRobin LoadBalance 轮循,按公约后的权重设置轮循比率。 存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。 LeastActive LoadBalance

Springcloud之Hystrix

耗尽温柔 提交于 2019-11-28 01:25:52
简介 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时,异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性; "断路器"本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的,可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间,不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。 特性:1.1 服务熔断 熔断机制是应对雪崩效应的一种微服务链路保护机制;当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息;当检测到该节点微服务调用正常后恢复调用链路; 1.2 服务降级 服务降级:整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来; 服务降级处理是在客户端实现完成的,与服务端没有关系;当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback回调,返回一个缺省值; 入门代码实现 创建一个springboot项目:hystrix-demo 搭建eureka参考 搭建eureka 配置文件 application

Spring Cloud的简单介绍

这一生的挚爱 提交于 2019-11-28 01:23:18
参考地址: https://mp.weixin.qq.com/s/wG4CTLORnvemkjUsZ7YP6Q 从一个例子开始 对于这样的“大”问题,通常需要拆解成小问题来回答。要说明 Spring Cloud 做了什么,就要说清楚它包含的组件都做了些什么? 如果一个个把组件罗列出来,似乎太过独立,没有关联性,缺少逻辑感。我们就从一个简单的例子开始,把这些组件像串珍珠一样串起来。 假设有一个项目,这个项目有两个服务,分别是“A”和“B”: “A”和“B”的关系是,“A”调用“B”。 然后,有一个客户端“C”调用“A”。 客户端“C”调用服务“A”,服务“A”调用服务“B” 1. Eureka 服务之间互相认识 在服务端我们已经有了两个服务,“A”和“B”。他们的关系是“A”调用“B”,“B”被“A”调用。 当只有两个服务的时候我们是知道这种关系,并且可以把这种关系记录下来的,但是如果服务一多,我们如何记录这种关系呢? 于是,Eureka 就登场了,它负责“服务注册,服务发现”的工作。Eureka 分成 Eureka Server 和 Eureka Client。 每个微服务架构都会有一个或者多个 Eureka Server 用来保存注册服务的信息。 每个服务都会包含一个Eureka Client,其中会配置Eureka Server的信息,这样当服务启动的时候就能够把自己注册到

Spring Cloud Netflix架构浅析

两盒软妹~` 提交于 2019-11-27 16:38:40
最近接触微服务这块的东西,对这方面有了一些了解,拿出来和大家分享一下。 微服务框架Spring Boot+Spring Cloud Spring Cloud是基于 Spring Boot 的一整套实现 微服务 的框架,可以说,Spring Boot作为框架,Spring Cloud作为微服务,一起构成了一种不可忽视的、新生的框架体系。它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、 分布式 会话和集群状态管理等组件,方便易用。Spring Cloud包含了非常多的子框架,其中,Spring Cloud Netflix 是其中一套框架,它主要提供的模块包括:服务发现、断路器和监控、智能路由、客户端负载均衡等。 2. Spring Cloud Netflix组件以及部署 (1)Eureka,服务注册和发现,它提供了一个服务注册中心、服务发现的客户端,还有一个方便的查看所有注册的服务的界面。 所有的服务使用Eureka的服务发现客户端来将自己注册到Eureka的服务器上。 (2) Zuul ,网关,所有的客户端请求通过这个网关访问后台的服务。他可以使用一定的路由配置来判断某一个URL由哪个服务来处理。并从Eureka获取注册的服务来转发请求。 (3) Ribbon ,即负载均衡,Zuul网关将一个请求发送给某一个服务的应用的时候

白话SpringCloud | 第六章:Hystrix监控面板及数据聚合(Turbine)

断了今生、忘了曾经 提交于 2019-11-27 16:38:03
前言 前面一章,我们讲解了如何整合 Hystrix 。而在实际情况下,使用了 Hystrix 的同时,还会对其进行实时的数据监控,反馈各类指标数据。今天我们就将讲解下 Hystrix Dashboard 和 Turbine .其中 Hystrix Dashboard 是一款针对 Hystrix 进行实时监控的工具,通过 Hystrix Dashboard 我们可以在直观地看到各 Hystrix Command 的 请求响应时间 , 请求成功率 等数据,监控单个实例内的指标情况。后者 Turbine ,能够将多个实例指标数据进行聚合的工具。 Hystrix-Dashboard Hystrix-dashboard(仪表盘) 是一款针对Hystrix进行实时监控的工具,通过 Hystrix Dashboard 我们可以在直观地看到各 Hystrix Command 的请求响应时间, 请求成功率等数据。 创建一个 spring-cloud-hystrix-dashboard 工程。 0.引入POM依赖。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency> 1

Hystrix 工作流程

牧云@^-^@ 提交于 2019-11-27 16:37:09
Hystrix是如何处理请求,在官网有详细介绍: https://github.com/Netflix/Hystrix/wiki/How-it-Works , 本文重点围绕下方流程图介绍一下主要的流程; Hystrix是将我们的系统间调用包装成一个个Comman来执行,举个简单的例子: public class TestCommand extends HystrixCommand<Integer> { private TestServiceA serviceA; private int index; private static HystrixCommandProperties.Setter setter = HystrixCommandProperties.Setter() //至少有10个请求,熔断器才进行错误率的计算 .withCircuitBreakerRequestVolumeThreshold(3) //熔断器中断请求5秒后会进入半打开状态,放部分流量过去重试 .withCircuitBreakerSleepWindowInMilliseconds(5000) //错误率达到50开启熔断保护 // .withCircuitBreakerErrorThresholdPercentage(30)