国产精品奶水无码视频免费|激情五月天深爱网|精品国产女主播一区在线观看|国产黄网一区二区

日均萬億事件:Netflix怎么做實時流處理?

2018-09-29 18:05:59 來源: 微信公眾號-AI前線 熱度:


 
Keystone 流式處理平臺是 Netflix 的數(shù)據(jù)骨干,是數(shù)據(jù)驅動基礎設施的重要組成部分。Keystone 平臺主要提供兩種服務:數(shù)據(jù)管道和流式處理即服務(SPaaS)。數(shù)據(jù)管道由流式路由服務和 Kafka 消息服務組成,負責近乎實時地生成、收集、處理、聚合和移動微服務產(chǎn)生的事件。流式處理即服務讓用戶能夠構建和運行自定義的流式處理托管應用程序,用戶可以專注于應用程序的業(yè)務邏輯,而平臺負責提供伸縮、運營和和領域專業(yè)知識。

單個流式作業(yè)
 
通過平臺管理這些作業(yè):
 
 
流式處理的挑戰(zhàn)
1. 伸縮
Netflix 為來自 190 多個國家的 1.3 億用戶提供服務。流式處理平臺每天處理數(shù)萬億個事件和 PB 級別的數(shù)據(jù),以支持日常的業(yè)務需求。隨著用戶數(shù)量的持續(xù)增長,整個平臺需要進行伸縮。
 
2. 多樣化的用例
Keystone 路由服務:這個服務負責根據(jù)用戶的配置將事件路由到托管接收器上。每個傳遞線路都通過并行流式處理作業(yè)來實現(xiàn)。用戶可以定義可選的過濾器或投影聚合。事件最終被傳遞給存儲接收器,便于后續(xù)的批處理或流式處理(這些處理實現(xiàn)了至少一次語義)。用戶可以在延遲和重復處理之間做出權衡。
 
流式處理即服務:SPaaS 平臺只在生產(chǎn)環(huán)境中運行了大約一年時間,但我們已經(jīng)遇到了各種各樣的需求。以下是一些常見的問題和權衡。
 
作業(yè)狀態(tài):從完全無狀態(tài)并行處理到需要數(shù)十 TB 本地狀態(tài)存儲的作業(yè)。
作業(yè)復雜性:從將所有 operator 鏈接在一起的并行作業(yè),到具有多個 shuffle 階段和復雜會話邏輯的復雜作業(yè) DAG。
 
窗口 / 會話:窗口大小從幾秒鐘(即捕獲事務的開始 / 結束事件)到數(shù)小時的自定義會話窗口。
 
流量模式:不同用例的流量模式存在很大差異。它們可能是突發(fā)的,也可能保持在 GB/ 秒級別不變。
 
故障恢復:有些用例需要秒級的低故障恢復延遲,當作業(yè)持有很大的狀態(tài)并涉及 shuffle 時,就變得相當具有挑戰(zhàn)性。
 
回填(backfill)和回放(rewind):某些作業(yè)需要從批處理數(shù)據(jù)源重放數(shù)據(jù)或從先前的檢查點回放數(shù)據(jù)。
 
資源爭用:作業(yè)可能會在任何物理資源上產(chǎn)生瓶頸:CPU、網(wǎng)絡帶寬或內(nèi)存等。用戶依賴平臺提供的用于進行性能調(diào)整的見解和指導。
 
重復與延遲:應用程序在重復與延遲方面可能有不同的權衡偏好。
 
事件排序:大多數(shù)用例不依賴嚴格的排序,但有些確實會依賴排序。
 
傳遞和處理語義:某些用例允許管道中丟失一些事件,而其他用例可能要求更高的持久性保證。某些有狀態(tài)的流式作業(yè)期望具備恰好一次處理保證,計算狀態(tài)需要始終保持一致。
 
用戶受眾:我們的用戶群十分廣泛,從技術嫻熟的分布式系統(tǒng)工程師到業(yè)務分析師,有些團隊選擇基于我們的平臺產(chǎn)品構建特定領域的平臺服務。
 
3. 多租戶
Keystone 支持數(shù)千個流式作業(yè),從數(shù)據(jù)傳輸、數(shù)據(jù)分析,一直到支持微服務架構模式。因為流式作業(yè)的多樣性,為了向每個用戶提供有意義的服務級別保證,基礎設施需要提供運行時和運營隔離,同時還要最小化共享平臺開銷。
 
