Linkerd的设计原则
- 2019 年 12 月 4 日
- 筆記
作者:William Morgan
tl;dr:服务网格需要设计原则吗?我们是这样认为的。我们围绕三个核心原则构建了Linkerd 2.0,这些原则旨在降低运行服务网格的操作成本,尤其是对人类而言。
当我们去年9月发布Linkerd 2.0时,它标志着与Linkerd 1.x的重大背离。JVM、配置文件以及错综复杂的设置和调优过程都不见了。Linkerd现在可以在60秒内安装,无需配置或应用程序更改,并且可以正常工作。更不用说Linkerd 2.0实际上比以前小了几个数量级,而且速度更快。
在Linkerd 2.3工作了6个多月之后,人们对这些变化的反应非常积极:

从JVM到Rust的迁移是Linkerd 2.0成功的一个重要部分,但是同样重要的是,我们决定为2.0编写一组核心产品设计原则。这些原则是基于我们多年来帮助世界各地的公司获得Linkerd 1.x投入生产的经验得出的:当我们的用户从Linkerd获得巨大价值时,他们为此付出了沉重的代价。这些代价是配置、理解、调优和操作Linkerd 1.x所花费的时间。
为了解决这个问题,我们的2.0设计过程从写下一组设计原则开始,这些原则将确保我们面向用户做对的事。这些原则很简单:
- 保持简单。Linkerd应该操作简单,具有较低的认知开销。操作者应该发现它的组件是清晰的,它的行为是可理解的和可预测的,而不需要什么魔法。
- 减少资源需求。Linkerd应该尽可能降低性能和资源成本,尤其是在数据平面层。
- 执行简单。Linkerd不应该破坏现有的应用程序,也不应该要求复杂的配置才能启动或执行简单的操作。
这三个原则有一个共同点:它们都降低了运行Linkerd的操作成本。无论它是通过计算资源来度量的,还是更重要的,在人类花费的时间中度量的,这些原则都要求Linkerd忠实于保持服务网格运行成本尽可能低的目标。
这种对成本的关注非常关键,因为Linkerd本质上是面向人类的产品:运营商、SRE和平台所有者。从这个角度来看,降低运营成本不仅仅是一个好主意,它还反映了实际的人类将如何花费他们的时间和精力在我们的项目上。对我们来说,不把运营成本降到最低将给我们的用户带来极大的损害。
有关这些原则的更多细节和一些实际应用的示例,请参阅Linkerd设计原则文档。
https://linkerd.io/2/design-principles/
Linkerd是一个社区项目,由CNCF托管。如果你有功能需求、问题或评论,我们欢迎你加入我们快速增长的社区!Linkerd在GitHub上,我们在Slack、Twitter和邮件列表上都有一个蓬勃发展的社区。来一起玩吧!