RASE分散式運算系統

來源:互聯網
上載者:User

1.引入

        ranking and selection engine(RASE)是一個特定的分散式運算架構,用於通過ranking and selection演算法進行的分布式simulation計算。

        通過一個例子簡單介紹一下RASE的作用,現在有1000名乒乓球運動員,我們需要從他們中選出一名實力較強的運動員代表國家去比賽。如何看誰的實力強呢?我們需要進行一些比賽,從比賽結果來看他們的實力情況。最笨的方法就是讓他們兩兩打比賽,最後找出勝場最多的。但是顯而易見,這樣是很費時費力的,我們可以一邊讓他們打比賽一邊將一些實力相對來說不強的人淘汰,這樣在較快的時間內就可以找到最終需要的那個人,並且在淘汰的時候使用機率論中的信賴區間理論,使得淘汰的情況是理論上可控制的。這就是ranking and
selection的基本思想。

        RASE需要輸入一些alternative(如運動員資料),一個simulation的演算法(如比賽的演算法)和一個PK演算法(如淘汰的演算法)。在系統運行時,讓這些alternative迴圈進行simulation計算,得到相應的計算資料(如選手得分),在比賽的同時,通過PK演算法將那些顯然實力比較差的alternative給PK掉,踢出總的alternative列表。這樣經過一段時間的運行,可以最終得到一個最優的alternative。

 

2.系統分析

         根據上面的描述,RASE系統需要至少兩個線程,一個線程進行simulation的計算,一個線程進行PK的計算,兩個線程並發,需要共用alternative的資料,這是一個簡單的模型。但是根據實際情況來看,這個系統的使用情境常常需要大量的simulation次數,需要啟動並執行時間用天來度量。這時就需要一些改進,因為simulation和simulation之間是可以同時進行的,就好像乒乓球比賽可以很多場比賽同時進行一樣,這樣就可以有多個線程同時進行simulation,也就是說simulation這個計算是可以橫向擴充的,當然PK的計算也是可以橫向擴充的(這個有一定的數學理論支援)。這樣原來的兩個線程變化成了現在的兩種線程,每種都可以進行多線程的橫向擴充。我們想利用起我們已有的儘可能多的機器來進行計算,這時就涉及到一個分布式的技術。

 

3.系統描述

         經過多次的設計與修改設計,最後完成了一個較好的分布式解決方案,下面就來描述一下這個系統的結構。

         系統由一個Master和多個Agent組成,Master由一台機器擔任,其餘的所有機器都各自有一個Agent。Master的主要功能是資料中心,向Agent分發alternative資料,從Agent擷取計算alternative的結果,對alternative進行PK,淘汰掉一部分的alternative。Agent的作用是從Master擷取alternative資料,進行simulation計算,將結果返回給Master。

         Master上的資料結構中首先是一個mainList數組,儲存著所有的alternative的原始參數以及simulation結果,然後是一個mainQueue和一個preQueue,這兩個隊列裡面儲存了mainList的索引資訊。Master上還有一個master線程和多個selector線程。Master在啟動的時候將所有mainLIst中所有的alternative放入mainQueue。通過master線程將mainQueue中的資料發送給Agent,通過master線程接受Agent的simulation結果,並放入preQueue。同時所有的selector線程從preQueue中擷取simulation結果,將結果加入mainList中對應的alternative中,並與mainList中其他還存活的alternative資料進行PK,如果能夠存活就將其放到mainQueue中,等待下一次的simulation計算。

         Agent上的資料結構是由AltQueue和SampleQueue兩個隊列組成,AltQueue儲存著從Master發送來的alternative資料,SampleQueue儲存著simulation結果。Agent上有一個agent線程和多個slave線程。Agent在啟動的時候通過agent線程從Master擷取alternative資料,將資料放入AltQueue,同時通過agent線程將simulation的結果傳給Master,在此同時Slave線程從altQueue擷取資料,進行simulation計算,然後將結果放入SampleQueue。

         關於網路資料通訊,Master的master進程會開啟多個連接埠的service,由Agent的agent進行進行資料拉去和計算結果推送。為了保證各Agent之間的負載平衡,在agent拉取資料量上是這樣實現的,設定一個閾值,每過一個時間段進行一次檢測,向Master拉取(閾值-當前值)數量的資料。這樣能者多勞,使得計算負載平衡。

4.設計優勢

1)一定程度上的順序執行

         通過隊列機制,使對於所有alternative來說,在一定程度上是順序執行的,在PK的時候各個alternative之間完成simulation的次數是相差不大的。這樣使得PK的演算法在理論上能夠得到證實。

2)多線程並發

         Slave和Selector的線程都是多線程並發的,Slave的並發較為簡單,因為各個alternative在做simulation的時候是相對獨立的,Selector的並發雖然線程間有一定的關係,但是這樣的並發方式通過數學的可以得到證實的。並發的優點在於使得多核CPU能夠最大限度的提高使用率。

3)非同步傳輸,使得CPU使用率最高

         因為系統最耗時的地方在於Slave線程做simulation的過程和Selector線程做PK的過程,這兩個是系統的瓶頸。通過隊列機制實現系統的非同步,讓Slave線程和Selector線程不需要等待網路資料的傳輸,做到一刻不停的運行。

4)索引隊列

         mainQueue和preQueue是使用鏈表實現的,因為其需要頻繁的添加刪除節點,mainList是用數組實現的,因為數組的遍曆速度要遠快於鏈表,在PK的時候需要對mainList中所有的alternative進行遍曆。索引隊列是指在mainQueue和preQueue中儲存mainList的索引,能夠通過索引很快的擷取到資料,這樣的索引隊列的實現方式充分發揮了鏈表和數組的特點,使得效率提高。

5.設計弊端

simulation和PK的平衡性問題


        因為該系統在一定程度上是順序的,即Master上的preQueue,mainQueue,Agent上的altQueue,sampleQueue,這四者之間形成一個環,資料在這個環上按照順序傳輸。如果Selector做PK的速度大於Slave做simulation的速度,資料將堆積在mainQueue中,無法及時的進行simulation,而preQueue的資料將越來越少,導致Selector等待,降低Master的CPU使用率。如果Selector做PK的速度小於Slave做simulation的速度,資料將堆積在preQueue中,無法及時的進行PK,而mainQueue的資料將越來越少,導致Slave等待,降低Agent的CPU使用率。只有通過調整參數,使得simulation和PK達到一定的平衡性才能最大限度的提高CPU使用率。但是隨著一些alternative被淘汰出局,alternative的總量發生變化,整個平衡性也會發生變化,使得系統的效率有所下降,所有這個問題還有待進一步解決。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.