4. 彈性
盡管大多數(shù)流都具有固定的流量模式,我們?nèi)匀恍枰屜到y(tǒng)能夠應對突發(fā)情況(流行的節(jié)目上線或意外故障引起的流量爆發(fā)),而且能夠自動適應并對這些情況做出響應。
 
5. 云原生彈性
Netflix 的微服務完全是在云端運行的。云具有彈性、持續(xù)變化、更高的故障率等特點,因此我們需要讓系統(tǒng)能夠監(jiān)控、檢測和容忍故障,包括網(wǎng)絡不穩(wěn)定、實例故障、區(qū)域故障、集群故障、服務間擁塞或回壓、區(qū)域災難故障等。
 
6. 運營開銷
我們的平臺目前為數(shù)千個路由作業(yè)和流式應用程序提供服務。如果依靠平臺團隊手動管理所有流,成本會很高。因此,應該由用戶負責聲明作業(yè)的生命周期,同時基礎設施應該盡可能自動化。
 
7. 敏捷性
我們希望能夠進行快速的開發(fā)和部署,每天可以進行多次部署。我們也希望能夠保持用戶使用平臺的敏捷性。
 
平臺思維與設計原則
1. 可實施性
這個平臺的主要目標之一是讓其他團隊能夠專注于業(yè)務邏輯,讓流式處理作業(yè)的實驗、實現(xiàn)和運營變得更容易。通過平臺將“難啃的硬骨頭”抽離出來,消除用戶的復雜性,這將極大提升團隊的敏捷性并促進產(chǎn)品的創(chuàng)新。我們努力讓用戶能夠:
 
快速發(fā)現(xiàn)數(shù)據(jù)和開展試驗,通過數(shù)據(jù)驅動的創(chuàng)新來推動產(chǎn)品的發(fā)展;快速的流式處理解決方案原型設計;充滿信心地進行服務的生產(chǎn)和運營;深入了解性能、成本、作業(yè)生命周期狀態(tài)等,以便能夠做出明智的決策;進行自助服務。
 
2. 構建塊
為了能夠讓用戶專注于業(yè)務邏輯而不必擔心分布式系統(tǒng)的復雜性或某些預先存在的解決方案的一般性細節(jié),我們需要為用戶提供一組可以輕松接入到流式作業(yè) DAG 的可組合 operator。
 
此外,流式作業(yè)本身也可以成為其他下游服務的構建塊。我們與一些合作伙伴團隊合作,構建“托管數(shù)據(jù)集”和其他特定領域的平臺。
 
我們還努力通過利用其他構建模塊(如容器運行時服務、平臺動態(tài)配置、通用注入框架等)與 Netflix 軟件生態(tài)系統(tǒng)深度集成。這不僅有助于我們基于其他現(xiàn)有解決方案構建出新的服務,還讓我們的用戶更加熟悉開發(fā)和運營環(huán)境。
 
3. 可調(diào)整的權衡
任何一個復雜的分布式系統(tǒng)本身都有一定的局限性,因此在設計這種系統(tǒng)時需要考慮到各種權衡,如延遲與重復、一致性與可用性、嚴格排序與隨機排序等。某些用例還可能涉及各種權衡組合,所以平臺必須提供調(diào)整入口,為個人用戶提供定制的可能性,讓他們可以聲明對系統(tǒng)的需求。
 
4. 故障是頭等公民
在大規(guī)模分布式系統(tǒng)中,故障是一種常態(tài),在云環(huán)境中就更是如此。任何設計合理的云原生系統(tǒng)都應該將故障視為一等公民。以下是影響我們設計的一些重要方面:
 
假設網(wǎng)絡是不可靠的;信任底層運行時基礎設施,但需要自動修復能力;實現(xiàn)多租戶的作業(yè)級別隔離;出現(xiàn)故障時減少影響范圍;出現(xiàn)組件狀態(tài)漂移或發(fā)生災難故障時能夠進行自動調(diào)節(jié);正確處理和傳播回壓。
 
5. 關注點分離
在用戶和平臺之間:用戶應該能夠通過平臺 UI 或 API 聲明“目標狀態(tài)”。目標狀態(tài)被保存在單個事實源當中,應該由平臺作業(yè)流程負責處理從“當前狀態(tài)”到“目標狀態(tài)”的變化。
在控制平面和數(shù)據(jù)平面之間:控制平面負責作業(yè)流程編排和協(xié)調(diào),數(shù)據(jù)平面負擔處理繁重的任務,以確保一切處在目標狀態(tài)內(nèi)。
 
