概述:流控为啥重要
上云的好处在于池化资源,让多租户共享,然后按需分配,从而降低成本。但进行:
- 多租户隔离:用户要求可以使用其买到的流量,并且不会被其他租户影响。
- 资源共享:资源只能逻辑隔开,不能物理隔开,否则无法充分动态分配(超发)。
是一对相对矛盾的事情,我认为,也是云原生数据库最要解决的问题。不把这个问题解决好,则数据库:
- 要么平台不赚钱:比如资源静态预留,虽然可以让用户满意,总能随时用到卖给他的资源配额,但会存在巨大资源浪费,要么价格贵,要么用户不买单。
- 要么用户不满意:多用户共享物理资源,但非常容易进行互相影响,造成用户不能用到平台声称的配额。
DynamoDB 从静态分配开始,逐步演化出一套全局和局部组合的准入控制机制,从而实现了物理上资源共享,但又在逻辑上给用户以配额隔离,从而实现了数据库真正的云原生。下面,我依据 Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service 这篇论文披露的细节,对其流控机制的演进过程做一个梳理,以飨诸君。
水平所限,谬误之处,欢迎随时指出。