欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenDaylight中的DataStore是什么

汽車電子技術(shù) ? 來源:碼農(nóng)與軟件時代 ? 作者:碼農(nóng)與軟件時代 ? 2023-02-14 15:13 ? 次閱讀

本篇作為MD-SAL核心內(nèi)容的第二篇,我們將從OpenDaylight的數(shù)據(jù)存型、DataStore是什么,如何實現(xiàn)等幾個方面進(jìn)行介紹。

圖片

圖片來自網(wǎng)絡(luò)

一、OpenDaylight需要的數(shù)據(jù)存儲

1.1數(shù)據(jù)庫簡單介紹

我們熟知的軟件系統(tǒng)有學(xué)校的“圖書館管理系統(tǒng)”,企業(yè)里面的“客戶關(guān)系管理系統(tǒng)”,這些系統(tǒng)本質(zhì)上只需要易操作就可以了,不需要高并發(fā),這種系統(tǒng)的典型架構(gòu)如下圖所示:

圖片

我們注意到這些系統(tǒng)都包含一個數(shù)據(jù)庫。而提到數(shù)據(jù)庫,我們可能先想到的是MySql、oracle之類的關(guān)系型數(shù)據(jù)庫,有人可能還會想到MangoDB、redis的非關(guān)系型數(shù)據(jù)庫,使用Java語言編程的人員可能會想到ehcache、memcache等緩存數(shù)據(jù)庫。如下圖所示:

圖片

我們來看下什么是內(nèi)存數(shù)據(jù)庫?在Wiki上,我們可以看到:“內(nèi)存數(shù)據(jù)庫(in-memory database,IMDB),也稱為主內(nèi)存數(shù)據(jù)庫系統(tǒng)或內(nèi)存駐留數(shù)據(jù)庫,是一種數(shù)據(jù)庫管理系統(tǒng),主要依賴主存儲器進(jìn)行計算機(jī)數(shù)據(jù)存儲。它與采用磁盤存儲機(jī)制的數(shù)據(jù)庫管理系統(tǒng)形成對比。內(nèi)存數(shù)據(jù)庫比磁盤優(yōu)化數(shù)據(jù)庫更快,因為磁盤訪問比內(nèi)存訪問慢,內(nèi)部優(yōu)化算法更簡單,執(zhí)行的CPU指令更少”。事實上,在具有實時計費(fèi)能力的電信運(yùn)營商,采用的基本上都是內(nèi)存數(shù)據(jù)庫。它的好處是訪問速度快,一般來說,內(nèi)存數(shù)據(jù)庫要比磁盤數(shù)據(jù)庫快10000倍。不好之處在于

數(shù)據(jù)是直接存在系統(tǒng)主內(nèi)存中,如果內(nèi)存數(shù)據(jù)庫重啟或崩潰后,可能會導(dǎo)致數(shù)據(jù)全部丟失。所以內(nèi)存數(shù)據(jù)庫很重要的一點(diǎn)就是如何保證數(shù)據(jù)的安全可靠,并能在出現(xiàn)問題時能夠快速恢復(fù)數(shù)據(jù)。

1.2 OpenDaylight能力需求

SDN起源于校園網(wǎng),發(fā)揚(yáng)光大于數(shù)據(jù)中心,現(xiàn)廣泛用于廣域網(wǎng),SDN控制器,可能管理著數(shù)十萬臺軟交換機(jī),下發(fā)數(shù)百萬乃至上千萬條路由信息。因此,作為SDN控制器的開源項目OpenDaylight,無論是業(yè)務(wù)邏輯還是數(shù)據(jù)存儲,都需要具備如下能力:

l高并發(fā):支持大規(guī)模的網(wǎng)絡(luò)設(shè)備控制、網(wǎng)絡(luò)路由計算和生成、海量的業(yè)務(wù)消息處理;

l高可靠:在控制器軟硬件發(fā)生故障時,依然能夠?qū)ν馓峁┓?wù);

l實時性:SDN網(wǎng)絡(luò)能夠做到秒級或毫秒級的收斂;

1.3 OpenDaylight存儲選型

從上面的分析可知,OpenDaylight選用內(nèi)存數(shù)據(jù)庫極為合適。下面我們來看下OpenDaylight的存儲選型:

Lithium 版本之前 ,OpenDaylight采用基于AD-SAL的架構(gòu)設(shè)計,數(shù)據(jù)存儲采用的是Infinispan。它是基于內(nèi)存的分布式鍵值存儲系統(tǒng)。那么,如何理解鍵值存儲呢?可以簡單地將理解為“鍵與值的映射”,在內(nèi)存中的具體形式體現(xiàn)HashMap和有序樹。Infinispan可以作為一個Java Lib進(jìn)行使用,也可以通過一系列主流的遠(yuǎn)程協(xié)議方式(如REST、WebSockets)來提供獨(dú)立的服務(wù)。