在不同的子組件之間:每個組件負責自己的作業(yè)和狀態(tài)。每個組件的生命周期都是獨立的。運行時基礎設施:流式處理作業(yè)部署在開源的 Netflix Titus Container 運行時服務上,該服務提供配置、調(diào)度、資源級別的隔離(CPU、網(wǎng)絡、內(nèi)存)、高級網(wǎng)絡等。
 
我們的方法考慮到上述的挑戰(zhàn)和設計原則,我們幾乎完成了一個聲明式的調(diào)和架構,用以實現(xiàn)自助服務平臺。這個架構允許用戶通過 UI 聲明所需的作業(yè)屬性,平臺將編排和協(xié)調(diào)子服務,以確保盡快達到目標狀態(tài)。
 
以下部分介紹了平臺的架構和平臺設計的各個方面
 
1. 聲明式調(diào)和
 
聲明式調(diào)和協(xié)議被用在整個架構棧上,從控制平面到數(shù)據(jù)平面。從邏輯上講,利用這個協(xié)議的目的是將用戶聲明的目標狀態(tài)的單個副本保存為持久的事實來源,其他服務基于這些事實來源進行調(diào)和。當出現(xiàn)狀態(tài)沖突時,不管是臨時故障導致還是正常的用戶觸發(fā)動作,這些事實來源都應該被視為權威,其他所有版本的狀態(tài)應該被視為當前視圖。整個系統(tǒng)最終需要將事實來源作為調(diào)和目標。
 
事實來源存儲是一種持久的存儲,用于保存所有需要的狀態(tài)信息。我們目前使用的是 AWS RDS,它是整個系統(tǒng)的唯一事實來源。例如,如果 Kafka 集群因為 ZooKeeper 狀態(tài)損壞而出現(xiàn)故障,我們可以根據(jù)事實來源重新創(chuàng)建整個集群。相同的原則也適用于流式處理層,這使得持續(xù)自我修復和自動化運營成為可能。
 
這個協(xié)議的另一個好處是操作的冪等性。這意味著從用戶傳給控制平面再傳給作業(yè)集群的控制指令和不可避免的故障條件不會造成長時間的對立面效應。這些服務最終會自行調(diào)和,同時也帶來了運營的敏捷性。
 
2. 部署編排
控制平面通過與 Netflix 內(nèi)部的持續(xù)部署引擎 Spinnaker 發(fā)生交互來編排作業(yè)流程。Spinnaker 對 Titus 容器運行時集成進行了抽象,控制平面可以以不同的權衡方式來協(xié)調(diào)部署。
 
 
Flink 集群由作業(yè)管理器和任務管理器組成。我們通過為每個作業(yè)創(chuàng)建獨立的 Flink 集群來實現(xiàn)完整的作業(yè)隔離。唯一的共享服務是用于達成共識協(xié)調(diào)的 ZooKeeper 和用于保存檢查點狀態(tài)的 S3 后端。
 
在重新部署期間,無狀態(tài)應用程序可以在延遲或重復處理之間做出權衡。對于有狀態(tài)應用程序,用戶可以選擇從檢查點 / 保存點恢復或從新狀態(tài)重新開始。
 
3. 自助工具
對于路由作業(yè):用戶可以通過自助服務請求生成事件(可聲明過濾器或投影聚合),然后將事件路由到托管接收器(如 Elasticsearch、Hive)或者讓下游實例進行實時的消費。
 

自助服務 UI 從用戶那里獲取輸入,并將其轉換為最終期望的系統(tǒng)狀態(tài)。我們因此可以構建一個能夠實現(xiàn)目標狀態(tài)的編排層,還可以抽離出用戶可能不關心的某些信息(例如要發(fā)送到哪個 Kafka 集群或某些容器的配置),并在必要的時候提供靈活性。
 
 
對于自定義 SPaaS 作業(yè),我們提供了命令行工具用于生成 Flink 代碼模板存儲庫和 CI 集成等。在用戶簽入代碼后,CI 自動化流程將開始構建 Docker 鏡像,并通過平臺后端注冊鏡像,用戶可以執(zhí)行部署和其他操作。
 
 
4. 流式處理引擎
我們目前正在基于 Apache Flink 為 Keystone 的分析用例構建一個生態(tài)系統(tǒng)。我們計劃集成和擴展 Mantis 流式處理引擎。
 
