Skip to main content
Version: 0.7.4

Minion

Minion

Minion 係呢個框架定義概一種特殊 Claptrap 。喺 Claptrap 基礎上做出嘅調整。佢具備以下呢哋特性:

從對應的 Claptrap 讀取事件。跟 Claptrap 一樣,Minion 嘅狀態亦都係由事件進行控制。唔同嘅係,Minion 就好似佢字面意思一樣,總係由對應嘅 Claptrap 攞到事件,從而改變自身狀態。因此,佢可以異步的處理 Claptrap 產生事件之後嘅後續操作。

Minion 一詞出自 newbe36524 玩的一款運氣遊戲《爐石傳說》,其中“隨從”在英文版中的描述即為“minion”。


以下係關於 Minion 的故事化描述,用於輔助理解。唔好介意。

對於較為複雜嘅任務黎講,單個 Claptrap 完成起來會比較困難。因此,响設計呢類 Claptrap 嘅時候會按照需求俾呢個 Claptrap 去揾多幾個細佬黎幫佢完成手頭嘅任務。這哋細佬就叫 Minion 。Minion 嘅本質也是一台 Claptrap 機器人,但係佢地相對於完整版嘅 Claptrap 黎講,減少左手持型備忘錄呢個設備。咁係源於佢工作方式同 Claptrap 略有不同嘅原因。

Minion 只可以通過協同 Claptrap 嚟完成任務,佢地唔能夠決定係咪要做某個任務。所以記錄任務詳細信息嘅手持型備忘錄只要有 Claptrap 持有就可以了。當 Claptrap 完成一件任務嘅時候,佢地會通知他嘅 Minion 們關於呢次任務嘅細節。咁樣 Minion 就可以同步拎到任務內容,並且借此嚟更新自己嘅記憶。以下我哋通過一個例子嚟解釋下呢種工作模式。

假設我哋依家響某個小區投放左一部 Claptrap 機器人作為門衛機器人。它嘅工作職責包括有以下這哋:

  1. 負責對門房的車輛進行檢查和放行
  2. 負責對付來自路人的各種詢問

我哋依家知道,Claptrap 機器人在工作嘅時候淨係可以同時處理一樣野。亦即係話,假如佢正在為某台車輛進行檢查和放行,咁它就無辦法去處理路人嘅詢問。同樣地,假如佢接受緊路人嘅詢問,咁佢就無辦法去處理車輛嘅檢查和放行。咁樣做嘅效率並不高。因此,我哋幫呢部 Claptrap 增加一部 Minion 來協助其完成接受路人詢問嘅任務。

具體的工作方式是這樣的:每天,Claptrap 都會對小區周圍的情況進行檢查並且將具體的信息全部都記錄在手持型備忘錄當中。並且它會將這些任務的細節通知給它的 Minion 。於是 Minion 就也知道了關於這個小區的所有細節,因此它就能夠輕鬆的應付路人的詢問了。

通過這樣的合作,就能使得 Claptrap 更加高效的專注於車輛的檢查和放行,而路人的詢問則交給 Minion 來處理就可以了。

不過,對於一些細節還需要進行補充解釋以便讀者理解:

為什麼不直接增加一台新的 Claptrap 來直接處理路人的詢問呢?一台新的 Claptrap 意味著一個新的主體,它能夠獨立的完成任務,這樣會增加管理的成本。但是如果只是新增一台 Minion ,它則可以由它所屬的 Claptrap 來負責管理,相較而言更容易管理。當然為了增加一點代入感,還可以這麼理解:Minion 相比於常規的 Claptrap 缺少了手持型備忘錄這個設備。這個設備的成本占總硬件成本的 99%。減少成本來完成相同的任務,何樂不為呢?

Claptrap 將任務細節通知給 Minion 的成本會不會很高?不會的。Claptrap 和 Minion 一般都是團夥作業,隨著現在無線網絡技術的不斷改善,這種成本將會越來越小。5G 賦能,未來可期。

現在,我們在額外考慮一個場景:假如物業經理希望 Claptrap 每天定時匯報小區的車輛出入情況。同樣,為了增加代入感,我們不妨假設這個小區非常忙碌,一天 24 小時都有車輛進進出出。因此如果讓它拿出時間來匯報車輛出入情況的話,由於 Claptrap 的單線程特性,那麼很可能小區門口就堵成長安街了。

有了前面的經驗,我們同樣可以為這台 Claptrap 配備一台新的 Minion 來處理向物業經理匯報的這個任務。因為 Claptrap 在進行車輛出去檢查的時候會將相關的細節通知給 Minion。所以 Minion 也就知道了關於今日車輛出入情況的所有細節,做出報表,那就是分分鐘的事情。

我們再來增加一個場景:我們需要普查一下人口數量。那麼只需要在小區門衛 Claptrap 檢查出入人員時,對人員的信息進行記錄。同樣的,我們添加一台 Minion 來專門匯總那些核的數據,並且將上級部門。正巧,上級部門也是通過一台 Claptrap 機器人來接收下級的數據匯報,並且正好其也有一台 Minion 用來匯總下級匯報上來的數據,並且匯報給它的上級。就這樣 Claptrap1 -> Minion1 -> Claptrap2 -> Minion2 -> Claptrap3 …… 一層一層的向上。於是我們就完成了全國乃至全球的數據匯總。

因此,我們可以總結一下。有了 Minion 的加持,可以為 Claptrap 更好的完成至少三類事情:

  1. 協助分擔原有的查詢類任務
  2. 協助完成一些統計、通知等等可以異步處理的任務
  3. 協助完成和其他 Claptrap 的協同來完成規模更大的任務