Ininispan包可通過Maven的方式獲取,Infinispan jar包含所需的OSGi manifest headers,可以作為OSGi包OSGi運(yùn)行時環(huán)境中使用。 除此之外,還需要安裝所需的第三方依賴項。詳細(xì)安裝方法可參照:

http://infinispan.org/docs/9.3.x/getting_started/getting_started.html

Lithium版本之后, OpenDaylight轉(zhuǎn)向基于MD-SAL的架構(gòu)設(shè)計,存儲實現(xiàn)也相應(yīng)的轉(zhuǎn)為DataStore。

二、如何理解DataStore?

2.1DataStore是什么

在OpenDaylight控制器中,使用YANG作為建模語言,用于對數(shù)據(jù)存儲的內(nèi)容和行為進(jìn)行建模,YANG可以轉(zhuǎn)換成XML的格式。作為MD-SAL核心的Datastore實現(xiàn)了W3C DOM Document樹,并使用XML進(jìn)行數(shù)據(jù)的表示。需要說明的一點(diǎn):DataStore并不是完全基于XML的,OpenDaylight子項目YANGTools提供了優(yōu)化YANG XML并使其適應(yīng)XML DOM的模塊。

DataStore由DataTree組成,Yang定義了該樹的地址空間,由根節(jié)點(diǎn)、葉子節(jié)點(diǎn)和內(nèi)部節(jié)點(diǎn)組成,如下圖所示:

圖片

圖片來自網(wǎng)絡(luò)

而DataTree分為兩個邏輯數(shù)據(jù)存儲:operational和config。這兩部分都有統(tǒng)一的視圖,并且可以使用實例標(biāo)識符InstanceIdentifier來定位特定節(jié)點(diǎn)。如下圖所示:

圖片

圖片來自網(wǎng)絡(luò)

2.2DataStore如何實現(xiàn)?

2.2.1如何進(jìn)行并發(fā)控制?

數(shù)據(jù)庫中經(jīng)常發(fā)生并發(fā)的場景:應(yīng)用邏輯A在讀取數(shù)據(jù)的同時,應(yīng)用邏輯B可能正在寫入數(shù)據(jù),應(yīng)用邏輯A就可能讀到不一致的數(shù)據(jù),也就是臟讀。為了解決上述出現(xiàn)的問題,實現(xiàn)并發(fā)控制,大家想到最簡單的方法便是加鎖,讓所有讀數(shù)據(jù)的應(yīng)用程序等待寫數(shù)據(jù)的應(yīng)用程序工作完成,這相當(dāng)于串行工作,效率非常低。現(xiàn)在大多數(shù)據(jù)庫實現(xiàn)的是MVCC(Multi-Version Concurrency Control,多版本并發(fā)控制機(jī)制),基本思想是通過對同一份數(shù)據(jù)保持多版本來并發(fā)問題,在不加鎖的情況下,實現(xiàn)讀與寫事務(wù)完成隔離。具體機(jī)制是:

l當(dāng)應(yīng)用邏輯需要讀取或更新數(shù)據(jù)時,數(shù)據(jù)庫會創(chuàng)建該數(shù)據(jù)的快照,數(shù)據(jù)庫中存在同一份數(shù)據(jù)的多個版本。

l每個應(yīng)用邏輯擁有一份獨(dú)立快照,數(shù)據(jù)更新在沒有完全提交之前,其他應(yīng)用邏輯不可見。

l數(shù)據(jù)庫會定期清理舊版本數(shù)據(jù),以最新版本數(shù)據(jù)替換主數(shù)據(jù)。

l數(shù)據(jù)庫讀通過timestamp 或 transaction id 來標(biāo)識數(shù)據(jù)最新的版本。

但如果是多個寫事務(wù)并發(fā),則有可能發(fā)生沖突,可通過樂觀鎖來解決。

同時,我們從第一部分分析OpenDaylight能力需求中可以看出,OpenDaylight內(nèi)存數(shù)據(jù)庫DataStore需要具備高并發(fā)、高性能的能力,DataStore同樣實現(xiàn)了MVCC。如果對MVCC感興趣,可以閱讀《數(shù)據(jù)庫村的旺財和小強(qiáng)》。

2.2.2 如何實現(xiàn)高可靠?

DataStore作為內(nèi)存數(shù)據(jù)庫,在遇到突然斷電或系統(tǒng)宕機(jī)的情況,將會是毀滅性的。因此,需要定時將數(shù)據(jù)保存到硬盤里面,也就是要做持久化的操作。