5. 連接器、托管 operator 和應用程序抽象
為了幫助我們的用戶提高開發(fā)敏捷性和創(chuàng)新,我們提供了全方位的抽象,包括托管連接器、讓用戶可以接入處理 DAG 的 operator,以及與各種平臺服務的集成。
 
我們?yōu)?Kafka、Elasticsearch、Hive 等提供了托管連接器。這些連接器抽象出了自定義連線格式、序列化、批處理 / 限定行為以及接入處理 DAG 的便利性。我們還提供動態(tài)數(shù)據(jù)源 / 接收器 operator,用戶可以在不同的數(shù)據(jù)源或接收器之間切換,而無需重新構建。
 
 
其他托管的 operator 還包括過濾器、投影聚合和易于理解的數(shù)據(jù)衛(wèi)生自定義 DSL。我們將繼續(xù)與用戶合作開發(fā)更多的 operator,并讓更多團隊可以使用這些 operator。
 
6. 配置和不可變部署
多租戶配置管理有一定的挑戰(zhàn)性。我們希望提供動態(tài)且易于管理的配置體驗(用戶無需重新提交和構建代碼)。
 
 
托管的配置和用戶定義配置都保存在應用程序的屬性文件中,這些配置可以被環(huán)境變量覆蓋,也可以通過自助 UI 覆蓋這些屬性。這種方法適用于我們的調(diào)和架構,用戶通過 UI 聲明想要的配置并部署編排,確保運行時的最終一致性。
 
7. 自我恢復
在分布式系統(tǒng)中,故障是不可避免的。我們完全相信故障會在任何時候發(fā)生,所以我們的系統(tǒng)被設計成具有自我恢復能力,這樣就不必在半夜醒來處理事故。
 
從架構上看,平臺組件服務被隔離出來,以便在發(fā)生故障時減少影響范圍。調(diào)和架構還通過持續(xù)調(diào)和來確保系統(tǒng)級別的自我恢復能力。
 
單個作業(yè)遵循相同的隔離模式,以減少故障影響。但是,為了處理故障并從故障中恢復,每個托管流式作業(yè)都配有健康監(jiān)視器。健康監(jiān)視器是運行在 Flink 集群中的內(nèi)部組件,負責檢測故障情況并執(zhí)行自我修復:集群任務管理器漂移:當 Flink 容器資源視圖與容器運行時視圖不匹配時就會出現(xiàn)漂移,通過主動終止受影響的容器,可以自動糾正漂移。
 
暫停作業(yè)管理器首領:如果未能選舉出首領,集群就會進入無腦狀態(tài),此時需要對作業(yè)管理器執(zhí)行糾正措施。不穩(wěn)定的容器資源:如果某個任務管理器出現(xiàn)不穩(wěn)定的模式(如定期重啟 / 故障),它將被替換。網(wǎng)絡分區(qū):如果容器遇到網(wǎng)絡連接問題,它將自動終止。
 
8. 回填和回放
因為故障是不可避免的,所以有時候用戶可能需要回填或回放處理作業(yè)。
對于備份到數(shù)據(jù)倉庫中的源數(shù)據(jù),我們在平臺中構建了相應的功能,用來動態(tài)切換數(shù)據(jù)源而無需修改和重新構建代碼。這種方法有一定的局限性,建議將它應用在無狀態(tài)作業(yè)上。或者,用戶可以選擇回到之前自動保存的檢查點開始重新處理。
 
 
9. 監(jiān)控和警報
所有單個的流式作業(yè)都配有個性化的監(jiān)控和警報儀表盤。這有助于平臺 / 基礎設施團隊和應用程序團隊監(jiān)控和診斷問題。
 
 
10. 可靠性和測試
隨著平臺和底層基礎設施服務不斷創(chuàng)新,提供越來越多的新功能和改進,快速采用這些變化的壓力是自下而上的(架構層面)。
 
隨著應用程序的開發(fā)和發(fā)布,可靠性的壓力是自上而下的。于是,壓力在中間相遇了。為了獲得信任,我們需要讓平臺和用戶能夠有效地測試整個技術棧。我們堅持為所有用戶進行單元測試、集成測試、金絲雀運營。我們正在這方面取得進展,但仍然有很多問題需要解決。
 
現(xiàn)在和未來在過去的一年半中,Keystone 流式處理平臺每天可以處理萬億個事件。我們的合作伙伴團隊已經(jīng)用它構建各種流式分析應用。此外,我們也看到了一些建立在 Keystone 之上的更高級別的平臺。
 
