软件弹性工程与设计

     

Java 中使用 Failsafe 实现容错

5 12K

在本文中,我们将探索Failsafe库,并了解如何将其合并到我们的代码中,以使其对故障情况更具弹性。什么是容错?无论我们将应用程序构建得多么好,总会有可能出错的地方。通常,这些都是我们无法控制的——例.

高可用高可靠系统设计中的重试机制

14 5K

重试机制是许多现代软件系统的关键组件。它允许我们的系统自动重试失败的操作,以从暂时性错误或网络中断中恢复。通过自动重试失败的操作,重试机制可以帮助软件系统从意外故障中恢复并继续正常运行。今天,我们就来.

使用 MaxScale 实现数据库的高可用性和弹性

27

在本文中,通过 Docker Compose 运行的实际演示来了解数据库 (MariaDB) 的高可用性和弹性。关键任务应用程序需要高可用性。高可用性的目标是为用户提供对服务或资源的一致访问,最大限度.

Spring Boot中@Retryable重试教程

54 12K

在不断连接的分布式系统世界中,应用程序经常面临短暂故障的困扰。这些意外的问题(例如网络故障或临时数据库中断)可能会导致合法操作失败,尽管一切正常。传统上,处理这些暂时性故障意味着繁琐的错误处理代码,其.

SpringBoot中实现API速率限制的令牌桶算法项目

86 4K

这个github项目是利用Bucket4j以及 Redis 缓存和 Spring Security 过滤器对私有 API 端点实施速率限制。需要升级到 Spring Boot 3 和 Spring S.

Kubernetes中负载均衡功能简介

59 5K

Kubernetes 作为容器编排平台,对于解决许多企业采用微服务带来的问题至关重要。公司越来越多地使用微服务跨多个平台管理大量小型容器,如果网络管理和资源分配管理不当,可能会导致性能问题。然而,当可.

Rust中实现 API 速率限制

103 10K

在本教程中,我们将采用 "滑动窗口 "算法,通过一个动态周期来检查请求历史记录,并使用一个基本的内存哈希表来存储用户及其请求时间。我们还将了解如何使用 tower-governor 为您配置速率限制。.

DevOps 团队的 5 种节省时间和解决问题的技术

91 2K

DevOps 几乎改变了软件开发的方方面面,使我们从每 12 个月一次大爆炸部署的黑暗时代转变为每天多次发布软件的现实。然而,DevOps专业人员必须克服几个障碍才能在组织内成功实施和维持DevOps.

弹性工程中4种不同的速率限制策略

61 11K

速率限制器是一种工具,用于监控客户端 IP 可以发送到 API 端点的每单位时间的请求数。如果请求数量超过某个阈值,速率限制器将在一段时间内阻止客户端 IP 发送进一步的请求。关键概念 限制:客户端I.

构建弹性架构的 5 个技巧

95 2K

如何构建弹性架构和系统?提供五个建议:1、后备措施您需要考虑为您使用的任何外部服务提供后备方案。例如,这可以是支付网关或简单的 URL 缩短器。为什么?如果您依赖这些外部服务并且它们变得不可用,这可能.

使用 Kafka 泳道处理不平衡流量

180 3K

HubSpot 的客户使用工作流程来自动化其业务流程。工作流由触发器和操作集合组成,触发器告诉工作流何时“注册”要处理的记录,操作集合告诉工作流如何处理这些注册的记录。有数百万个活动工作流程,每天总共.

如何设计高效的幂等性 API

130 2K

幂等性API意味着无论使用相同的请求体/参数成功调用该API多少次,数据/系统状态都将是相同的。在本文中,我们将提出一种同样关注 API 性能的幂等性机制。实现幂等 API 是建立安全重试机制的解决方.

SpringBoot异步重试机制

129 2K

探讨 Spring 对异步和重试操作的支持。假设我们需要构建一个简单的微服务来调用下游服务来处理一些数据。1、需要包含spring-boot-starter-web maven 依赖项:<depend.

建立弹性支付系统的 10 个技巧

217

Shopify Engineering 文章解释了构建弹性支付系统的 10 个最有用的提示和技巧。这是列表:1、设置低超时:他们建议尽可能调查并设置低超时。例如,Ruby 的内置 Net::HTTP .

又是每个程序员都应该知道的:幂等性

145 2K

在编程世界中,每个开发人员都应该理解许多概念,以便构建高效可靠的系统。其中一个重要的概念是幂等性,它指的是操作或函数的属性,多次应用时产生的结果与仅应用一次时产生的结果相同。这似乎是一个简单的概念,但.

限量抢票系统Ticketmaster的设计问题

714 3K