DataStore持久化的實現(xiàn)機(jī)制是在控制器啟動時對其創(chuàng)建快照,并在后續(xù)操作過程記錄日志。我們查看控制器的部署目錄,snapshots目錄用來保存快照,而journal目錄用來操作日志信息,如下圖所示:

圖片

現(xiàn)在我們將snapshots和journal目錄中的文件刪除掉,然后重啟OpenDaylight控制器,觀察目錄中又重新生成對應(yīng)的文件:

圖片

當(dāng)發(fā)生斷電或宕機(jī)等情況后,將取這兩個目錄的文件,恢復(fù)內(nèi)存數(shù)據(jù)庫。

事實上,上述實現(xiàn)是EV(Event Sourcing,事件溯源)思想的實現(xiàn),下面我們大致介紹下EV:生活中最常見的例子就是電信運(yùn)營商業(yè)務(wù)中的繳費(fèi)、扣費(fèi)、調(diào)賬、轉(zhuǎn)賬以及退款等業(yè)務(wù)流程,BOSS系統(tǒng)中會記錄每一筆交易發(fā)生的詳細(xì)信息,從而能夠得到某個時間點(diǎn)用戶的“錢”是多少。因此,EV也就是將數(shù)據(jù)的增刪改查每一操作都按照順序記錄,順次保存在日志文件中,如果想回到某個時間點(diǎn)的狀態(tài),則可以順次回放就可以了。

具體到DataStore內(nèi)存數(shù)據(jù)庫,將多個操作封裝到一個事務(wù)中,并生成本次事務(wù)的操作樹,持久化時按照操作日志的順序記錄下來就可以了。

2.2.3 如何實現(xiàn)高性能?

面對海量數(shù)據(jù),數(shù)據(jù)庫系統(tǒng)采用分庫、分表、分區(qū)、分片等手段來實現(xiàn)高性能,DataStore使用了分片(Sharding)技術(shù)。

YANG建模的DataStore是一個樹型結(jié)構(gòu)。一個分片就是一個子樹。子樹之間如果存在包含關(guān)系,則被包含的子樹作為一個獨(dú)立的分片,事實上是從根節(jié)點(diǎn)按照最長路徑匹配其父路徑所指定的分片。整個大樹是Default分片,Shard1作為一個新分片后,Default分片將不包含Shard1部分的數(shù)據(jù),其分片類同。當(dāng)啟用集群后,一個分片可以位于多臺機(jī)器上。如下圖所示:

圖片

2.3DataStore如何訪問?

MD-SAL中使用DataBroker訪問DataStore:

圖片

具體的訪問方式如下所示:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 路由
    +關(guān)注

    關(guān)注

    0

    文章

    278

    瀏覽量

    41946
  • 廣域網(wǎng)
    +關(guān)注

    關(guān)注

    1

    文章

    246

    瀏覽量

    21871
  • sdn
    sdn
    +關(guān)注

    關(guān)注

    3

    文章

    254

    瀏覽量

    44877
