【譯】OpenDaylight控制器:SAL架構概述

1. SAL架構編程

   系統的體系結構以下圖所示:設計模式

   

上圖中的子系統以下:架構

  • 生產者(Provider)--經過其北向API嚮應用程序和其餘提供程序(插件)提供公開功能的組件。生產者能夠是其餘生產者的消費者。生產者有兩種類型:

          綁定無關生產者:它們的功能以綁定無關的數據DOM格式公開;
          綁定感知生產者:它們的功能以針對一個或多個生成的綁定接口編譯的形式顯示; app

  •  消費者(Consumer) - -使用由一個或多個provider提供的功能的組件。消費者有兩種類型:

          綁定無關消費者 - 以DOM的形式調用
          綁定感知消費者 - 以一個或多個接口的形式調用ide

  • 綁定無關代理(Binding-Independent Broker ) - MD-SAL的核心組件。它在不一樣的provider和消費者之間路由RPC、通知和數據更改;
  • 綁定感知代理(Binding-Aware Broker) - 爲消費者(如控制器應用程序或插件)和生產者提供可編程API和Java語言支持。它是創建在綁定無關代理之上的外觀/代理(設計模式),可簡化對綁定無關生產者和綁定感知生產者提供的數據和服務的訪問。
  • BI數據存儲庫(BI Data Repository) - MD-SAL 綁定無關的基礎架構組件,負責存儲配置和臨時transient )數據
  • 綁定模式存儲庫(Binding Schema Repository ) - 基礎架構組件,負責存儲YANG-Java關係的規範以及語言綁定API與綁定無關的API調用之間的映射。
  • 綁定生成器(Binding Generator ) - 基礎架構組件,它將生成接口和數據Mapper的實現( to the binding-independent format)。

 

2.子系統類型插件

 
     在Controller架構的上下文中,定義了兩個子系統類別:設計

  • 頂級子系統(Top-Level Subsystems) - 數據存儲或驗證器,每一個API修訂版一般只有一個頂級子系統的單個實例;
  • 嵌套子系統(Nested Subsystems ) -   該子系統能夠是本地或遠程。它能夠在多個地方或多個實例中公開一組功能。網元是嵌套子系統的示例,例如路由器或交換機。

    YANG支持經過YANG Schema和模塊對頂級子系統進行建模,但不容許將現有模型重用於嵌套在頂級子系統上下文中的子系統。爲了支持嵌套,引入了YANG擴展,這將擴展模式以容許子系統在單個數據樹中進行模型嵌套。代理

3.頂級子系統orm


    頂級子系統能夠是部署在Controller中的控制器組件或應用程序(provider或消費者),它們使用Controller SAL與其餘控制器組件、應用程序和插件進行通訊。blog

    頂級子系統子系統一般:每一個系統/ AP或者具備單個實例I,或者具備多個版本實例,每一個實例對於由YANG模型定義的修訂是惟一的; 對於多個版本實例,每一個實例表示單個封閉系統。

    頂級子系統的主要例子是代理(Broker)和數據倉庫(Data Repositories)。

 

4. 嵌套子系統


     嵌套子系統表示不是頂級的實體(例如組件、虛擬系統和網元),而且能夠將多個實例掛載到樹的不一樣級別和不一樣分支。

     嵌套子系統的實例不直接映射到生產者實例:單個生產者(provider)能夠導出(export)嵌套子系統的多個實例。

     嵌套子系統可使用與頂級子系統不一樣的模型和模式。

5.嵌套數據存儲(DataStore)

 嵌套子系統的數據在控制器的數據存儲區中的節點(附件點)下「附加」(或「掛載」)。

   嵌套子系統中的數據能夠表示存在於另外一(遠程)系統中的數據或本地控制器組件(例如插件)中的數據。它也能夠由Controller組件動態生成,或者從其餘協議轉換。

   附加(安裝)數據及其結構具備如下屬性:

  •    能夠被任何YANG Schema引用,該Schema理解嵌套子系統
  •    可能使用與其容器不一樣的YANG模式
  •    這些模式使用附加點做爲數據根節點。
  •    附加點用做嵌套子系統的標識符。

  提供嵌套子系統服務的組件負責:

  •   向狀態數據存儲庫提供嵌套數據
  • Voting on configuration changes to nested data
  • Voting on configuration commits that change nested data

 

 

6.RPC

   消費者可能須要調用嵌套子系統提供的功能。 RPC代理必須提供可以在生產者中啓用嵌套RPC功能。此外,代理必須可以將RPC路由到嵌套子系統的生產者。

 原文連接:https://wiki.opendaylight.org/view/OpenDaylight_Controller:_SAL_Architecture_Overview

相關文章
相關標籤/搜索