天天看點

“标簽化”思想在分布式系統中的應用

前言

最近一周在研究YRAN的Node-Label功能特性,進行了一個簡單的測試,然後順便看了它的原始設計文檔。後來發現,這個特性跟HDFS裡的異構存儲原理有異曲同工之妙。其中都展現出的一個核心點:“标簽化”。是以本文,筆者來聊聊“标簽”在分布式系統領域内的應用,應用場景是絕對有的。

“标簽化”的緣由

說到标簽化,很明顯,它其實間接表明了另一個現象:“差異化”。一個很簡單的例子,一個班集體裡面,總有幾個同學,性格怪異,或性格活潑,熱情,那這些同學,就會被大家在心裡貼個标簽:活潑的,性格古怪的等等類型。而對應到分布式系統領域,這種差異展現的層面就有很多方面了。比如存儲這塊,存儲媒介的不同,SSD,普通磁盤,或是錄音帶。計算這塊,就是大記憶體機型,高CPU核數機型等等。

當系統中有一些明顯帶有不同屬性的個體出現時,當然有必要将它們标明出來,否則就會被當成普通個體了。被當成普通個體後,它的功效以及适用場景就會大打折扣了。是以我們需要将它們标簽化。

“标簽化”的作用(适用場景)

現在問題來了,到底“标簽化”在分布式系統領域有什麼用呢?換句更簡單地說法,它有哪些适用場景呢?

第一,硬體資源隔離。在存有很多異構環境的叢集内,可以有效的将這些資源區分出來,讓系統知道,然後,在這些異構環境的節點上,隻跑對應特點的任務。這個使用場景是比較普遍會容易想到的。

第二,任務層面的隔離。通過管理者主觀的劃分出标簽,然後讓任務送出到不同标簽對應的資源上,進而保證不同使用者的任務不會互相影響。這裡其實是利用标簽将系統資源進行了邏輯意義上的分隔。

第三,分片互斥的資源使用。相較于原始統一化的共享一整個資源來比,通過對系統資源打上标簽,可以有很多種不同的使用方式。一個節點被一個标簽獨有或擁有多個标簽屬性。标簽在這裡在系統資源上進行了一層邏輯上的抽象,這樣可以更高的提高系統資源的使用率。

“标簽化”過程如何在系統中執行

不論是在HDFS的異構存儲功能中,還是在YARN的Node-Label中,标簽化的核心實作思路大體上差異不大。歸結起來是下面幾個步驟:

  • 管理者主動給系統資源打上标簽,這些标簽資訊将會被主要制節點所記錄。
  • 使用者送出應用(請求),設定特定的标簽。
  • 系統接收到标簽任務(請求),将任務(操作)執行(作用)到對應标簽的資源上。

這裡注意一點,這裡所有的标簽還是需要人為設定的,而不是說系統很“聰明”地自己識别号了标簽資源。