但是,我們的故事并未就此結束。要實現(xiàn)我們的平臺愿景,還有很長的路要走。以下是我們正在研究的一些有趣的事項:
 
模式(schema)
讓平臺交互變得更靈活的服務層
提供流式 SQL 和其他更高級別的抽象,為不同的用戶提供價值
分析和機器學習用例
微服務事件溯源架構模式

責任編輯:安旭環(huán)

相關推薦

淺析Netflix的成功之道

自從7月初北京廣電局發(fā)文叫停視頻網(wǎng)站的互聯(lián)電視平臺和互聯(lián)網(wǎng)電視機頂盒以來,業(yè)界保持沉默但是并沒有停下發(fā)展互聯(lián)網(wǎng)電視的步伐?;ヂ?lián)網(wǎng)電視政策正在明顯向牌照方和廣電系國字號企業(yè)傾斜。無論如何,中國的OTTTV已經(jīng)處于爆發(fā)的前夜,這時候來看看美國的Netflix也許是個不錯的選擇。美國的互聯(lián)網(wǎng)電視服務OTTTV和中國的互聯(lián)網(wǎng)電視的始作俑者完全不同,美國最大的OTTTV服務提供商Netflix原本是一家DVD租賃公司,用快遞的方式給用戶遞送實物DVD碟片。后來開通了互聯(lián)網(wǎng)流媒體服務提供視頻,租賃費就變成了每月的收視費,到目前為止Netflix仍舊提供實物碟片租賃服務,但是已經(jīng)偏重于流媒體服務了。Netf

蘋果TV將徹底顛覆產(chǎn)業(yè)格局 Netflix或不復存在

北京時間12月16日消息,據(jù)國外媒體報道,蘋果10月4日正式對外發(fā)布了iPhone4S及其最重要的更新功能Siri,10月5日蘋果教父史蒂夫·喬布斯(SteveJobs)便離世。盡管Siri目前僅僅適用于iPhone4S,但據(jù)一位熟知AppleTV項目的消息人士透露,預計于明年發(fā)布的AppleTV也將整合Siri功能。如果消息成真,蘋果恐怕將顛覆電視產(chǎn)業(yè)的現(xiàn)有格局,業(yè)內(nèi)人士認為,AppleTV的出現(xiàn)將使得用戶終于可以擺脫布滿按鈕遙控器的約束,從此以后只需要對電視機說出自己的想法,電視便會自動做出回應。還記得喬布斯對傳紀作者沃爾特·艾薩克森(WalterIsaacson)說過的話嗎?喬布斯說他最

新Apple TV支持Netflix直接注冊、iTunes賬戶付費

今天凌晨,蘋果發(fā)布了新款機頂盒AppleTV。升級后的AppleTV允許用戶直接從該設備上注冊Netflix,使用iTunes賬戶支付該流服務訂閱費用。這是Netflix首次將其客戶計費業(yè)務交給第三方,也是該公司及其CEOReedHastings邁出的重要一步。而對初次使用Netflix的用戶來說,這是一個好消息,大大簡化了注冊過程。據(jù)路透社昨天報道,Hastings最近在尋求與付費電視運營商合作,希望能捆綁其服務,通過有線電視運營商的機頂盒提供電影電視節(jié)目。據(jù)知情人士透露,對Netflix來說,AppleTV模式是一種很合理的搭配,Netflix很樂意將其計費業(yè)務交給有線電視運營商,同時繼續(xù)

Netflix推iOS應用升級

北京時間5月31日消息,據(jù)外國媒體報道稱,考慮到愈來愈多的用戶開始使用移動設備觀看視頻,Netflix今日推出iPad及iPhone的應用升級,以提升其視頻播放器性能,增加更多的視頻控件。在Netflix推出的應用更新中,包括更大化更明顯的視頻控件按鈕和更加精確的進度顯示條,從而讓用戶可以輕松得選擇電影或TV節(jié)目的播放進度。此外還有一項更新即是簡化了音頻選項設置和字幕選擇,同時在播放器中新增Facebook分享按鈕,用戶可以隨時分享觀看的電影或TV。其中新增設置選項如“僅在Wi-Fi連接下重播”可以節(jié)省用戶的3G網(wǎng)絡數(shù)據(jù)流量。Netflix稱這些應用升級很快也將推廣至其Android應用,期望