耗时 18 个月,我们构建了一个真正可扩展的无服务器 SQL 数据库

作者|AndyKimball
译者|Sambodhi
策划|蔡芳芳
在经历了18个月的挑战之后 , 我们推出了第一个真正可扩展的无服务器SQL数据库 。 这东西现在可以免费使用!请继续阅读本文 , 了解CockroachDB无服务器是如何由内而外工作的 , 以及我们为什么可以免费提供这种服务——不是在某段时间内免费 , 而是永远免费 。 要实现这一目标 , 需要进行许多重大的、迷人的工程 。 你一定会喜欢这个故事的 。
什么是CockroachDB无服务器
如果你之前创建了一个数据库 , 根据你的预期流量 , 你可能需要评估使用的服务器数量 。 加入预测值过低 , 你的数据库就在负载中倒下 , 从而导致停机 。 如果预测值过高 , 或者流量猛增 , 你就会浪费钱在这些空闲的服务器上 。 能否有更好的办法呢?
无服务器意味着你无需考虑服务器的问题 。 诚然 , 有些服务器正忙于处理应用程序的请求 , 但这是我们的问题 , 与你无关 。 通过这些努力 , 我们可以在幕后分配、配置和维护服务器 。 你不需要为服务器付费 , 而是为你的应用程序在数据库上的请求和数据所消耗的存储付费 。
你只需要为实际使用的花费买单 , 而不必预先计算可能的花费 。 如果你用得多 , 我们将会自动分配更多的硬件以处理增加的负载 。 如果你用得少 , 那么你就可以少付点钱 , 甚至不用付钱 。 如果你能设定一个有保障的每月消费限额 , 那么你将永远不会对账单感到惊讶 。 如果你接近该限额 , 我们将提醒你 , 在你超出该限额时 , 甚至免费提供性能基线水平 。
这使我想到最重要的部分 。 CockroachDB无服务器是“永远免费”的 , 每月为请求和存储提供慷慨(且永不终止)的信用 。 只要点击几次鼠标或者调用一个API , 你就能在几秒钟内创建一个全功能的CockroachDB数据库 。 你将得到一个“永远在线”的数据库 , 它可以在数据中心故障时依然存在 , 并为你的数据保留多个加密副本 , 这样你就不会因为黑客或硬件故障而丢失数据 。 它能够自动且透明地扩展 , 以满足你的需求 , 无论大小 , 都无需修改你的应用程序 。 它支持在线架构迁移 , 兼容Postgres , 并允许你获得企业特性 。
在你选择的任何应用环境中使用你喜欢的语言、SDK或工具;使用CockroachDB无服务器并不意味着你必须使用无服务器计算服务 , 比如AWSLambda或GoogleCloudFunctions等 。
我们怎么能承担得起赠送这个东西呢?毫无疑问 , 我们希望你们中的一些人能够成功地开发出应用程序 , “大干一场” , 成为付费用户 。 但是 , 除了这些之外 , 我们还创建了一种创新的无服务器架构 , 允许我们在一个单一的底层物理CockroachDB数据库集群上安全地托管成千上万的虚拟化CockroachDB数据库集群 。 这就是说 , 一个只有几千字节存储空间和少量请求的小型数据库 , 其运行成本几乎为零 , 因为它只是在一小块物理硬件上运行 。 下面我会详细地解释一下它是如何工作的 , 但是这里有一张图让你思考:
耗时 18 个月,我们构建了一个真正可扩展的无服务器 SQL 数据库

单租户架构
在此之前 , 单个物理CockroachDB集群是供单个用户或组织专门使用的 。 这就是所谓的单租户 。 在一些CockroachDB之前的版本中 , 我们已经添加了多租户支持 , 这使得一个物理CockroachDB集群可以由多个用户或组织(称为“租户”)共享 。 每一个租户都有自己的虚拟化CockroachDB集群 , 该集群托管在物理CockroachDB集群上 , 但是可以安全地隔离其他租户集群 。 你也许对虚拟机的工作方式很熟悉吧?它有点类似 , 仅用于数据库集群 。