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設計過程從寫下一組設計原則開始,這些原則將確保我們面向用戶做對的事。這些原則很簡單:

  1. 保持簡單。Linkerd應該操作簡單,具有較低的認知開銷。操作者應該發現它的組件是清晰的,它的行為是可理解的和可預測的,而不需要什麼魔法。
  2. 減少資源需求。Linkerd應該儘可能降低性能和資源成本,尤其是在數據平面層。
  3. 執行簡單。Linkerd不應該破壞現有的應用程式,也不應該要求複雜的配置才能啟動或執行簡單的操作。

這三個原則有一個共同點:它們都降低了運行Linkerd的操作成本。無論它是通過計算資源來度量的,還是更重要的,在人類花費的時間中度量的,這些原則都要求Linkerd忠實於保持服務網格運行成本儘可能低的目標。

這種對成本的關注非常關鍵,因為Linkerd本質上是面向人類的產品:運營商、SRE和平台所有者。從這個角度來看,降低運營成本不僅僅是一個好主意,它還反映了實際的人類將如何花費他們的時間和精力在我們的項目上。對我們來說,不把運營成本降到最低將給我們的用戶帶來極大的損害。

有關這些原則的更多細節和一些實際應用的示例,請參閱Linkerd設計原則文檔。

https://linkerd.io/2/design-principles/

Linkerd是一個社區項目,由CNCF託管。如果你有功能需求、問題或評論,我們歡迎你加入我們快速增長的社區!Linkerd在GitHub上,我們在Slack、Twitter和郵件列表上都有一個蓬勃發展的社區。來一起玩吧!