本文件說明元件管理員如何與個別元件互動 管理執行個體
生命週期狀態
元件執行個體會經歷下列主要的生命週期狀態:
元件執行個體可在儲存媒介上保留獨立的永久狀態 檢查應用程式能否繼續運作 但每次重新啟動時都會發生問題
已建立
您可以透過以下方式建立元件執行個體:
- 已設為元件管理員的根元件。
- 靜態發現為另一個人的「子項」 元件。
- 在集合的執行階段期間動態建立。
每個元件執行個體都有一個元件網址,說明如何解析 以及一個專門透過 從根層級詳情請參閱「元件 ID」。
已解決
解析元件執行個體會擷取
指定元件網址元件管理員會找出
元件解析器支援單調
環境。開發人員可以使用
ffx component resolve
指令。
元件必須先成功解析後,才能啟動。
已開始
啟動元件執行個體會載入並執行元件的程式 讓 Kubernetes 叢集取得必要的功能
啟動元件執行個體最常見的原因就是
元件會繫結至其中一項公開的功能。開發人員可以
也可以使用 ffx component start
指令
啟動後,元件執行個體會繼續執行,直到 停止。
已停止
停止元件執行個體會終止元件的程式,但會保留 容器的永久狀態。元件會在 由元件的「執行器」定義。
元件架構可能會因為下列原因而停止元件執行個體:
- 元件即將遭到刪除。
- 正在關閉。
元件可以實作生命週期處理常式 (範例), 會收到即將終止的事件通知。 請注意,在下列情況下,元件可能無法收到這類事件: 資源耗盡、當機或停電。
關機
元件管理員會將元件執行個體的最終執行狀態設為 表示該執行個體無法重新啟動,並表示該執行個體 即可安全銷毀
已刪除
元件執行個體可以透過下列方式刪除:
- 在執行階段動態移除集合。這是 如果元件是要移除的其他元件的子系,則傳回 true。
刪除後,元件管理員會將該執行個體從 元件拓撲,包括所有永久狀態。相同來源的新例項 每個元件都有自己專屬的身分和狀態 執行個體。
生命週期動作
本節說明元件架構使用以下常見動作: 轉換元件執行個體的生命週期狀態
裝訂
元件執行個體 A
在 A
時,會「繫結」至另一個元件執行個體 B
會連線至 B
提供的某些能力。這會使元件 B
如果尚未執行,則 start。
確切來說,A
可繫結至 B
的方式有兩種:
A
會連線至其命名空間中的能力 由B
公開或提供。 最常見的做法就是這樣。A
會繫結至fuchsia.component.Binder
公開或提供的架構通訊協定 建立者:B
。這個通訊協定與傳統能力不同 是由元件架構實作
關機排序
當元件架構決定「關閉」某個元件時, 關閉元件及其子項。 這是遞迴行為,亦即關閉元件時 向下執行整個拓撲
領域內的元件會按照特定順序關閉 這些元件之間的強烈依附關係元件之間的依附元件 有向非循環圖 (DAG) 和元件依目標到來源的順序遭到關閉。
依附元件圖表中會考量所有功能。功能
預設提供的依附元件
指定 dependency: weak
。
舉例來說,假設具有元件 A
、B
、C
、D
的領域,
其中包含以下優惠:
A
非常提供B
和C
的能力。B
非常提供C
的能力。C
極弱提供B
的能力。
以下是相關領域的圖片:
關閉順序如下:
D
和C
沒有相依關係,因此可依任何順序關閉。B
可在C
後關閉。A
可在B
後關閉。
依附元件較弱
請注意,元件依附元件會形成 DAG
週期。也就是說,在上述範例中,C
無法強烈提供
具備 A
的能力。
不過,系統允許 C
提供使用 dependency: "weak"
的 A
能力。
弱依附元件不會視為依附元件 DAG 的一部分,且會
不會影響關閉順序