linkerd:來自推ter為微服務而生的開源RPC解決方案
來自: http://dockone.io/article/1032
大家要如何以規模化方式運維微服務應用程序?實踐當中會出現哪些問題,我們又該如何加以解決?在大規模與非預測性工作負載場景當中,我們需要滿足哪些條件才能運行一款大型微服務應用程序,而又能夠確保不必受到功能發布或者產品變更的影響?
在圍繞微服務展開的探討當中,我們發現幾乎很少有人能夠切實回答上述問題。以Docker、Mesos、Kubernetes以及gRPC為代表的各類新型技術成果的快速崛起使得我們能夠輕松建立小型新架構。然而,高流量生產性用例又該如何實現?根據我們的推算,目前能夠以規模化方式運行微服務,從而解決實際問題的企業數量仍然相當有限。
推ter就是其中的典型代表。而且盡管其也經歷過公共服務中斷,但推ter負責運維的是世界上規模最大的微服務應用之一,其中包含上百種服務、數以萬計的節點以及每項服務中的數百萬RPS。令人震驚的是,事實證明這樣的工作絕非易事。雖然不是不可能,但需要企業投入多年并充分運用自身聰明才智,從而令一切在實踐層面運作良好。
當Oliver和我前幾年離開推ter公司時,我們的目標是運用自己多年積累下的專業知識,將其轉化成可供全世界各組織機構使用的可行性資源。令人振奮的是,這些知識中已經有相當一部分以開源項目的面貌了,也就是Finagle項目——這是一套用于支撐推ter微服務架構的高通量RPC庫。
Finagle屬于推ter的內部核心庫,負責管理不同服務間之通信流程。事實上,推ter公司的每一項在線服務都立足于Finagle構建而成,而且其支持著每秒發生的成百上千萬條RPC調用。除了推ter之外,Finagle還為多家企業的基礎設施提供幫助,具體包括Pinterest、SoundCloud、Strava、StumbleUpon以及其它眾多公司。
今天,我們很高興地宣布我們將Finagle推向大眾的愿景已經邁出了重要的一步。linkerd已經迎來其0.1.0版本,而我們亦以 Apache License v2為基礎對其進行了開源。
linkerd是我們面向微服務的開源RPC代理。它直接立足于Finagle構建而成,設計目標在于幫助用戶簡化微服務架構下的運維。這些多年積累下來的寶貴經驗能夠讓我們輕松實現自包含、最低依賴性并確保將對現有應用程序的調整幅度控制在最低水平。
如果大家正在著手構建一套微服務方案,那么肯定需要發揮Finagle的各項優勢——包括智能化、自適應負載均衡、服務發現抽象化以及內部業務流量路由等等。大家可以利用linkerd將這些功能添加進入,而無需對應用程序代碼做出任何變更。另外,linkerd還提供一套漂亮的儀表板!
linkerd目前尚未徹底完工,不過遵循“早發布、頻發布”的原則,我們認為現在已經應該將其早期版本交付給大家。
因此,如果大家對此抱有興趣,那么不妨首先訪問linkerd.io網站獲取說明文檔及進行下載。另外,如果大家樂于為其做出貢獻,也可以直接前往linkerd GitHub repo提交您的成果。我們強烈支持開源精神——而我們也樂于以此為核心建立起一整套社區。
(如果大家對這個名稱感到好奇,我們將linkerd理解為微服務的‘動態鏈接器’,即dynamic linker。正如操作系統中的動態鏈接器需要獲取庫名稱與函數以對該函數進行調用一樣,linkerd也需要獲取服務名稱與RPC端點,從而對該RPC加以執行——而且整個過程安全且可靠。)
我們未來還有著漫長的發展道路,并已經準備好了一份接下來需要被添加進linkerd的令人興奮的功能清單。歡迎大家加入我們這個開源大家庭。
—William、Oliver以及整個Buoyant團隊
原文鏈接:linkerd: 推ter-style Operability for Microservices
本文由用戶 BenedictRem 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!