ONOS分布式数据结构弱一致性代码追踪

ONOS提供了一些分布式数据结构(distributed primitive)来实现数据的强一致性和最终一致性存储。下面来讨论一下ONOS的弱一致性。

EventuallyConsistentMapONOS提供的用来实现弱一致性的分布式原语,它的实现类中提供了一系列参数来设置它的属性,其中就有一个是设置该Map的值是否存储在硬盘上,

下面就流程做一个简单的说明。以下例子是以网络拓扑为例。

DistributedTopologyStoreactivate()方法中,我们在创建存储网络拓扑EventuallyConsistentMap的地方打上断点。

上图第一个红框是DistributedTopologyStoreEventuallyConsistentMap的声明,第二个红框是它的创建初始化。



初始化时,他会调用StorageService去创建,上图红框是要传递的参数persistentService,弱一致性的数据想要存储在硬盘上面,必须通过该服务来创建相应的persistentMap或者persistentSet,该项服务会把数据存储在由PersistenceManager提供的localDB





以上是PersistentManager的成员变量和activate()方法的截图。


接下来继续EventuallyConsistentMap的创建过程


上图是创建EventuallyConsistentMap的过程,这个过程通过EventuallyConsistentMapbuilderImpl来控制,上面两个红框是我们今天重点关注的两个属性,一个就是我们的persistentService,还有一个就是设置是否将弱一致性数据保存在硬盘上面。EventuallyConsistentMapbuilderImpl提供了一些方法来设置属性。


上图红框是设置保存在硬盘的方法(系统默认是不保存在硬盘上面哦)。


属性等设置完毕后,要调用build()方法来创建EventuallyConsistentMap


上图就是build()方法的截图。


接下来会去EventuallyConsistentMapImpl去创建EventuallyConsistentMap


上图就是创建过程,可以看到它会根据persistentboolean)的值来决定是否调用persistentService这个服务。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值