视频

了解更多
“简单是终极的复杂”— 莱昂纳多·达·芬奇
“大多数信息都是无关紧要的,大多数努力都是浪费的,只有专家才知道该忽略什么”—詹姆斯·克利尔,《原子习惯》
您拥有一个包含许多不同系统的复杂数据管道。从表面上看,它看起来非常复杂,但在幕后却是一团乱麻。它可能需要大量的管道工作来连接不同的部分,可能需要持续监控,可能需要一个大型团队,拥有独特的专业知识来运行、调试和管理它。更不用说,您使用的系统越多,您重复数据的地方就越多,数据不同步或过时的可能性就越大。此外,由于这些子系统中的每一个都是由不同的公司独立开发的,它们的升级或错误修复可能会破坏您的管道和数据层。
如果您不小心,最终可能会遇到以下情况,如三分钟视频所示。我强烈建议您在继续之前观看它。
复杂性之所以出现,是因为尽管每个系统在表面上看起来可能很简单,但它们实际上将以下变量引入您的管道,并可能增加大量复杂性
数据格式、模式和协议等变量加起来被称为“转换开销”。性能、持久性和可扩展性等其他变量加起来被称为“管道开销”。总的来说,这些分类共同构成了所谓的“阻抗不匹配”。如果我们能够衡量它,我们就可以计算复杂性并使用它来简化我们的系统。我们很快就会谈到这一点。
现在,您可能会争辩说,您的系统虽然看起来可能很复杂,但实际上是满足您需求的最简单系统。但是您如何证明这一点呢?
换句话说,您如何真正衡量并确定您的数据层是真正简单还是复杂?其次,您如何估计您的系统在添加更多功能时是否会保持简单?也就是说,如果您在路线图中添加更多功能,您是否还需要添加更多系统?
这就是“阻抗不匹配测试”发挥作用的地方。但让我们首先了解阻抗不匹配是什么,然后我们将进行测试本身。
这个术语起源于电子工程,用于解释电阻抗不匹配,导致能量从点 A 传输到点 B 时能量损失。
简单来说,这意味着您拥有的东西与您需要的东西不匹配。要使用它,您需要取用您当前拥有的东西,将其转换为您需要的东西,然后使用它。因此,存在不匹配以及与修复不匹配相关的开销。
在我们的案例中,您以某种形式或数量拥有数据,并且您需要在使用它之前对其进行转换。转换可能发生多次,甚至可能在中间使用多个系统。
在数据库世界中,阻抗不匹配发生的原因有两个
测试的目的是衡量整个平台的复杂性,以及在未来添加更多功能时复杂性是增加还是减少。
测试的工作原理是简单地使用“阻抗不匹配分数”(IMS) 来计算“转换开销”和“管道开销”。这将告诉您您的系统相对于其他系统而言是否已经很复杂,以及随着时间的推移,随着您添加更多功能,这种复杂性是否会增加。
以下是计算 IMS 的公式
该公式简单地将两种类型的开销相加,然后除以特征数量。这样,您将获得总开销/特征(即复杂性分数)。
为了更好地理解这一点,让我们比较四个不同的简单数据管道并计算它们的得分。其次,让我们也想象一下,我们正在两个阶段构建一个简单的应用程序,这样我们就可以看到 IMS 分数随着时间的推移如何随着我们添加更多功能而变化。
假设您正在从移动设备获取数百万个按钮点击事件,并且您需要在出现任何下降或峰值时发出警报。此外,您将整件事视为更大应用程序的一个功能。
案例 1:假设您只是使用 RDBMS 来存储这些事件,尽管表格可能不适合。
案例 2:假设您使用 Kafka 来处理这些事件,然后将它们存储到 RDBMS 中。
案例 3:假设您使用 Kafka 来处理这些事件,然后将它们存储到 KsqlDB 中。
案例 4:假设您使用 Redis Streams 来处理这些事件,然后将它们存储到 RedisTimeseries 中(两者都是 Redis 的一部分,并与 Redis 原生配合使用)。
我们在本示例中比较了四个系统,发现“案例 3”或“案例 4”最简单,IMS 为 1。在这一点上,它们都相同,但是当我们添加更多功能时,它们会保持相同吗?
让我们向我们的系统添加更多功能,看看 IMS 如何保持。
假设您正在构建相同的应用程序,但希望确保它们仅来自白名单中的 IP 地址。现在您正在添加一个新功能。
案例 1:假设您只是使用 RDBMS 来存储这些事件,尽管表格可能不适合,并且它们使用 Redis 或 MemCached 用于 IP 白名单。
案例 2:假设您正在使用 Redis + Kafka + RDBMS。
案例 3:假设您正在使用 Redis + Kafka + KsqlDB。
案例 4:假设您正在使用 Redis + Redis Streams + RedisTimeSeries。
当我们添加一项新功能时,
因此,在我们的示例中,案例 4 的 IMS 得分最初为 1,是最低的之一,但随着我们添加新功能,它实际上变得更好,最终降至 0.5。
请注意:如果您添加更多或不同的功能,案例 4 可能不会保持最简单。但这就是 IMS 得分的理念。只需列出所有功能,比较不同的架构,然后查看哪一个最适合您的用例。
为了让使用更加简单,我们为您提供了一个计算器,您可以在简单的电子表格中实现它来计算 IMS 得分。
使用方法
数据管道 1
数据管道 2
很容易沉迷于构建复杂的数据层,而不考虑后果。IMS 得分是为了帮助您意识到自己的决策。
您可以使用 IMS 得分轻松比较和对比多个系统的用例,并查看哪个系统真正最适合您的功能集。您还可以验证您的系统是否能够承受功能扩展并继续保持尽可能的简单。
永远记住
“简单是终极的复杂”——莱昂纳多·达·芬奇
“大多数信息都是不相关的,大多数努力都是浪费的,但只有专家才知道该忽略什么”——詹姆斯·克利尔,《原子习惯》