Netflix開源技術介紹[轉]

摘要數據庫

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做業的工做流。ide

  • Aegisthus:是一個可以讀取Cassandra
    SSTable的map/reduce程序,Netflix的大數據平臺天天都會利用該工具從Cassandra中讀取數據進行分析。工具

構建和交付工具oop

  • 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還建立了一些 其餘的輔助工具:

  • Raigad 和 Priam:輔助Elastic和Cassandra集羣的部署、管理、備份和恢復。

  • EVCache 和 Dynomite:用於大規模地使用Memcached和Redis。

  • Astyanax 和 Dyno 客戶端類庫:便於更好地使用雲端數據庫。

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

  • Atlas:時間序列遙測平臺,每分鐘接收超過10億的指標

  • Edda:跟蹤雲端變化的服務

  • Spectator類庫:讓Java應用程序代碼可以更好地與Atlas集成

  • Vector:以最小的代價得到高分辨率主機級指標

  • Ice:監控當前成本和雲使用趨勢,讓工程師可以更好地掌控本身的應用程序在當前環境中的狀態

  • Simian Army:Netflix實例的隨機故障測試,用於驗證可靠性

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

  • Security Monkey:用於檢測和保護大規模的AWS環境

  • Scumblr:利用因特網進行鍼對性的搜索定位特定的安全問題並調查

  • MSL:一個可擴展的、靈活的安全消息協議,可解決大量安全通訊用例和需求

用戶界面
Netflix使用了Node.js、React和RxJS等先進的 UI技術構建富客戶端應用程序。Netflix經過數據驅動的A/B測試實驗新的理念,理解每個功能特性的價值,從而持續地提高產品。此 外,Netflix還使用瞭如下工具。

  • Falcor:容許應用程序把全部遠端的數據源用一個單獨的JSON Graph來表示,提升了數據抓取效率

  • Restify:一個基於Nodejs的REST應用框架,支持服務器端和客戶端

  • RxJS:JavaScript的Reactive擴展庫

相關文章
相關標籤/搜索