软件弹性工程与设计

     

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

51 4K

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

Kubernetes中负载均衡功能简介

26 5K

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

Rust中实现 API 速率限制

45 10K

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

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

78 2K

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

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

40 11K

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

构建弹性架构的 5 个技巧

75 2K

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

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

128 3K

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

如何设计高效的幂等性 API

109 2K

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

SpringBoot异步重试机制

102 2K

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

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

191

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

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

120 2K

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

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

622 3K

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

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

349 3K

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

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

466 1 4K

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

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

429 3K

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

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

741 5K

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

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

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

混沌工程简介

763

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

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

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

Spring Cloud Retry 指南 | baeldung

434 1 4K

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

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

966 2K

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

Feign Reactive:访问REST API的首选

2916 8K

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

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

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

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

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

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

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

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

2081 4K

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

探索 Kafka Producer 的内部结构 - Alex

988 3K

Adobe Experience Platform Pipeline是一个低延迟、基于 Kafka 的流系统。管道连接数百个 Adob​​e 组件和系统。我们的 Kafka 集群处理310B msg/.

使用幂等key实现可重试的幂等性API设计 - yeng

1600 1

今天,没有人能保证你构建的微服务不会遇到麻烦。当问题发生时,我们通常希望最简单的解决问题的方法是重试并再次调用 API。重试可以是您的中间件/API 编排产品处理的一种简单机制。如果记录的性质可以通过.

Golang漏桶算法限速 - ITNEXT

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

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

881 2 2K

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