Netflix的開源文化與技術

jopen 9年前發布 | 32K 次閱讀 Netflix

 

在之前的新聞《Netflix企業文化與架構設計》一文中我們介紹了Netflix高擴展的企業文化與架構,而作為一家在線影片租賃提供商Netflix 之所以能夠在如此大量的用戶、海量的數據、復雜的拓撲結構下取得成功,離不開其背后的開源文化與技術。Netflix利用開源或者自己開發的技術,讓公司能夠在分布于全世界50多個國家的服務器上進行持續地構建和集成;能夠對用戶所產生的海量行為數據進行分析挖掘從而更好地推薦和改善自身服務;同時能夠通過性能剖析和安全審計保護用戶的隱私和數據,下面就讓我們來盤點一下Netflix所使用或貢獻的 開源技術

大數據

數據是無價的,為了向客戶提供極致的服務,Netflix擁有一套完善的大數據技術生態系統用于用戶數據的分析和挖掘。Netflix不僅使用 Hadoop、Hive、Pig、Parquet、Presto以及Spark等被廣泛采用的開源技術,同時還開發并貢獻了一些其他的工具和服務。

  • Genie :專為Hadoop生態系統定制的一組REST-ful服務集合,用于管理作業和資源,它有兩個關鍵的服務:Execution
    Service和Configuration Serice。前者提供了REST-ful
    API,用于提交和管理Hadoop、Hive以及Pig作業;后者是一個Hadoop資源的有效儲存庫,處理元數據的連接以及運行資源上的作業。
  • Inviso :對Hadoop作業和集群的性能進行詳細而深入的剖析。
  • Lipstick :以一種清晰且可視化的方式展示Pig作業的工作流。
  • Aegisthus :是一個能夠讀取Cassandra
    SSTable的map/reduce程序,Netflix的大數據平臺每天都會利用該工具從Cassandra中讀取數據進行分析。

重要通知:接下來InfoQ將會選擇性地將部分優秀內容首發在微信公眾號中,歡迎關注InfoQ微信公眾號第一時間閱讀精品內容。

構建和交付工具

  • Nebula :Netflix開源的Gradle插件集合,可以讓開發者更容易地使用Gradle構建、測試和部署項目。
  • Aminator :EBS AMI創建工具,支持CentOS/RedHat Linux鏡像,利用該工具創建的鏡像能夠運行在EC2實例上。
  • Asgard :云部署和管理工具,該工具與Aminator配合使用,能夠將打包后的AMI從開發者的桌面部署到AWS上。

通用的運行時服務和類庫

Netflix的大部分服務都是以云平臺為基礎和技術棧,云平臺由云服務、應用程序類庫和應用容器組成,每一部分Netflix都有相應的技術保障。

  • Eureka :Netflix的云平臺服務發現技術。
  • Archaius :分布式配置工具。
  • Ribbon :彈性且智能化的進程處理和服務通信。
  • Hystrix :提供單一服務調用所不具備的可靠性,提供運行時的延遲隔離和容錯。
  • KaryonGovernator :JVM容器服務。
  • Prana sidecar :提供實例內代理,支持非JVM運行時。
  • Zuul :提供云部署周邊的動態路由、監控、安全和彈性擴展等服務。
  • Fenzo :為云本地框架提供了更為高級的調度和資源管理功能,為裝箱和集群自動擴展提供了插件實現,用戶能通過自定義的插件實現自定義的調度優化。

數據持久化

面對每天數以萬億的行為數據,沒有哪一種技術能夠獨自滿足所有的用例,所有潛在的需求,為此Netflix不僅使用了Memcached和 Redis等非持久化內存存儲方案,還使用了可搜索的數據存儲Elastic,以及高可用的數據存儲Cassandra和MySQL。此外,Netflix還創建了一些其他的輔助工具:

  • RaigadPriam :輔助Elastic和Cassandra集群的部署、管理、備份和恢復。
  • EVCacheDynomite :用于大規模地使用Memcached和Redis。
  • AstyanaxDyno 客戶端類庫:便于更好地使用云端數據庫。

分析、可靠性和性能

在任何一個公司的運營中遙測和指標都具有至關重要的作用,高效的性能指令能夠讓工程師快速地從大量指標中找出自己所需要的那部分從而更快更有效地做出關鍵決策。除此之外,成本管理和資源在云端使用情況的可視化服務也不可或缺,Netflix在這些方面使用的工具包括:

  • Atlas :時間序列遙測平臺,每分鐘接收超過10億的指標
  • Edda :跟蹤云端變化的服務
  • Spectator 類庫:讓Java應用程序代碼能夠更好地與Atlas集成
  • Vector :以最小的代價獲得高分辨率主機級指標
  • Ice :監控當前成本和云使用趨勢,讓工程師能夠更好地掌控自己的應用程序在當前環境中的狀態
  • Simian Army :Netflix實例的隨機故障測試,用于驗證可靠性

安全

對任意類型、任意規模的公司來說安全都是一件越來越重要的事情,Netflix為開源社區貢獻了大量的安全工具和解決方案,主要分為兩類,一類是能夠讓安全團隊更有效地保護大型動態環境的運維工具和系統;一類是為現代分布式系統提供嚴格安全服務的安全基礎設施組件。

  • Security Monkey :用于檢測和保護大規模的AWS環境
  • Scumblr :利用因特網進行針對性的搜索定位特定的安全問題并調查
  • MSL :一個可擴展的、靈活的安全消息協議,可解決大量安全通信用例和需求

用戶界面

世界各地的Netflix會員會通過TV、手機和桌面等各式各樣的設備觀看視頻,為此Netflix使用了Node.js、React和 RxJS等先進的UI技術構建富客戶端應用程序。Netflix通過數據驅動的A/B測試實驗新的理念,理解每一個功能特性的價值,從而持續地提升產品。此外,Netflix還使用了以下工具。

  • Falcor :允許應用程序把所有遠端的數據源用一個單獨的JSON Graph來表示,提高了數據抓取效率
  • Restify :一個基于Nodejs的REST應用框架,支持服務器端和客戶端
  • RxJS :JavaScript的Reactive擴展庫
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!