关键词不能为空

当前您在: 主页 > 英语 >

Opendaylight DOM DataStore研究

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-30 00:16
tags:

-

2021年1月30日发(作者:特戊酸)




DOM DataStore


修改记录



版本号



V0.1


V0.2


V0.3


V0.4


V0.5





















修改人



***


***


***


***


***





















修改日期



2014-07-29


2014-07-30


改和扩充



2014-07-31


2014-08-01



2014-08-04





















事务的相关流程以及


Data Store Tracer


Binding


模型



BindingBroker


以及相关


connect or


总结






















新增


/


修改 内容概要



DOM DataStore


原理研究



事务链和


DOM Data Broker


及上版本内容的修






新标准化树形数据模型




对于数据的新标准化模型将代表后面的


YANG


规格的实际概念。


这将不再是基于序列化


格式(定义 见


YANG


规格和使用的


SAL-< /p>


经纪参数


impl1.0





?



NormalizedNode


代表在树结构中的一个


节点的基本类型


;


所有其他节点类型是来自这 个基本类型。它包


含一个叶子识别符和一个值。



?



DataContainerNode




其中包含


多个叶节点


;


它在


YANG


语法中没有直 接表示。



?



ContainerNode




容器节点


,它包含了多个子叶片和映射到


Y ANG


容器陈述。



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



< p>
节点代表一个叶子,


这大多发生一次,


每个父节点 ,


但可能的值可以有不同的


类型。地图来选择语句。类型映射到 该选择的


case


语句。



?



AugmentationNode




Node which represents a leaf, which occurs mostly once per parent node.


?



?



?



?



LeafNode




叶子节点,存放相关值(


PS


:官网解释是

< p>
Contains simple value.





LeafSetEntryNode



LeafSetNode




MapNode




Data Store


接口



publicinterface


DataStore


extends


Path

, D>


extends


//



DataReader,


//



DataModificationTransactionFactory {


@Override



public


DataModification beginTransaction();


//


数据修改



@Override



public


D readConfigurationData(P path);


@Override



public


D readOperationalData(P path);


}



目前还没有发现


Data Store


和上面的联系,


以及


Data Store

里面存储结构。


估计和


path


有 关。



DOM Data Broker

提供访问概念性数据树存储方法,并提供接口对存储树的某一分支下的数据更改。



具体定义的类



publicabst ractclass


DomDataBroker


extend s


ServiceType


{


publicstaticfinal


QName


QNAME


=


.

< br>create


(



s:xml:n s:yang:controller:md:sal:dom


,



,



)


public


DomDataBroker() {


}


}



执行过程




当前的


DOM


数据代理(


DOM Data Broker


)并没有设计成一个智能化的内存缓存树形

结构,


这种内存缓存树形结构能够跟踪依赖关系,


计算变更 和维护提交处理程序,


通知监听


器和实现数据之间的关系假设。


这可能会导致效率低下,


执行两个阶段提交,

< br>其中在由数据


代理本身所做的一切状态跟踪。如下所示:



1.


计算受影响的子树。



2.


过滤提交处理受影响的子树。



3.


过滤数据受影响子树的数据改变监听器。



4.


捕获初始状态数据的更改监听器。



5.


启动所有受影响的提交处理程序的提交申请。



6.


完成提交的所有受影响的提交处理程序。



7.


捕获最后的数据状态改变监听器。



8.


向受影响的数据更改监听器发布数据更改事件。




DOM Data Broker



Data Store


DOM Data Broker


获取事务链中的事务




SAL


层中


DOM Data Broker


是怎样调用


Data Store


的呢?



?



DataBrokerImpl




private


AtomicLong


nextTransaction


=


new


AtomicLong();


privatefinal


AtomicLong


createdTransactionsCount


=


new


AtomicLong();




里面有一个


AtomicLong


(原子变量)类型


nextTrans action


的的变量,而


nextTransaction< /p>


就是指下一个事务。


可以看出


DOM Data Broker


是读取事务链里面的事务来对


Data Store



作。而


nextTran saction


更像是一个指针指向下次操作的事务。




public


DataTransactionImpl beginTransaction() {


String transactionId =



+


nextTransactio n


.getAndIncrement();


created TransactionsCount


.getAndIncrement();


returnnew


DataTransactionImp l(transactionId,


this


);


}









nextTransaction





beginTransaction( )





,< /p>






DataTransactionImpl







。< /p>


DataTransactionImpl




AbstractDataTransaction< /p>


的。下面先看看


AbstractDataTransactio n




?



AbstractDataTransaction


其构造函数:







protected


AbstractDataTransa ction(


final


Object identifier,


final


AbstractDataBroker


extends


Object> dataBroker) {


super


(dataBroker);


this


.


identifier

= Preconditions.


checkNotNull

< br>(identifier);


this


.


broker


= Preconditions.


checkNotNull


(dataBroker);


th is


.


allocationTime


= System.


nanoTime


();


LOG


.debug(



, identifier);


}


其中传入的参数:


identifier


是标示事务链中要操作的事务。而


dataBroker


则是要


连接的数据代理。



?



DataTransactionImpl



例举了如下相关函数:



@Override



public


ListenerRegistration


registerListener(DataTransactionListener listener) {


return


listeners< /p>


.register(listener);


}



registerListener()

用于注册监听,说道这里引用下上次分析的读数据图


:





DOM


Data


Broker


操作


Data


Store


,是通过监听完成的,而这个监听函数注册就是


DataTransactionImpl


类里面的


registerListener()





到这里我们只能认识到


DOMDat aBroker


是怎么样读取事务链中的事务。


DOMData Broker


是怎么联系上


DOM stroe


的呢?



DOMDataB roker


绑定


DOM Store


publicvoid


setupStore() {




ImmutableMapstores =


ImmutableMap.


builder


()


//



.put(


CONFIGURATION


, configStore)


//



.put(


OPERATIONAL


, operStore)


//



.build();


ListeningExecutorService executor =


Mor eExecutors.


listeningDecorator


(Executors.


newSingleThreadExecutor


());


domBroker =


new


DOMDataBrokerImpl(stores, executor);



}



通过这个实例就可以看出


DOMDataBroker


是怎么绑定


DOM Store


的。



DOMD ataBroker


操作


DOM Data Store









publicvoid


testTransactionChainNoConflict()


throws


InterruptedException,


ExecutionException, TimeoutException {




……



DOMDataReadTransaction secondReadTx = dOnlyTransaction();


assertTestContainer Exists


(secondReadTx);


DOMDataReadWriteTransaction thirdDeleteTx =


allocateAndDelete


(txChain);


assertCommitSuccessful(firstWriteTxFutu re);


}


通过上面的函数调用,可以看出


DOMDataBroker


要操作


DOM


Data


Store


里面的内容,< /p>


是通


过调用事务链中定义好的方法。




DOM Data Broker



Connector



?



Binding independent Connector


是怎么样连接


DOM Data Broker



FW Data Broker


的?



BindingIndependentConnector


里面内容较多,很多都和框架服务有关,暂时先不看。



?



BindingDomConnectorDeployer



因为其是一个具体的实现类,里面内容较多,目前有一个笼统的认识。

< br>


先看看里面的函数:



STEP1




publicstatic


BindingIndependentConnector


createConne ctor(BindingIndependentMappingService mappingService) {


BindingIndependentConnector connector =


new



BindingIndependentConnector();


pingService(mappingService);


return


connector;


}




通过< /p>


mappingService


创建一个


connector



其中


mappi ngService


的作用有待研究。















STEP2




publicstatic


BindingIndependentConnecto r



tryToDeployConnector(RootB indingAwareBroker baBroker,


ProviderSession domSession) {


checkNotNull


(baBroker);


checkNotNull


(domSession);


BindingIndependentConnector connector =



}


< /p>


createConnector


(


ma ppingService


);


return


connector;



其可以将


BaData


转化成


DOM Data



到这里就可以看出


FW Data Broker


中的数据是怎么被转


换成


DOM Data









Asynchronous Read


(异步读)




大部分的


MD-SAL



API


是异步的


,以前的读数据操作是个例外,这似 乎是直接和快


速的。但是当额外的读数据用例引入,如慵懒的编解码器生成,远程系统提 供读操作



NETCONF



,多读者的支持,集群,这不再是真实的。



所 以需要开发一个更加有效快


速的模型


-Asynchronou s Read




Requirements


?



事务



?



在事务过程中一致的数据存储视图:



1.


应用程序可以读回所有它的数据存储所做的修改。



2.


应用程序没有看到事务的任何写操作,当事务(隔离)后启动。



What We Need to Do


?



yang-data-api


需要进行扩展以提供树状结构,是一个更好的匹配由杨架构定义的数据


结构。



?



数据结构需要密切与实例标识符一致。



?



数据结构应为原子操作支持。



?




sal-common-api,


sal-core-api



and



sal-binding- api



APIs


扩展,以更好地指定 用户的


意图。



?



独立的运营数据存储和配置数据存储。



异步读的好缺处



优点:




异 步读的好处就是提高设备使用率,从而在宏观上提升程序运行效率。



缺点:




容易出现冲突操作和读入脏数据。



事务链




官方给的定义:


A chain of DOM Data t ransactions



一系列相关对


DOM Data


的操作


就称为事务链



MD-SAL



API

< p>
需要扩展,以允许使用核心的


DOM


数据代理


API


和使用


各种工具适配器隐式链接显式 事务链的支持。事务链允许创建的先决条件



-


一次事务是基


于成功完成一个或多个先前的事务。



事务链的类型



?



Join Transaction



?



Data Modification Transaction



数据改变监听器



?



Operational Data change only



只监听操作数据改变。



?



Configuration Data change only



只监听配置数据改变。



?



Operational and Configuration data store changed



监听配置数据和操作数据改变



?



其他触发事件



?



Base




?



One




?



Subtree




事务链接口



publicinterface


AsyncDataTransactionFactory


extends


Path

, D> {





}


AsyncReadOnlyTransaction newReadOnlyTransaction();


AsyncReadWriteTransaction newReadWriteTransaction();


AsyncWriteTransaction newWriteOnlyTransaction();




事务链的具体实现类



?




DOMDataBrokerTransactionChainImpl


其构造函数:



public


DOMDataBrokerTransactionChainImpl(

finallong


chainId,


final


ImmutableMap chains,


final


DOMDataCommitExecutor coordinator,


final


TransactionChainListener


listener) {


super


(chains);


th is


.


chainId


= chainId;


this


.


coo rdinator


= Preconditions.


che ckNotNull


(coordinator);


this


.


listener


= Preco nditions.


checkNotNull


(listen er);


}



DOM Data Broker


和事务链



?



DOMDataBrokerImpl




public


DOMTransactionChain createTransactionChain(


final



TransactionChainListener listener) {


。。。



}



可以看出调用


DOMDataBrokerImpl

< p>
里面的


createTransactionChain

< br>就可以创建一


个事务链了



事务 链中事务的


id




?



定义



privatefinal


AtomicLong


txNum


=


new


AtomicLong();


?



赋值



protected


Object newTransactionIdentifier() {


return



+


txNum


.getAndIncrement()


}










-


-


-


-


-


-


-


-



本文更新与2021-01-30 00:16,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/588099.html

Opendaylight DOM DataStore研究的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文