亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

每周運行30萬個容器實例 - Netflix 的容器化實踐

發布時間:2020-05-10 20:22:28 來源:網絡 閱讀:2354 作者:JFrog中國 欄目:建站服務器

Netflix 是誰?



Netflix 是歐美地區最大的網絡視頻提供商,超過了 Youtube。全球每天有超過190個國家,一億多會員在 Netflix 上觀看1.2億小時的電影,電視劇和紀錄片等等。Netflix 也制作了像紙牌屋這樣廣受歡迎的電視劇。


為了應對巨大的并發流量,Netflix 用了7年時間,網站架構從傳統巨石應用演進成為業界超前的微服務架構。目前,Netflix 的云平臺上運行了500個微服務,每天會有1000次的變更部署到線上環境。線上環境部署在亞馬遜3個 Region,9個可用區,為全球用戶提供穩定的網絡視頻服務。


每周運行30萬個容器實例 - Netflix 的容器化實踐


Netflix 為什么使用容器技術?


每周運行30萬個容器實例 - Netflix 的容器化實踐


Netflix 在亞馬遜 EC2 上已經運行了上萬臺虛擬機,他們的虛擬機集群非常的穩定,實現了云原生應用的轉型而且非常易于擴展,為什么還需要用容器技術?


每周運行30萬個容器實例 - Netflix 的容器化實踐


使用容器技術提升了 Netflix 的創新速度。筆者之前的文章也提到,在 Netflix 研發團隊的文化里,創新是排名第一位,其次是產品的穩定性。所以 Netflix 對于應用的容錯性做的非常強,這樣即使創新的應用失敗,也可以將失敗的范圍控制到最小,開發者也就更敢于做創新的嘗試。Chaos Monkey 就是 Netflix 團隊發布的專門做災難性測試的工具。


使用容器可以更好的管理應用以及應用的依賴,將所有內容都打包在容器里易于管理和發布。當線上容器出現了問題,可以隨時 Pull 下來到本地進行調試,讓開發者更快的重現問題。


使用容器的 UseCase


1. 視頻媒體轉碼

之前使用虛擬機進行大量視頻流媒體的轉碼需要一個月的時間,使用容器進行高并發轉碼,只需要一周。


2. 統一代碼構建,打包和測試系統

之前 Netflix 團隊發布包之后,只會跑包本身的測試用例,并不會做上游包(UpStream)的集成測試,所以經常發布包會破壞上游包的測試,上游開發者需要反復調試,修復問題。使用容器之后,Netflix 會在容器里跑上游包的測試用例,如果上游測試用例失敗,這次包發布也會失敗,這叫做 Fail Fast。


3. 開發者無需關心環境

例如 NodeJs 的開發者,他們完全不關心運行的系統是什么,也不想關心,所以使用容器可以讓這些開發者專注于開發上,減少 APP 運維的成本。


Netflix 的容器管理平臺 Titus


Netflix 最開始并沒有使用 Docker,而是使用 CGruop,之后使用了 Mesos 進行容器的管理,目前推出了自行研發的 Titus 容器管理平臺,實現容器的管理。


市場上已有了很多容器管理平臺,為什么需要自行研發容器管理平臺?由于市面上的平臺多數關注于數據中心的建設,支持混合云的方案,且目前市面上的方案沒有能夠滿足 Netflix 如此大規模的容器使用情況。


Titus 的最初是用來管理 Netflix 內部大量的 Batch 任務,主要包括視頻轉碼,加水印,生成每日 CDN 網絡流量的報表。 這些任務有些共同的特點,耗時較長,屬于計算資源密集型的任務,并且不依賴于平臺,比較適合用容器來運行。


后來 Titus 開始接管 Services,Services 的要求比 Batch 任務要高很多,需要實時擴容,且需要不間斷的運行,服務有更多的狀態管理需求,難以升級等等。對此,Titus 做了很多容器管理的改進。


網絡管理


每周運行30萬個容器實例 - Netflix 的容器化實踐


在 VPC 網絡里使用 Docker。通過 Titus 的執行器,可以創建一個 Namespace,創建并啟動一個 Pod root container,類似于 K8S 的 Pods。隨后創建 Veth,路由的規則,iptables 等等。


Metadata Proxy


