Actor 模型

Actors模型(Actor model)首先是由Carl Hewitt在1973定义, 由Erlang OTP (Open Telecom Platform) 推广,其消息传递更加符合面向对象的原始意图。 Actors属于并发组件模型 ,通过组件方式定义并发编程范式的高级阶段,避免使用者直接接触多线程并发或线程池等基础概念。

在 Actor 模型中,一切都是 actor,actor 通过消息传递的方式与外界通信。消息传递是异步的。每个actor都有一个邮箱(Mailbox),该邮箱接收并缓存其他actor发过来的消息,actor一次只能同步处理一个消息,处理消息过程中,除了可以接收消息,不能做任何其他操作。

设计

RTO & RPO

RTO & RPO

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

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

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

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

设计

幂等性

什么是幂等性

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

设计

常见限流算法

限流

工程上的限流是什么呢?

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

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

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

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

设计

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

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

设计