软件弹性工程与设计

     

Golang漏桶算法限速 - ITNEXT

1409 7K
分布式系统中最常见的可靠性模式之一是限制任务处理的速率。此任务可以是要处理的请求或事件。这样做是为了平滑流量的形状并避免流量突发,或者在底层系统运行时仅允许在任何给定时间进行最大特定数量的操作。速率限.

断路器真的有效吗?重试会让情况更糟糕! - brooker

910 2 2K

现代分布式系统被设计为允许发生系统中一部分故障,即使不能取悦所有人,也会继续为一些客户提供服务。而断路器的设计是为了将部分故障变成完全故障。这属于:一种机制可能会打败另一种机制。在部署断路器之前,请确.

使用Resilience4j实施反应式断路器 - Wenqi

1285 2 10K

本文将重点介绍使用 Spring Cloud 断路器库 Resilience4j 实现反应式断路器。 为什么选择 Resilience4j?我们可以使用两个主要库来实现断路器。Netflix Hyst.

从DoorDash安卓应用中学到的8个技巧

1473 2K
在移动应用程序中有效实施支付需要精确关注支付方式、用户体验和欺诈预防等因素。移动支付对企业至关重要,这意味着工程师应该采取深思熟虑的方法,预测所有可能发生的情况。在 DoorDash,我们发现了有助于.

使用Resilience4J增强Spring WebClient容错性 – Arnold

1311 9K

这次我们将深入探讨如何将 Resilience4J CircuitBreaker 与 Spring WebClient 集成。我将向您展示两种将 Resilience4J 与 WebClient 集成.

在分布式系统中通过客户端库包提高可用性

915 4K

在客户端应用程序中设置一个库,我们可以一致地处理故障,从而提高系统的感知可用性。在开发在我们自己的公司内部或外部使用的 API 时,除了记录和公开端点之外,我们还可以选择交付客户端库。这种方法对用户有.

JVM上容错库的初步比较 - frankel

1546 1 2K

如果您正在实施微服务,那么您很可能正在调用 HTTP 端点。使用 HTTP 调用,很多事情都可能出错。经验丰富的开发人员对此进行计划并进行设计,而不仅仅是快乐的道路。一般来说,容错包括以下特征: 重试.

如何编写幂等的 Bash 脚本?- Arslan

875 3K

您编写了一个 bash 脚本,但由于错误而中途退出,您修复系统中的错误并再次运行脚本。但是脚本中的一半步骤会立即失败,因为它们已经应用于您的系统。要构建弹性系统,您需要编写幂等的软件。 什么是幂等性?.

使用Spring Boot重试失败编写一个反向代理 - Ashrith

1252 1 7K

在这个微服务世界中,我们总是强调通过 API/服务网关层传递任何 HTTP 请求,该层连接多个微服务,并有一个最低要求,即记录每个服务的所有请求和响应以获得更清晰的可见性。我们可以考虑在以下场景中编写.

Golang的滑动窗口计数器Redis限速实现

2270 1

