1. SAL架构编程
系统的体系结构以下图所示:设计模式
上图中的子系统以下:架构
绑定无关生产者:它们的功能以绑定无关的数据DOM格式公开;
绑定感知生产者:它们的功能以针对一个或多个生成的绑定接口编译的形式显示; app
绑定无关消费者 - 以DOM的形式调用
绑定感知消费者 - 以一个或多个接口的形式调用ide
2.子系统类型插件
在Controller架构的上下文中,定义了两个子系统类别:设计
YANG支持经过YANG Schema和模块对顶级子系统进行建模,但不容许将现有模型重用于嵌套在顶级子系统上下文中的子系统。为了支持嵌套,引入了YANG扩展,这将扩展模式以容许子系统在单个数据树中进行模型嵌套。代理
3.顶级子系统orm
顶级子系统能够是部署在Controller中的控制器组件或应用程序(provider或消费者),它们使用Controller SAL与其余控制器组件、应用程序和插件进行通讯。blog
顶级子系统子系统一般:每一个系统/ AP或者具备单个实例I,或者具备多个版本实例,每一个实例对于由YANG模型定义的修订是惟一的; 对于多个版本实例,每一个实例表示单个封闭系统。
顶级子系统的主要例子是代理(Broker)和数据仓库(Data Repositories)。
4. 嵌套子系统
嵌套子系统表示不是顶级的实体(例如组件、虚拟系统和网元),而且能够将多个实例挂载到树的不一样级别和不一样分支。
嵌套子系统的实例不直接映射到生产者实例:单个生产者(provider)能够导出(export)嵌套子系统的多个实例。
嵌套子系统可使用与顶级子系统不一样的模型和模式。
5.嵌套数据存储(DataStore)
嵌套子系统的数据在控制器的数据存储区中的节点(附件点)下“附加”(或“挂载”)。
嵌套子系统中的数据能够表示存在于另外一(远程)系统中的数据或本地控制器组件(例如插件)中的数据。它也能够由Controller组件动态生成,或者从其余协议转换。
附加(安装)数据及其结构具备如下属性:
提供嵌套子系统服务的组件负责:
6.RPC
消费者可能须要调用嵌套子系统提供的功能。 RPC代理必须提供可以在生产者中启用嵌套RPC功能。此外,代理必须可以将RPC路由到嵌套子系统的生产者。
原文连接:https://wiki.opendaylight.org/view/OpenDaylight_Controller:_SAL_Architecture_Overview