Opendaylight DOM DataStore研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DOM DataStore
修改记录
新标准化树形数据模型
对于数据的新标准化模型将代表后面的YANG 规格的实际概念。这将不再是基于序列化格式(定义见YANG 规格和使用的SAL-经纪参数impl1.0)。
●NormalizedNode
代表在树结构中的一个节点的基本类型;所有其他节点类型是来自这个基本类型。它包含一个叶子识别符和一个值。
⏹DataContainerNode
其中包含多个叶节点;它在YANG语法中没有直接表示。
◆ContainerNode
容器节点,它包含了多个子叶片和映射到YANG容器陈述。(Node, which
represents a leaf which can occur only once per parent node; it contains multiple child
leaves and maps to the container statement in YANG.)
◆MapEntryNode
节点代表一个叶子,叶子是唯一识别的键的值。MapEntryNode中可以包含多
个。(Node which represents a leaf, which can occur multiple times; a leave is
uniquely identified by the value of its key. A MapEntryNode may contain
multiple)
◆ChoiceNode
节点代表一个叶子,这大多发生一次,每个父节点,但可能的值可以有不同的
类型。地图来选择语句。类型映射到该选择的case语句。
◆AugmentationNode
Node which represents a leaf, which occurs mostly once per parent node.
⏹LeafNode
叶子节点,存放相关值(PS:官网解释是 Contains simple value.)。
⏹LeafSetEntryNode
⏹LeafSetNode
⏹MapNode
Data Store接口
DOM Data Broker
提供访问概念性数据树存储方法,并提供接口对存储树的某一分支下的数据更改。
具体定义的类
执行过程
当前的DOM数据代理(DOM Data Broker)并没有设计成一个智能化的内存缓存树形结构,这种内存缓存树形结构能够跟踪依赖关系,计算变更和维护提交处理程序,通知监听器和实现数据之间的关系假设。这可能会导致效率低下,执行两个阶段提交,其中在由数据代理本身所做的一切状态跟踪。如下所示:
1. 计算受影响的子树。
2. 过滤提交处理受影响的子树。
3. 过滤数据受影响子树的数据改变监听器。
4. 捕获初始状态数据的更改监听器。
5. 启动所有受影响的提交处理程序的提交申请。
6. 完成提交的所有受影响的提交处理程序。
7. 捕获最后的数据状态改变监听器。
8. 向受影响的数据更改监听器发布数据更改事件。
DOM Data Broker和Data Store
DOM Data Broker获取事务链中的事务
SAL层中DOM Data Broker是怎样调用Data Store的呢?
DataBrokerImpl
就是指下一个事务。可以看出DOM Data Broker是读取事务链里面的事务来对Data Store操作。而nextTransaction更像是一个指针指向下次操作的事务。
其通过将nextTransaction传入到beginTransaction()函数里,返回一个DataTransactionImpl类型的对象。DataTransactionImpl是继承AbstractDataTransaction的。下面先看看AbstractDataTransaction。
●AbstractDataTransaction
其构造函数:
其中传入的参数:identifier是标示事务链中要操作的事务。而dataBroker则是要连接的数据代理。
●DataTransactionImpl
registerListener()
DOM Data Broker操作Data Store,是通过监听完成的,而这个监听函数注册就是DataTransactionImpl类里面的registerListener()。
到这里我们只能认识到DOMDataBroker是怎么样读取事务链中的事务。DOMDataBroker 是怎么联系上DOM stroe的呢?
DOMDataBroker绑定DOM Store
DOMDataBroker操作DOM Data Store
过调用事务链中定义好的方法。
DOM Data Broker和Connector
Binding independent Connector是怎么样连接DOM Data Broker和FW Data Broker的?
●BindingIndependentConnector
里面内容较多,很多都和框架服务有关,暂时先不看。
●BindingDomConnectorDeployer
因为其是一个具体的实现类,里面内容较多,目前有一个笼统的认识。
先看看里面的函数:
通过mappingService创建一个connector,其中mappingService的作用有待研究。