<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                > 來源:http://www.infoq.com/cn/articles/analyse-mesos-part-02 在本系列的[第一篇文章](http://www.infoq.com/cn/articles/analyse-mesos-part-01)中,我簡單介紹了Apache Mesos的背景、架構,以及它在數據中心資源管理中的價值。本篇文章將深入剖析Mesos的技術細節和組件間的流程,以便大家更好地理解為什么Mesos是數據中心操作系統內核的重要候選者。文中所述的大部分技術細節都來自[Ben Hindman](https://twitter.com/benh)團隊2010年在加州大學伯克利分校時發表的[白皮書](http://mesos.berkeley.edu/mesos_tech_report.pdf)。 順便說一句,Hindman已經離開Twitter去了[Mesosphere](http://mesosphere.com/),著手建設并商業化以Mesos為核心的[數據中心操作系統](http://mesosphere.com/product/)。在此,我將重點放在提煉白皮書的主要觀點上,然后給出一些我對相關技術所產生的價值的思考。 ## Mesos流程 接著上一篇文章說。并結合前述的加州大學伯克利分校的白皮書以及[Apache Mesos網站](http://mesos.apache.org/documentation/latest/mesos-architecture/),開始我們的講述: ![](https://box.kancloud.cn/2015-07-31_55bb12aaf066b.jpg) 我們來研究下上圖的事件流程。上一篇談到,Slave是運行在物理或虛擬服務器上的Mesos守護進程,是Mesos集群的一部分。Framework由調度器(Scheduler)應用程序和任務執行器(Executor)組成,被注冊到Mesos以使用Mesos集群中的資源。 * Slave 1向Master匯報其空閑資源:4個CPU、4GB內存。然后,Master觸發分配策略模塊,得到的反饋是Framework 1要請求全部可用資源。 * Master向Framework 1發送資源邀約,描述了Slave 1上的可用資源。 * Framework的調度器(Scheduler)響應Master,需要在Slave上運行兩個任務,第一個任務分配資源,第二個任務分配資源。 * 最后,Master向Slave下發任務,分配適當的資源給Framework的任務執行器(Executor),接下來由執行器啟動這兩個任務(如圖中虛線框所示)。 此時,還有1個CPU和1GB的RAM尚未分配,因此分配模塊可以將這些資源供給Framework 2。 ## 資源分配 為了實現在同一組Slave節點集合上運行多任務這一目標,Mesos使用了隔離模塊, 該模塊使用了一些應用和進程隔離機制來運行這些任務。 不足為奇的是,雖然可以使用虛擬機隔離實現隔離模塊,但是Mesos當前模塊支持的是容器隔離。 Mesos早在2009年就用上了Linux的容器技術,如cgroups和Solaris Zone,時至今日這些仍然是默認的。 然而,Mesos社區增加了Docker作為運行任務的隔離機制。 不管使用哪種隔離模塊,為運行特定應用程序的任務,都需要將執行器全部打包,并在已經為該任務分配資源的Slave服務器上啟動。 當任務執行完畢后,容器會被“銷毀”,資源會被釋放,以便可以執行其他任務。 我們來更深入地研究一下資源邀約和分配策略,因為這對Mesos管理跨多個Framework和應用的資源,是不可或缺的。 我們前面提到資源邀約的概念,即由Master向注冊其上的Framework發送資源邀約。 每次資源邀約包含一份Slave節點上可用的CPU、RAM等資源的列表。 Master提供這些資源給它的Framework,是基于分配策略的。分配策略對所有的Framework普遍適用,同時適用于特定的Framework。 Framework可以拒絕資源邀約,如果它不滿足要求,若此,資源邀約隨即可以發給其他Framework。 由Mesos管理的應用程序通常運行短周期的任務,因此這樣可以快速釋放資源,緩解Framework的資源饑餓; Slave定期向Master報告其可用資源,以便Master能夠不斷產生新的資源邀約。 另外,還可以使用諸如此類的技術, 每個Fraamework過濾不滿足要求的資源邀約、Master主動廢除給定周期內一直沒有被接受的邀約。 分配策略有助于Mesos Master判斷是否應該把當前可用資源提供給特定的Framework,以及應該提供多少資源。 關于Mesos中使用資源分配以及可插拔的分配模塊,實現非常細粒度的資源共享,會單獨寫一篇文章。 言歸正傳,Mesos實現了公平共享和嚴格優先級(這兩個概念我會在資源分配那篇講)分配模塊, 確保大部分用例的最佳資源共享。已經實現的新分配模塊可以處理大部分之外的用例。 ## 集大成者 現在來回答談及Mesos時,“那又怎樣”的問題。 對于我來說,令人興奮的是Mesos集四大好處于一身(概述如下),正如我在前一篇文章中所述,我目測Mesos將為下一代數據中心的操作系統內核。 * 效率 - 這是最顯而易見的好處,也是Mesos社區和Mesosphere經常津津樂道的。 ![](https://box.kancloud.cn/2015-07-31_55bb12adee732.jpg) 上圖來自Mesosphere網站,描繪出Mesos為效率帶來的好處。如今,在大多數數據中心中,服務器的靜態分區是常態,即使使用最新的應用程序,如Hadoop。這時常令人擔憂的是,當不同的應用程序使用相同的節點時,調度相互沖突,可用資源互相爭搶。靜態分區本質上是低效的,因為經常會面臨,其中一個分區已經資源耗盡,而另一個分區的資源卻沒有得到充分利用,而且沒有什么簡單的方法能跨分區集群重新分配資源。使用Mesos資源管理器仲裁不同的調度器,我們將進入動態分區/彈性共享的模式,所有應用程序都可以使用節點的公共池,安全地、最大化地利用資源。 一個經常被引用的例子是Slave節點通常運行Hadoop作業,在Slave空閑階段,動態分配給他們運行批處理作業,反之亦然。 值得一提的是,這其中的某些環節可以通過虛擬化技術,如VMware vSphere的[分布式資源調度(DRS)](http://wordpress.redirectingat.com/?id=725X1342&site=varchitectthoughts.wordpress.com&xs=1&isjs=1&url=http%3A%2F%2Fwww.vmware.com%2Fproducts%2Fvsphere%2Ffeatures%2Fdrs-dpm&xguid=1d9204bd07663e5f9ea0dd30373503c1&xuuid=2fd1c0d399d172da1ffd0c4fecbff774&xsessid=e67353eeda490b34a26e2fb37a2d7517&xcreo=0&xed=0&sref=http%3A%2F%2Fcloudarchitectmusings.com%2F2015%2F03%2F26%2Fdigging-deeper-into-apache-mesos%2F&xtz=-480)來完成。 然而,Mesos具有更精細的粒度,因為Mesos在應用層而不是機器層分配資源,通過容器而不是整個虛擬機(VM)分配任務。 前者能夠為每個應用程序的特殊需求做考量,應用程序的調度器知道最有效地利用資源; 后者能夠更好地“裝箱”,運行一個任務,沒有必要實例化一整個虛擬機,其所需的進程和二進制文件足矣。 * 敏捷 - 與效率和利用率密切相關,這實際上是我認為最重要的好處。 往往,效率解決的是“如何花最少的錢最大化數據中心的資源”,而敏捷解決的是“如何快速用上手頭的資源。” 正如我和我的同事[Tyler Britten](https://twitter.com/vmtyler)經常指出,IT的存在是幫助企業賺錢和省錢的;那么如何通過技術幫助我們迅速創收,是我們要達到的重要指標。 這意味著要確保關鍵應用程序不能耗盡所需資源,因為我們無法為應用提供足夠的基礎設施,特別是在數據中心的其他地方都的資源是收費情況下。 * 可擴展性 - 為可擴展而設計,這是我真心欣賞Mesos架構的地方。 這一重要屬性使數據可以指數級增長、分布式應用可以水平擴展。 我們的發展已經遠遠超出了使用巨大的整體調度器或者限定群集節點數量為64的時代,足矣承載新形式的應用擴張。 Mesos可擴展設計的關鍵之處是采用兩級調度架構。 使用Framework代理任務的實際調度,Master可以用非常輕量級的代碼實現,更易于擴展集群發展的規模。 因為Master不必知道所支持的每種類型的應用程序背后復雜的調度邏輯。 此外,由于Master不必為每個任務做調度,因此不會成為容量的性能瓶頸,而這在為每個任務或者虛擬機做調度的整體調度器中經常發生。 ![](https://box.kancloud.cn/2015-07-31_55bb125b915a3.jpg) * 模塊化 - 對我來說,預測任何開源技術的健康發展,很大程度上取決于圍繞該項目的生態系統。 我認為Mesos項目前景很好,因為其設計具有包容性,可以將功能插件化,比如分配策略、隔離機制和Framework。將容器技術,比如Docker和Rocket插件化的好處是顯而易見。但是我想在此強調的是圍繞Framework建設的生態系統。將任務調度委托給Framework應用程序,以及采用插件架構,通過Mesos這樣的設計,社區創造了能夠讓Mesos問鼎數據中心資源管理的生態系統。因為每接入一種新的Framework,Master無需為此編碼,Slave模塊可以復用,使得在Mesos所支持的寬泛領域中,業務迅速增長。相反,開發者可以專注于他們的應用和Framework的選擇。 當前而且還在不斷地增長著的Mesos Framework列表參見[此處](http://mesos.apache.org/documentation/latest/mesos-frameworks/)以及下圖: ![](https://box.kancloud.cn/2015-07-31_55bb12e57fbf3.png) ## 總結 在接下來的文章中,我將更深入到資源分配模塊,并解釋如何在Mesos棧的各級上實現容錯。 同時,我很期待讀者的反饋,特別是關于如果我打標的地方,如果你發現哪里不對,請反饋給我。 我也會在[Twitter](https://twitter.com/hui_kenneth)響應你的反饋,請關注 @hui_kenneth。 下一篇是關于Mesos的持久性存儲和容錯的。 **查看英文原文:**?[DIGGING DEEPER INTO APACHE MESOS](http://cloudarchitectmusings.com/2015/03/26/digging-deeper-into-apache-mesos/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看