疯狂SpringCloud微服务架构实战 (Eureka -- 服务健康检查)

       在默认情况下,Eureka 的客户端每隔30秒会发送一次心跳给服务器端,告知它仍然存活。但是,在实际环境中有可能出现:客户端表面上可以正常发送心跳,但实际上服务是不可用的。

       例如一个需要访问数据的服务提供者,表面上可以正常响应,但是数据库已经无法访问;又如,服务提供者需要访问第三者的访问,而这些服务早已失效。对于这些情况,应当告诉服务器当前客户的状态,调用者或其他客户端无法获取这些有问题的服务实例。实现此功能可以使用 Eureka 的健康检查控制器。

       如果一个客户端本身没有问题,但该模块所依赖的服务无法使用,那么对于服务器以及其他客户端来说,该客户端也是不可用的,最常见的就是数据库访问模块;这样我们就需要做两件事:① 让客户的自己进行检查,是否能连接数据库;② 将连接数据库的结果与客户端的状态进行关联,并且将状态告诉服务器。

       要使用 Eureka 的健康检查控制器就需要导入 spring-boot-starter-actuator 依赖;实现其中的 HealthIndicator (健康指示器) 接口,根据是否能访问数据库来决定应用自身的健康。

案例:

1. 分别创建项目:crazyspringcloud-healthhandler-server 和 crazyspringcloud-healthhandler-provider 作为案例的服务注册中心和服务提供者;

2. 为 crazyspringcloud-healthhandler-provider (服务提供者) 添加 Eureka 的健康检查控制依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

按spring cloud常规要求完成配置后,启动注册中心和服务提供者,浏览器访问 http://localhost:8761/health 浏览器输出该 REST 服务向外展示当前应用的状态为“UP”:

3. 创建 HealthController 类,模拟数据连接模块,提供数据库连接状态:

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * 该Controller用来模拟数据库连接模块;
 * 使用变量:canVisitDb 模拟是否能连接数据库;
 */
@RestController
public class HealthController {
    // 标识当前数据库是否可以访问的变量
    public static Boolean canVisitDb = false;

    @RequestMapping(value = &#
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Cloud 微服务架构实战代码是一个基于 Spring Cloud 微服务解决方案的实践项目。它通过将常见的微服务技术组件和应用场景进行集成和示例演示,使读者能够深入了解和学习 Spring Cloud 微服务架构的实际应用。 该项目包含多个模块,其中包括注册中心(Eureka)、配置中心(Config)、网关(Zuul)、负载均衡(Ribbon)、链路跟踪(Sleuth)、熔断器(Hystrix)等,涵盖了微服务架构中的关键技术组件。在实现过程中,项目采用了 Spring Boot 来简化微服务架构的搭建和开发,并以 Maven 进行依赖管理和构建。 通过该项目的学习,读者可以了解到微服务架构的基本概念、实际应用场景和解决方案,掌握 Spring Cloud 微服务架构的相关技术和工具的实际应用,了解微服务架构的开发和部署流程,掌握基于 Spring Boot 的微服务开发和集成方法,从而提高微服务架构的设计实现和部署能力。 总之,Spring Cloud 微服务架构实战代码是一份完整的微服务架构实践项目,它可以帮助读者深入学习和了解微服务架构的实际应用,并具备较高的实际参考价值。 ### 回答2: Spring Cloud是一个开源的微服务架构实战代码,能够让开发人员在构建分布式系统时快速开发和部署微服务。它诞生于Spring项目之上,提供了基于Spring Boot的一套开发工具和服务,可以方便地管理和实现微服务架构的各项需求。 Spring Cloud包含了许多组件,如Eureka、Feign、Hystrix、Zuul等,这些组件都可以独立使用,也可以混合使用,相互之间的集成非常容易。例如,Eureka提供了服务注册与发现的能力,Feign支持微服务之间的远程调用,Hystrix可以提供服务的自我保护机制,Zuul可以提供API网关的功能,等等。 通过使用Spring Cloud,开发人员可以有效地解决微服务中需要处理的分布式问题,例如服务发现、服务注册、服务负载均衡、熔断、容错、路由、安全等等。此外,Spring Cloud还提供了一些常用的开发工具,如Spring Cloud Config,它可以帮助团队在开发和发布过程中有效地管理和配置系统的环境和配置文件。 总之,Spring Cloud是一套非常完善,且易于集成、扩展的微服务架构实战代码,尤其适用于企业级和大型系统的开发。它能够快速地实现微服务的各项技术需求,提高开发效率,使得开发人员更加专注于业务逻辑的开发,而不用再花费大量时间和精力处理微服务本身的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值