使用springCloud构建微服务——Hystrix实现容错及打印日志

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 使用springCloud构建微服务——Hystrix实现容错及打印日志

一、前期准备

先创建一个注册中心,一个消费者服务,一个生产者服务,由于之前写过,这里不多写了,请参考前面的博文。

使用springCloud构建微服务实战:https://blog.csdn.net/jiankang66/article/details/90084845

二、本篇主题

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统,服务或者第三方库,防止级联失败,从而提高系统的可用性和容错性。spring Cloud默认为Feign整合了Hystrix,在下面的操作中,不需要引入依赖了,前面已经引入过了Feign,在上篇的基础上接着操作。

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

重点:Feign已经为我们集成了Hystrix,经过查证,原来feign集成hystrix需要配置开启,如果不开启,会报错,不会去回退页面的。


在配置文件application.properties中添加:


(1)因为不知道feign集成hystrix需要配置开启,我花费了三四个小时找bug,一直不能在服务失败后,回退页面并打印日志。

feign.hystrix.enabled=true

1、创建一个Feign接口SchedualServiceHi,并添加@FeignClient注解

(1)注解中的name值是我们调用的其他应用名。该应用名中必须有该类中地址的映射,否则会调用出错。

(2)fallbackFactory的值是调用出错时会去调用的方法。

@FeignClient(name= "myprovider",fallbackFactory = FeignClientFallbackFactory.class)
public interface SchedualServiceHi {
    @RequestMapping("/index")
    String aa();
    @RequestMapping("/bb")
    public boolean mmm(@RequestParam("name") String name, @RequestParam("pwd") String pwd);
}

2、调用出错的类如下,消费者在调用提供者的方法出错时会返回调用这个类对应的方法,同时打印日志。


(1)该类需要实现FallbackFactory接口,并重写方法。


(2)接口的泛型为上面的Feign接口SchedualServiceHi。


(3)声明了打印日志的print属性,日志放在各个fallback方法中,不要直接放在create方法中。


(4)类上添加@component注解。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
public class FeignClientFallbackFactory implements FallbackFactory<SchedualServiceHi> {
//    打印日志
    private static final Logger print= LoggerFactory.getLogger(FeignClientFallbackFactory.class);
    @Override
    public SchedualServiceHi create(Throwable throwable) {
        return new SchedualServiceHi() {
            @Override
            public String mm() {
                print.info("fallback; reason was:",throwable);
                return "服务报错了";
            }
        };
    }
}

三、测试结果

1、将注册中心,生产者,消费者运行,请求消费者的mindex地址,此时能够正确跳转。

2、当把provider关闭后,再次访问,页面会返回服务报错了,同时会打印错误原因日志如下:

(1)意思:客户服务异常,加载没有可用的myprovider服务,为客户端。

image.png

四、总结

以上,我们使用Hystrix实现了微服务的容错,同时发生回退时,打印出来错误日志。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
30天前
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
97 6
|
3月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
70 0
|
13天前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
2月前
|
XML 监控 Java
Spring Cloud全解析:熔断之Hystrix简介
Hystrix 是由 Netflix 开源的延迟和容错库,用于提高分布式系统的弹性。它通过断路器模式、资源隔离、服务降级及限流等机制防止服务雪崩。Hystrix 基于命令模式,通过 `HystrixCommand` 封装对外部依赖的调用逻辑。断路器能在依赖服务故障时快速返回备选响应,避免长时间等待。此外,Hystrix 还提供了监控功能,能够实时监控运行指标和配置变化。依赖管理方面,可通过 `@EnableHystrix` 启用 Hystrix 支持,并配置全局或局部的降级策略。结合 Feign 可实现客户端的服务降级。
153 23
|
2月前
|
Java 对象存储 开发者
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
52 3
|
3月前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
192 3
|
3月前
|
Java 微服务 Spring
驾驭复杂性:Spring Cloud在微服务构建中的决胜法则
【8月更文挑战第31天】Spring Cloud是在Spring Framework基础上打造的微服务解决方案,提供服务发现、配置管理、消息路由等功能,适用于构建复杂的微服务架构。本文介绍如何利用Spring Cloud搭建微服务,包括Eureka服务发现、Config Server配置管理和Zuul API网关等组件的配置与使用。通过Spring Cloud,可实现快速开发、自动化配置,并提升系统的伸缩性和容错性,尽管仍需面对分布式事务等挑战,但其强大的社区支持有助于解决问题。
73 0
|
3月前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
|
3月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
3月前
|
敏捷开发 前端开发 测试技术
阿里云云效产品使用合集之如何将云效构建执行过程中产生的日志通过邮件发送
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。