这是一个基于Figma 工程团队的博客文章构建的简单速率限制器。有关实际算法的要求和设计的信息,请参阅帖子。限速器满足这个接口:type  Limiter  interface {     Incre.

如何使用SpringBoot的重试功能模块? - Gavin

1092 6K

重试功能是 Spring Batch 模块的一部分。从 2.2.0 开始,此功能从 Spring Batch 中提取出来并作为一个单独的模块进行维护。要在 Spring 应用程序中启用此功能,请将此依.

使用Kafka重新架构电子商务系统 - Dina

1380 1 2K
示例是:向经过身份验证的用户显示产品页面,下图显示了在这种情况下如何执行请求。为经过身份验证的用户显示产品页面,请注意,必须执行五个请求,但我们应该只计算四个顺序请求。尽管如此,由于请求是以同步方式执.

如何在一周内使用Kafka+Redis构建分布式排行榜系统? - Aritra

1393 1 4K
这是 T20 世界杯赛季,我们想为我们的用户建立一个测验系统,用于短期预言预测。在比赛开始时要求用户预测场景,最后,主持人将提交所有预测场景中实际发生的情况。评分将根据谁回答正确以及回答所花费的时间进.

亚马逊认为在分布式系统中必须避免使用回退

1216 1 2K

在分布式系统领域,回退策略是最难应对的挑战之一,对于时间敏感的服务来说尤其如此。更糟糕的是,不良的回退策略可能需要很长时间(甚至数年)才能产生影响,而优质策略与不良策略之间的差异并不明显。本文将重点讲.

六种系统弹性模式 – Cruform

1743

系统弹性是组织、硬件和软件系统减轻故障或损失的严重性和可能性、适应不断变化的条件并在事后做出适当响应的能力。在这篇文章中,我将介绍以下系统弹性模式: 自适应响应 卓越的监控 协调弹性 异构系统 动态重.

弹性工程也是一个研发问题 - rookout

927 1

您的公司拥有一支才华横溢的站点可靠性工程师 (SRE) 团队来创建可扩展且高度可靠的软件系统,以最大限度地减少错误的影响。他们将处理客户问题,花时间随叫随到,并通过人工干预提供帮助。在与客户端错误作斗.

远程调用的容错模式 - pragmatists

1163 1 3K

我们生活在一个不完美的世界里,失败是不可避免的。我们依赖的系统迟早会失败。我们无法采取任何措施来阻止它,但我们有能力减轻级联故障。我们只需要在我们的工具箱中添加一些工具。 超时必须了解任何资源池都可能.

基于快速失败的软件开发 - levelup

922 3K

本文介绍了fail-fast 原理、它的优点、如何应用它以及我的个人经验。尽管看起来违反直觉,但快速失败会使您的应用程序更加健壮。使用快速失败原则,错误和故障会更快出现,这使得它们更容易修复。如果本文.

想成为首席软件工程师?请放下编译原理来学习弹性工程!

992 2 4K
如果你想成为一名影响力的员工/首席工程师,请放下编译器,学习弹性工程!是的,毫无疑问,深度编译器工作原理可以对软件世界产生巨大影响,但这是一个专业,通常对雇用你的公司影响很小!还需要进一步学习系统理论.

Spring Cloud Gateway限制API速率 - tanzu

1713 1 4K

软件架构师的当务之急之一是保护API和服务端点免受有害事件(例如拒绝服务攻击,级联故障或资源过度使用)的危害。速率限制是一种用于控制使用API​​或服务的速率的技术,它反过来可以保护您免受可能导致服务.

阿里巴巴哨兵Sentinel简介 | Baeldung

4022 5K

顾名思义,Sentinel是微服务的强大后卫。它提供了流量控制,并发限制,电路中断和自适应系统保护等功能,以确保其可靠性。这是阿里巴巴集团积极维护的开源组件。此外,它正式是Spring Cloud C.

GitHub如何在Redis中使用分片的复制速率限制器扩展API

700

大约一年前,我们GitHub迁移了一个旧的速率限制器,以提供更多的流量并适应更具弹性的平台体系结构。我们采用了带有客户端分片的复制Redis后端。最终,效果很好,但是我们在此过程中吸取了一些教训。 M.

快速失败是让失败立即快速发生! - pathelland

1003

随着我们逐渐利用云计算,这变得越来越具有挑战性。由于各个组件都面临着被称为“灰色失败”的新挑战,因此我们创建强大解决方案的方法仍然面临压力 。在出现灰色故障时,服务器或网络的一部分不会快速失败,而是开.

使用SpringBoot实现微服务超时重试模式 - Vinsguru

1992 4K
使用resilience4j的库和Spring Boot设计高弹性的微服务。微服务本质上是分布式的。当您使用分布式系统时,请始终记住这一第一法则- 网络中可能发生任何事情。处理任何此类意外故障可能很难.

什么是可靠性标准以及如何保证? -DZone

2232 3K

托马斯·里德(Thomas Reid)曾经写道:“整个一条链并不比链条中最薄弱的节点更强大。” 这对于任何具有相互依赖的链接的系统都是如此,无论是文字链还是软件应用程序中的依赖链。如果一个链接断开,负.

使用Redis和Golang实现滑动日志速率限制器 - gitconnected

1020
场景:在与多个支付提供商进行通信的应用程序上工作场景中,每个提供商对我们都有自己的速率限制。我们不想用任何提供商的费率限制,同时也要充分利用我们允许的限制。我们可以承受将付款请求延迟一小段时间的麻烦,.

Apache Kafak如何处理消息反序列化失败等毒丸现象?

6807 9K

在Kafka的场景下毒丸是:针对Kafka主题生产推入的记录,无论尝试多少次,消费者使用都会失败。因此,毒丸可以有不同的形式: 记录已损坏(我自己从未使用Kafka遇到过此问题) 反序列化失败 主题的.

使用Bucket4j限制Spring API的访问速率 - Baeldung

6401 3 20K

在本教程中,我们将学习如何使用  Bucket4j对Spring REST API进行速率限制。我们将探索API速率限制,了解Bucket4j,并通过一些在Spring应用程序中限制REST API速.

经验分享:如何重新再处理Apache Kafka的消息事件? -Tinkoff

2422 1 6K
在外部系统之一不可用的情况下进行事件重新处理是我们业务流程的重要组成部分。希望有这样一个重试机制:如果任何外部系统暂时不可用,该应用程序可以让我们重新处理消息。卡夫卡之前在项目的早期,我们使用IBM .

resilience4j不够用?自制分布式断路器来帮忙 -Nicolas

1703 5K
当服务的多个实例可以调用指定的外部服务,在这些服务实例中都要定制断路策略很浪费,比如调用外部服务一段时间后进行关闭处理逻辑等。他们可以统一共享调用同一个外部服务的统计信息,这样一个调用失败以后,其他服.