RTO & RPO

RTO & RPO

在故障恢复方面,目前业界公认有三个目标值得努力。

  • 恢复时间:企业能忍受多长时间没有 IT,处于停业状态。
  • 网络多长时间能够恢复
  • 业务层面的恢复

整个恢复过程中,最关键的衡量指标有两个:一个是 RTO,另一个是 RPO。

所谓 RTO,Recovery Time Objective,是指故障发生后,从 IT 系统宕机导致业务停顿之时开始,到 IT 系统恢复至可以支持各部门运作、恢复运营之时,此两点之间的时间段称为 RTO。

设计

幂等性

什么是幂等性

幂等性最早是数学里面的一个概念,后来被用于计算机领域,用于表示任意多次请求均与一次请求执行的结果相同,也就是说对于一个接口而言,无论调用了多少次,最终得到的结果都是一样的。比如以下代码:

设计

常见限流算法

限流

工程上的限流是什么呢?

限制的是 「流」,在不同场景下「流」的定义不同,可以是每秒请求数、每秒事务处理数、网络流量等等。

通常我们说的限流指代的是 限制到达系统的并发请求数,使得系统能够正常的处理 部分 用户的请求,来保证系统的稳定性。

限流不可避免的会造成用户的请求变慢或者被拒的情况,从而会影响用户体验。因此限流是需要在用户体验和系统稳定性之间做平衡的,即我们常说的 trade off

限流也称流控(流量控制)。

设计

动态代理

代理模式

代理模式是一种比较好的理解的设计模式。简单来说就是:我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。

生活中的代购、租房中介、售票黄牛、婚介、经纪人、快递、事务代理、非侵入式日志监听等,都是代理 模式的实际体现。使用代理模式主要有两个目的:

  • 一是保护目标对象
  • 二是增强目标对象(比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。)。
Java

[转] 如何设计一个可扩展的限流算法

限流(Rate Limiting,即速率限制)通过限制每个用户调用API的频率来防止API被过度使用,这可以防止他们因疏忽或恶意导致的API滥用。在没有速率限制的情况下,每个用户可以随心所欲地请求,这可能会导致“峰值”请求,从而导致其他用户得不到响应。在启用速率限制之后,它们的请求将被限制为每秒固定的数量。

设计