收藏 人收藏

    評論

    相關(guān)推薦

    718.如何利用HomeAssistant,讓你的閑置樹莓派成為智能控?

    控系統(tǒng)樹莓派
    小凡
    發(fā)布于 :2022年10月05日 01:53:42

    汽車車身控制與舒適性系統(tǒng)檢修:控門鎖系統(tǒng)故障診斷和排除#汽車維修

    汽車電子控系統(tǒng)
    學(xué)習(xí)電子
    發(fā)布于 :2022年11月20日 15:16:47

    別克君越控開關(guān)失靈,什么情況怎么解決

    開關(guān)
    YS YYDS
    發(fā)布于 :2023年06月23日 00:38:57

    TP-EIQ-BRING-YOUR-OWN-DATA-BYOD沒有名為“deepview”的模塊是怎么回事?

    我們正在嘗試借助 TP-EIQ-BRING-YOUR-OWN-DATA-BYOD 文檔給出的說明使用自己的數(shù)據(jù)集創(chuàng)建 eiq 項目,如下所示。 我們創(chuàng)建了一個 notebook 中提
    發(fā)表于 03-17 07:25

    Vmware OVA 6.7模板導(dǎo)入6.5報錯模塊Nvman”打開電源失敗處理方法

    content library and getting the above error?Go into the OVA’s VMX file and delete the NVRam line.Browse to the datastore that vm is located Go into th
    發(fā)表于 01-10 15:12 ?0次下載
    Vmware OVA 6.7模板導(dǎo)入6.5報錯模塊Nvman”打開電源失敗處理方法

    OpenDaylight軟件定義網(wǎng)絡(luò)框架

    ./oschina_soft/controller.zip
    發(fā)表于 05-13 10:51 ?3次下載
    <b class='flag-5'>OpenDaylight</b>軟件定義網(wǎng)絡(luò)框架

    如何從零開始學(xué)OpenDaylight

    OpenDaylight的邏輯架構(gòu)分為應(yīng)用層、控制器層和數(shù)據(jù)轉(zhuǎn)發(fā)層。其中,應(yīng)用層聚焦網(wǎng)絡(luò)業(yè)務(wù)邏輯開發(fā),負(fù)責(zé)資源編排;控制器層進(jìn)行全局網(wǎng)絡(luò)的管理;數(shù)據(jù)轉(zhuǎn)發(fā)層為各種網(wǎng)絡(luò)設(shè)備,負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā)。
    的頭像 發(fā)表于 02-14 14:04 ?2371次閱讀
    如何從零開始學(xué)<b class='flag-5'>OpenDaylight</b>

    OpenDaylight的運(yùn)行環(huán)境

    OpenDaylight作為一種開源的SDN控制器,使用Java語言編寫,
    的頭像 發(fā)表于 02-14 14:08 ?915次閱讀
    <b class='flag-5'>OpenDaylight</b>的運(yùn)行環(huán)境

    OpenDaylight的示例

    對于External System來說,我們在介紹基于REST API編程時再進(jìn)行介紹。
    的頭像 發(fā)表于 02-14 14:11 ?746次閱讀
    <b class='flag-5'>OpenDaylight</b>的示例

    什么是OpenDaylight的Maven

    構(gòu)建的實質(zhì)是將我們編寫的Java源文件、XML配置文件、HTML頁面、CSS和JS文件等,通過某種方式組合在一起,變?yōu)榭蓪ν夥?wù)項目的過程。同時,構(gòu)建過程很多都是沒有技術(shù)含量且重復(fù)的工作,手工操作很無趣且太麻煩。
    的頭像 發(fā)表于 02-14 15:02 ?1101次閱讀
    什么是<b class='flag-5'>OpenDaylight</b>的Maven

    OpenDaylight的OSGi

    從寫單個類的打印Hello World小程序到OSGi模塊化開發(fā),確實存在較大的難度,本文將從模塊化、OSGI模型以及OSGI在OpenDaylight的應(yīng)用等方面進(jìn)行介紹。
    的頭像 發(fā)表于 02-14 15:05 ?824次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的OSGi

    OpenDaylight的Karaf

    Karaf是一個現(xiàn)代的、多種形態(tài)的(polymorphic),輕量的、強(qiáng)大的、經(jīng)過OSGI認(rèn)證的企業(yè)級容器。這里的多種形態(tài)指的是它能夠容納各種應(yīng)用,諸如OSGi、Spring、war等等。單從OSGi的角度來說,Karaf是OSGI的容器實例,類似tomcat是Servlet的容器實例一樣。
    的頭像 發(fā)表于 02-14 15:08 ?1812次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的Karaf

    OpenDaylight的YANG

    YANG是和NETCONF相伴而生的,而NETCONF作為網(wǎng)絡(luò)管理協(xié)議,包含安全傳輸層、消息層、操作層和內(nèi)容層,其中內(nèi)容層沒有標(biāo)準(zhǔn)化,操作層允許自定義RPC,而這兩者的標(biāo)準(zhǔn)化建模就是由YANG來完成的。
    的頭像 發(fā)表于 02-14 15:10 ?1822次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的YANG

    OpenDaylight的RPC &amp; Notification是什么

    我們將介紹RPC和Notification,并從進(jìn)程內(nèi)外的通信開始,著重介紹遠(yuǎn)程過程調(diào)用和發(fā)布-訂閱機(jī)制,然后分析MD-SAL的通信交互過程。
    的頭像 發(fā)表于 02-14 15:15 ?1011次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的RPC &amp; Notification是什么

    OpenDaylight的MD-SAL是什么

    一般情況下,軟件系統(tǒng)的研發(fā)分為需求獲取與分析、架構(gòu)設(shè)計、代碼實現(xiàn)、系統(tǒng)發(fā)布、上線等階段。其中,架構(gòu)設(shè)計可以細(xì)分為架構(gòu)需求、分析、設(shè)計、文檔化、評審、修改和實現(xiàn)等過程,我們以簡化歸一,描述為:提供UI界面和消息接口服務(wù),UI選擇B\S架構(gòu)風(fēng)格,消息可以是REST、SOAP以及AMQP等類型,數(shù)據(jù)庫采用關(guān)系型數(shù)據(jù)庫
    的頭像 發(fā)表于 02-14 15:17 ?1201次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的MD-SAL是什么