架构模式: 健康检查API
架构模式: 健康检查API
上下文
您已应用微服务架构模式。有时,服务实例可能无法处理仍在运行的请求。例如,它可能已用完数据库连接。发生这种情况时,监控系统应生成警报。此外,负载平衡器或服务注册表不应将请求路由到失败的服务实例。
问题
如何检测正在运行的服务实例无法处理请求?
关注点
- 服务实例失败时应生成警报
- 应将请求路由到工作服务实例
结论
服务具有返回服务运行状况的运行状况检查API端点(例如HTTP /运行状况)。API端点处理程序执行各种检查,例如
- 服务实例使用的基础结构服务的连接状态
- 主机的状态,例如磁盘空间
- 应用特定逻辑
运行状况检查客户端 - 监视服务,服务注册表或负载平衡器 - 定期调用端点以检查服务实例的运行状况。
例子
微服务示例应用程序是应用程序实现运行状况检查API的示例。它是用Scala编写的,使用Spring Boot和Spring Cloud作为微服务机箱。它们提供各种功能,包括健康检查端点。端点由Spring Boot Actuator模块实现。它配置一个/ health HTTP端点,用于调用可扩展的运行状况检查逻辑。
要启用/ health端点,首先将执行器定义为依赖项:
dependencies {
compile "org.springframework.boot:spring-boot-starter-actuator"
其次,启用Spring Boot自动配置:
@SpringBootApplication
class UserRegistrationConfiguration {
此时,您的应用程序将具有具有默认行为的运行状况检查端点。您可以通过定义一个或多个实现HealthIndicator接口的Spring bean来自定义此行为:
class UserRegistrationConfiguration {
@Bean
def discoveryHealthIndicator(discoveryClient : EurekaClient ) : HealthIndicator = new DiscoveryHealthIndicator(discoveryClient)
HealthIndicator必须实现health()方法,该方法返回Health值。
结果上下文
这种模式具有以下好处:
- 运行状况检查端点可以定期测试服务实例的运行状况
这种模式有以下缺点:
- 运行状况检查可能不够全面,或者服务实例可能在运行状况检查之间失败,因此请求仍可能路由到失败的服务实例
关联模式
- 服务注册表 - 服务注册表调用运行状况检查端点
架构模式: 健康检查API的更多相关文章
- ASP.NET Core之跨平台的实时性能监控(2.健康检查)
前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core之跨平台的实时性 ...
- 健康检查NET Core之跨平台的实时性能监控
ASP.NET Core之跨平台的实时性能监控(2.健康检查) 前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内 ...
- SpringCloud系列六:Eureka的自我保护模式、IP选择、健康检查
1. 回顾 前面讲了很多Eureka的用法,比如Eureka Server.Eureka Server的高可用.Eureka Server的用户认证(虽然未完全实现).元数据等, 这章将讲解剩下的自我 ...
- 架构模式:API组合
架构模式: API组合 上下文 您已应用微服务架构模式和每服务数据库模式.因此,实现从多个服务连接数据的查询不再是直截了当的. 问题 如何在微服务架构中实现查询? 结论 通过定义API Compose ...
- 架构模式: API网关
模式: API网关 上下文 让我们假设您正在构建一个使用Microservice体系结构模式的在线商店,并且您正在实现产品详细信息页面.您需要开发产品详细信息用户界面的多个版本: 用于桌面和移动浏览器 ...
- linux运维、架构之路-K8s健康检查Health Check
一.Health Check介绍 强大的自愈能力是k8s容器编排引擎一个重要特性,自愈能力的默认实现方式为自动重启发生故障的容器,另外还可以利用Liveness和Readiness探测 ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- Hibernate(1)——数据访问层的架构模式
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设 ...
- Docker Kubernetes 健康检查
Docker Kubernetes 健康检查 提供Probe探测机制,有以下两种类型: livenessProbe:如果检查失败,将杀死容器,然后根据Pod的重启策略来决定是否重启. readines ...
随机推荐
- UVa1078 Steam Roller——拆点+最短路
题目链接 思路 把每个点拆成\(5\)个点\(id(x,y),id(x,y)+n,id(x,y)+2*n,id(x,y)+3*n,id(x,y)+4*n\),分别表示到这个点时的方向为上,右,下,左和 ...
- LDA的参数确定和主题数确定方法
主题数确定:困惑度计算,画出曲线,选择拐点,避免信息丢失和主题冗余 https://blog.csdn.net/u014449866/article/details/80218054 参数调节: 方法 ...
- Codevs 2188 最长上升子序列(变式)
2188 最长上升子序列 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题目描述 Description LIS问题是最经典的动态规划基础问题之一.如果要求一个 ...
- Eclise快捷键(最全)
Eclipse常用快捷键 Eclipse常用快捷键 1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/) 快速修正:Ctrl+1 单词补全:Alt+/ 打开外部Java ...
- Python数据挖掘-文本挖掘
文本挖掘概要 搞什么的? 从大量文本数据中,抽取出有价值的知识,并且利用这些知识更好的组织信息的过程. 目的是什么? 把文本信息转化为人们可利用的知识. 举例来说,下面的图表利用文本挖掘技术对库克ip ...
- javascript数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
- linux(centos7)下安装maven
Linux下安装maven 1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用yum命令: 2.进入下载 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第十周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第十周学习总结 教材学习内容总结 第十二章 Java多线程机制 进程与线程 线程是比进程更小的执行单位,一个进程在其执行 ...
- NSLock的一些使用
在多线程的编程环境中,锁的使用必不可少! 使用时,基本方法就是: [lock lock]; // 加锁 [obj yourMethod]; // 处理你的操作 [lock unlock]; // 解锁 ...
- python 字符串(str)和列表(list)的互相转换
1.str to list str1 = "12345"list1 = list(str1)print list1 str2 = "123 sjhid dhi" ...