【架構】linkerd:來自Twitter爲微服務而生的開源RPC解決方案

你們要如何以規模化方式運維微服務應用程序?實踐當中會出現哪些問題,咱們又該如何加以解決?在大規模與非預測性工做負載場景當中,咱們須要知足哪些條件才能運行一款大型微服務應用程序,而又可以確保沒必要受到功能發佈或者產品變動的影響?html

在圍繞微服務展開的探討當中,咱們發現幾乎不多有人可以切實回答上述問題。以Docker、Mesos、Kubernetes以及gRPC爲表明的各種新型技術成果的快速崛起使得咱們可以輕鬆創建小型新架構。然而,高流量生產性用例又該如何實現?根據咱們的推算,目前可以以規模化方式運行微服務,從而解決實際問題的企業數量仍然至關有限。安全

Twitter就是其中的典型表明。並且儘管其也經歷過公共服務中斷,但Twitter負責運維的是世界上規模最大的微服務應用之一,其中包含上百種服務、數以萬計的節點以及每項服務中的數百萬RPS。使人震驚的是,事實證實這樣的工做絕非易事。雖然不是不可能,但須要企業投入多年並充分運用自身聰明才智,從而令一切在實踐層面運做良好。架構

當Oliver和我前幾年離開Twitter公司時,咱們的目標是運用本身多年積累下的專業知識,將其轉化成可供全世界各組織機構使用的可行性資源。使人振奮的是,這些知識中已經有至關一部分以開源項目的面貌了,也就是Finagle項目——這是一套用於支撐Twitter微服務架構的高通量RPC庫。負載均衡

Finagle屬於Twitter的內部核心庫,負責管理不一樣服務間之通訊流程。事實上,Twitter公司的每一項在線服務都立足於Finagle構建而成,並且其支持着每秒發生的成百上千萬條RPC調用。除了Twitter以外,Finagle還爲多家企業的基礎設施提供幫助,具體包括Pinterest、SoundCloud、Strava、StumbleUpon以及其它衆多公司。運維

今天,咱們很高興地宣佈咱們將Finagle推向大衆的願景已經邁出了重要的一步。linkerd已經迎來其0.1.0版本,而咱們亦以Apache License v2爲基礎對其進行了開源。函數

linkerd是咱們面向微服務的開源RPC代理。它直接立足於Finagle構建而成,設計目標在於幫助用戶簡化微服務架構下的運維。這些多年積累下來的寶貴經驗可以讓咱們輕鬆實現自包含、最低依賴性並確保將對現有應用程序的調整幅度控制在最低水平。微服務

若是你們正在着手構建一套微服務方案,那麼確定須要發揮Finagle的各項優點——包括智能化、自適應負載均衡、服務發現抽象化以及內部業務流量路由等等。你們能夠利用linkerd將這些功能添加進入,而無需對應用程序代碼作出任何變動。另外,linkerd還提供一套漂亮的儀表板!網站

 

 

linkerd目前還沒有完全完工,不過遵循「早發佈、頻發佈」的原則,咱們認爲如今已經應該將其早期版本交付給你們。ui

所以,若是你們對此抱有興趣,那麼不妨首先訪問linkerd.io網站獲取說明文檔及進行下載。另外,若是你們樂於爲其作出貢獻,也能夠直接前往linkerd GitHub repo提交您的成果。咱們強烈支持開源精神——而咱們也樂於以此爲核心創建起一整套社區。操作系統

咱們將來還有着漫長的發展道路,並已經準備好了一份接下來須要被添加進linkerd的使人興奮的功能清單。歡迎你們加入咱們這個開源你們庭。

——William、Oliver以及整個Buoyant團隊

若是你們對這個名稱感到好奇,咱們將linkerd理解爲微服務的‘動態連接器’,即dynamic linker。正如操做系統中的動態連接器須要獲取庫名稱與函數以對該函數進行調用同樣,linkerd也須要獲取服務名稱與RPC端點,從而對該RPC加以執行——並且整個過程安全且可靠。

 

 

參考資料:

http://j.news.163.com/docs/28/2016022009/BG8MBR7J9001BR7K.html

http://www.tuicool.com/articles/RRFFJrq

相關文章
相關標籤/搜索