Metadata Proxy 是 Titus 基于亞馬遜的 Metadata Service 實現的統一網絡管理模塊。它解決的是容器的安全問題,它統一管理的容器的 “whoami” 的信息,例如容器的 IP,權限,容器的宿主機 ID,域名等等,容器本身無法知道宿主機的更多信息,從而確保容器的網絡安全性。將 VPC 網絡和 Metedata Proxy 合起來,就是下面的這張圖:


每周運行30萬個容器實例 - Netflix 的容器化實踐


和 Spinnaker CI/CD 集成


Titus 和 Netflix 現有的CI/CD 工具 Spinnaker 進行了集成。在創建 Spinnaker 的集群時,Spinnaker 提供了 AWS 虛擬機集群的創建,和 Titus 容器集群的創建。


每周運行30萬個容器實例 - Netflix 的容器化實踐


當某個容器 Push 到了 Artifactory Docker 注冊中心,這個 tag 會實時的顯示在 Spinnaker 部署的任務里供用戶選擇 Docker 鏡像的版本。


每周運行30萬個容器實例 - Netflix 的容器化實踐


Titus 也集成了 Chaos Monkey,在 Chaos Monkey里執行線上環境破壞性測試的時候,選擇 Titus,就會隨機銷毀在線上運行的容器。


每周運行30萬個容器實例 - Netflix 的容器化實踐


Fenzo 任務調度框架


Netflix 開源了任務調度框架 Fenso,它是一個可擴展的任務調度框架,用于管理所有調度任務的生命周期。


每周運行30萬個容器實例 - Netflix 的容器化實踐


你只要給 Fenzo 一個任務列表,并且給 Fenzo 一堆可以的計算資源,Fenzo 就會自行決策,進行任務的執行。如果你給的計算資源太少,不足以執行所有任務,Fenzo 會告訴你需要多少計算資源,如何擴容。


Titus 和 Fenzo 集成


每周運行30萬個容器實例 - Netflix 的容器化實踐


為了實現計算資源利用率的最大化,Netflix 的生產環境和 Batch 任務會共用容器資源。某些 Batch 任務會占用大量的計算資源,導致在生產環境的 APP 需要擴容時,得等待 Batch 任務執行完成,才能獲取資源。


為了解決這個問題,Fenzo 將容器分為核心層和 Flex 層,核心層的應用會保障擴容的能力。Flex 層會將低優先級的任務進行排隊執行。


Titus 的現狀


之前 Titus 是和 Netflix 內部的 Mesos 的平臺進行容器管理,目前已使用 ECS 替換了 Mesos 作為容器編排的平臺。 


每周運行30萬個容器實例 - Netflix 的容器化實踐


Titus 支持了 OutBound 和 Inbound 的請求處理,從 OutBound 可以實現 ECS 里容器的啟動和停止。如果容器停止,CloudWatch 會監測到 ECS 的變化,并且通知 Titus 里任務的狀態變化。


未來 Titus 將會專注于基于:

1. 服務的自動擴容,以及跨數據中心的容器負載均衡

2. 實現核心層任務的 SLA 保障,當核心層的計算資源達到上限時,會將 Flex 層的資源搶占過來,保障核心層任務的 SLA。

3. 更好的支持動態擴容。



作者:王青

目前任職 JFrog 中國首席架構師,之前在 IBM,HPE,愛奇藝,新浪,VIPKID 等公司做過研發和架構,是有十多年開發經驗的互聯網老兵,專注于軟件生命周期管理,微服務架構,云原生應用,容器化等領域。

歡迎轉載,但轉載請注明作者與出處。謝謝!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙阴县| 云龙县| 永春县| 台东县| 平江县| 宁化县| 汤阴县| 南康市| 肥乡县| 桂阳县| 沭阳县| 萨迦县| 吉水县| 宾川县| 乌审旗| 巩义市| 合阳县| 塘沽区| 溧阳市| 广州市| 永胜县| 鄯善县| 大荔县| 屏东市| 青河县| 博湖县| 保德县| 靖宇县| 长治县| 太白县| 绥江县| 岳池县| 建始县| 屯留县| 曲水县| 曲阜市| 玉林市| 武夷山市| 芒康县| 沅陵县| 铜山县|