最近,Ticketmaster因泰勒·斯威夫特巡回演唱会门票销售时发生重大系统故障而成为新闻。该网站在需求的重压下崩溃,导致粉丝不满,声誉受损。首先,我们将看看Ticketmaster的官方声明,试图.

Netflix按需集群发现的零配置服务网格

374 3K

在这篇文章中,我们将讨论Netflix对服务网格的采用:一些历史,动机,以及我们如何与Kinvolk和Envoy社区合作开发一个简化复杂微服务环境中服务网格采用的特性:按需群集发现。在云计算的早期几年.

使用 Skupper 实现 Kubernetes 多集群负载均衡

505 1 4K

在本文中,您将了解如何利用Skupper在多个 Kubernetes 集群上运行的应用程序实例之间实现负载平衡。我们将使用 Kind 在本地创建一些 Kubernetes 集群。然后我们将使用 Sku.

RESTful API和事件驱动系统中的幂等性

458 3K

如果您正在构建 REST API 或事件驱动系统,幂等性是您需要考虑的一个非常重要的属性,因为它对于拥有弹性系统至关重要,并且它将帮助您避免不必要的额外副作用。您的借记卡是否曾因同一笔交易被扣款两次?.

解决Kafka消息丢失的一个简单办法

774 6K

虽然Kafka是一个功能强大的消息系统,但由于网络问题,我们可能会遇到一些不理想的情况。我们也遇到过由于网络问题导致的事件丢失,在试图避免这些丢失的同时,我们也遇到了由于相同原因导致的不同问题。在这篇.

使用 Spring Retry 实现数据库连接重试案例

490 2K
一个金融应用程序:当客户发送请求时,使用客户端的用户ID从第三方服务获取他们的账户信息,保存交易并更新缓存中的详细信息。尽管整个流程看似简单,但每个下游系统都不可靠。我们必须在每个层上实现重试,而且我.

混沌工程简介

788

混沌工程最著名的应用也许始于Netflix,当时他们开发了Chaos Monkey。什么是混沌工程?使用混沌工程来提高公共云中工作负载的弹性和可靠性有哪些好处?什么是混沌工程?“混沌工程是对系统进行实.

微服务故障的全局解决:Aperture 简介

672 11K
在处理微服务系统中的故障时,一直使用负载卸载和断路器等本地化缓解机制,但它们可能不如更全球化的方法有效。这些本地化机制在防止单个服务过载方面很有用,但它们在处理涉及服务之间交互的复杂故障时不是很有效,.

Spring Cloud Retry 指南 | baeldung

456 1 5K

Spring Retry 提供了自动重新调用失败操作的能力。这在错误可能是暂时的(如瞬时网络故障)时很有用。在本教程中,我们将看到使用Spring Retry 的各种方式:注释、RetryTempla.

用Java构建一个简单的速率限制器

982 2K

从 Android 的角度用Java构建一个简单的速率限制器:从 Android 的角度使用考虑这样一种情况,您正在编写代码来捕获用户的签名。当他们拖动指针时,您捕获了数千个点。平滑签名可能不需要所有.

Feign Reactive:访问REST API的首选

3079 8K

这是关于如何为第三方 API 集成实现 Feign Reactive 的分步指南。使用Feign Reactive而不是WebClient 作为 REST API 消费客户端。Spring WebCl.

弹性工程设计:Actor模型与微服务架构比较 - ufried

1829 1 8K
弹性有点像安全性:它有助于在某些事情没有按预期进行时不至于损失钱财。它也有一个概率成分:因为意外事件和失败只发生在一定的概率下。它也有一个间接的组成部分:如果你的IT系统过于频繁地出现故障,将会导致次.

Apache Kafka重试和维护重试事件的顺序

1568 7K
重试非常重要,尤其是在微服务系统中,这些服务必须经常协作才能处理请求。如果一个服务只中断了几秒钟会发生什么?其他服务应该在放弃之前向客户抛出错误或重试多次。举个简单的例子:通过http链式调用的服务:.

分布式系统中的内存限速器 - ajin

1006
在多台服务器分布在世界各地不同地区的情况下,为每台服务器实施速率限制器将导致两个主要问题: 不一致 竞争条件 在本文中,我们将探讨这两个主要问题,以及我们如何实施更好的策略来解决分布式系统的这些问题。.

系统架构10大架构特征 - zonito

2143 4K

想象一下你正在买一辆车。您需要其中的哪些基本功能?车辆应该将人从 A 点运送到 B 点。但我们还要检查的是安全性、舒适性、可维护性、易于维修或更好的里程。您也可以寻找电动版本或更快的速度。为什么?为了.