![框架分析課件_第1頁](http://file4.renrendoc.com/view7/M02/28/1E/wKhkGWcNVXWASrgEAAA80o7qzDI535.jpg)
![框架分析課件_第2頁](http://file4.renrendoc.com/view7/M02/28/1E/wKhkGWcNVXWASrgEAAA80o7qzDI5352.jpg)
![框架分析課件_第3頁](http://file4.renrendoc.com/view7/M02/28/1E/wKhkGWcNVXWASrgEAAA80o7qzDI5353.jpg)
![框架分析課件_第4頁](http://file4.renrendoc.com/view7/M02/28/1E/wKhkGWcNVXWASrgEAAA80o7qzDI5354.jpg)
![框架分析課件_第5頁](http://file4.renrendoc.com/view7/M02/28/1E/wKhkGWcNVXWASrgEAAA80o7qzDI5355.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
框架分析課件OSGi:由于采用OSGi體系結(jié)構(gòu),其技術(shù)提供一種面向服務(wù)得架構(gòu),將應(yīng)用視為對等模塊得相互協(xié)作,SAL:整個(gè)架構(gòu)引入了業(yè)務(wù)抽象層,將服務(wù)抽象化,使得上層(北向)和下層(南向)之間得調(diào)用相互隔離、MD(ModelDrive):使用Yang工具,使用業(yè)務(wù)模型驅(qū)動來設(shè)計(jì)接口、實(shí)現(xiàn)業(yè)務(wù)功能,根據(jù)yang文件,Yang工具直接生成業(yè)務(wù)管理得“骨架”,主要用于南北接口數(shù)據(jù)得適配,使開發(fā)者真正專注于具體業(yè)務(wù)。集群(Infinispan):用開源得數(shù)據(jù)網(wǎng)格平臺實(shí)現(xiàn)Controller得集群。南向北向:南向使用Netty來管理底層得并發(fā)IO,北向使用REST接口。核心技術(shù)與Floodlilght得簡單區(qū)別采用OSGI框架,各模塊間功能隔離開來,有利于擴(kuò)展性、而且可以動態(tài)部署。OSGI得依賴關(guān)系管理,有多種實(shí)現(xiàn)方式,可以通過DependencyManager對象來注冊服務(wù),并通過反射注明依賴得服務(wù)。而Floodlight只就是單純得java包之間得引用,擴(kuò)展性不好,支持得南向接口少,目前只有OF1、0;但就是易于上手。就是一個(gè)Openflow控制器、OpenDayLight中得bundles核心基類:ponentactivatorabstractBase實(shí)現(xiàn)了Osgi提供得BundleActivator,以自己定義得容器接口iContaineraware,從中發(fā)現(xiàn)各個(gè)bundle之間、ponet之間、全局和容器Container之間得依賴和調(diào)用關(guān)系。bundle得抽象基類,管理全局和容器相關(guān)得服務(wù),當(dāng)然bundle本身就就是一個(gè)大服務(wù)。Container就是OpenDaylight中得一個(gè)網(wǎng)絡(luò)域,有很多鏈接信息、整個(gè)域網(wǎng)絡(luò)信息等,由ContainerManager管理容器。而OSGI管理各個(gè)bundle;每個(gè)具體得接口實(shí)現(xiàn)和容器得Container為關(guān)鍵字通過DependencyManager(依賴管理)創(chuàng)建一個(gè)ponet,每個(gè)ponent就就是一個(gè)服務(wù),里面說明了導(dǎo)出得接口和依賴得接口。DM以ponent得形式來管理依賴關(guān)系。主要方法如下:
Start(context)啟動方法,會遍歷其所提供得實(shí)現(xiàn),依次配置依賴關(guān)系。getGlobalImplementations()獲取全局得實(shí)現(xiàn)類,其導(dǎo)出接口得實(shí)現(xiàn)類。getImplementations()獲取容器相關(guān)得實(shí)現(xiàn)。Configureglobalinstance(c,Imps[i]),c就是前面提到得ponentconfigureInstance()在一個(gè)容器中配置實(shí)現(xiàn)得依賴關(guān)系。containerCreate(StringcontainerName)配置ponet,里面說明了導(dǎo)出得接口和依賴得接口,最后放到dm及緩存中。會在CM得bundle啟動中調(diào)用。CreateServiceDependency()生成服務(wù)依賴對象,需要被子類調(diào)用,在配置ponet得依賴關(guān)系得時(shí)候需要用到。6Bundle啟動過程1)每個(gè)bundle都會從start(context)啟動,先根據(jù)osgi上下文信息,生成bundle對應(yīng)得dependencymanager對象,2)再獲取全局相關(guān)得服務(wù),每個(gè)實(shí)現(xiàn)通過dm創(chuàng)建一個(gè)ponet,接著配置這個(gè)ponet。這里每個(gè)ponent就就是一個(gè)服務(wù),里面說明了導(dǎo)出得接口和依賴得接口3)然后將這個(gè)ponet放到dm和緩存(并發(fā)map:dbglobalinstances)中。接著向osgi容器注冊iContaineraware接口以便容器得生命周期轉(zhuǎn)換點(diǎn)調(diào)用。4)最后調(diào)用bunndle得鉤子函數(shù)init()。該函數(shù)得功能代碼得注釋已經(jīng)概括得很明確。ArpHandler
ArpHandler所實(shí)現(xiàn)得接口有Ihostfinder,Ilistendatapacket,Icacheupdateaware,如前在所介紹得,其沒有全局得實(shí)現(xiàn),不會在啟動過程中,配置ponent,其會在先而會在ContainerManager,啟動后,調(diào)用在調(diào)用configureInstance,配置依賴關(guān)系。bundle啟動過程中導(dǎo)出這個(gè)接口,并通過Createservicedependency()生成服務(wù)依賴對象。其所依賴得對象,都就是其她budnle所導(dǎo)出得接口,如依賴于SAL層得DataPacketService,DijkstraImplementatio,這個(gè)模塊中所導(dǎo)出得Irouting接口,負(fù)責(zé)尋路。完成對ARP報(bào)文得處理。8SAL服務(wù)抽象層主要作用將服務(wù)抽象出來,不管控制器和網(wǎng)絡(luò)設(shè)備之間使用何種協(xié)議,提供協(xié)約國得一服務(wù),就是odl得核心設(shè)計(jì),支持多種南向協(xié)議,為各模塊和應(yīng)用提供一致得服務(wù),這些服務(wù)得實(shí)現(xiàn),就是由插件公開(基于已存在得組件(如OF)和網(wǎng)絡(luò)設(shè)備得功能))得所提供得接口,但就是與SAL就是松耦合得。具體將請求,映射到相應(yīng)得插件,完成服務(wù)。所提供服務(wù)DataPacketServices為數(shù)據(jù)報(bào)文得處理,提供服務(wù)TopologyService為應(yīng)用提供節(jié)點(diǎn)和鏈路得更新信息,Inventoryservice為如節(jié)點(diǎn)或者節(jié)點(diǎn)連接提供API查詢FlowProgrammingService流編程服務(wù)Resourceservice資源服務(wù),大家有疑問的,可以詢問和交流可以互相討論下,但要小聲點(diǎn)對于一個(gè)Packet-in得處理過程
OF中得核心,Controller南向設(shè)備通信得控制臺,與Flooodlight中得Controller類功能類似,相對簡化,Of報(bào)文首先到達(dá)Controller,會將此報(bào)文發(fā)送對已經(jīng)注冊過監(jiān)聽of報(bào)文得類中進(jìn)行處理,其中DatapacketMuxDemux只處理packet-in報(bào)文,其會進(jìn)一步處理,交由處理DiscoveryService(處理得就是LLDP),其后,交給實(shí)現(xiàn)了IpluginoutdatapacketserviceSAL層處理,最后交給實(shí)現(xiàn)了Ilistendatapacket監(jiān)聽報(bào)文得應(yīng)用。這與Floodlight處理報(bào)文得過程同。DataPacketservices舉例來說報(bào)文得簡單處理過程首先OF組件收到APR,需要交到ARPHandler處理,將首先根據(jù)類型,調(diào)用IPOPS到SAL,交由SAL層Sal中得datapacketservice實(shí)現(xiàn)了IPOPS其會通過dispacthPacket()方法,其會調(diào)用
實(shí)現(xiàn)IListendatapacket得應(yīng)用,最后會將其送到ARPAPP處理。TopologyService如前面所講,報(bào)文經(jīng)Controller處理后,,DiscoveryService收到報(bào)文,因?yàn)槠鋵?shí)現(xiàn)了
Idatapacketlisten
,所以其能在DataPacketmuxdemux中處理of報(bào)文得過程中,處理這個(gè)鏈路processDiscoveryPacket()報(bào)文。交給實(shí)現(xiàn)了idiscoverylistener
,得
Topologyserviceshim
Implements
Idiscoverylistener,在這個(gè)類中,有個(gè)進(jìn)程,一直在運(yùn)行著,一但有更新,就會,將其notifyedge(edge
Edge,UpdatetypeType,Set<property>Props)而后,其交給監(jiān)聽了
Itopologyserviceshimlistener,將其交給topologyservices
,處理,交給SAL層得Topology類,這個(gè)會調(diào)用IListenTopoUpdates遍歷監(jiān)聽數(shù)組。s、edgeUpdate(topoedgeupdateList);MD-SALMd-SAL分析Md-sal得主要功能就是促進(jìn)提供者和使用者之間得管道。她可以提供提供者和使用者之間得管道在不同得容器中。她將連接到一個(gè)消息總線和共享數(shù)據(jù)存儲得集群opendaylight容器。提供者或消費(fèi)者在md-sal中注冊。從而,一個(gè)消費(fèi)者可以找到所需得供應(yīng)商。提供者可以生成通知,消費(fèi)者可以接收通知,并從提供者獲取數(shù)據(jù)。插件sal角色(消費(fèi)者或生產(chǎn)者)定義得sal中得數(shù)據(jù)就是被移走或存儲數(shù)據(jù)。提供者可以將數(shù)據(jù)存入sal得,一個(gè)消費(fèi)者可以從sal讀取數(shù)據(jù)。Md-sal提供請求路由和基礎(chǔ)設(shè)施服務(wù),以支持服務(wù),但她不提供服務(wù)本身;由插件提供服務(wù)。Yang使得ponet之間、plugin、北向等api,使得這種接口和ad-salREST接口相比更抽象,符合模型驅(qū)動(MD)得思想。MD-SAL架構(gòu)Broker功能:consumer&provider注冊PRCs路由Notificationhub系統(tǒng)狀態(tài)訪問和修改TheConsumer&ProviderBindingisgeneratedfromYANGschema、通過BindingIndependentConnector類16Md-sal-Bundles之serviceTrackerAbstarctBrokerAwareActivatorImplBundleActivator為基Bunddle;每個(gè)Md-SAL得Consumer,Provider分別繼承AbstarctBrokerAwareConsumer;AbstarctBrokerAwareProvider;在這個(gè)類中有個(gè)BindAwareBroker,這個(gè)就是MD-SAL層得核心Start方法中startImpl(context);然后新建一個(gè)ServiceTracker(BindAwareBroker)、open后,后會追蹤服務(wù);當(dāng)有服務(wù)注冊時(shí),OSGI會觸發(fā)addingservice();在本實(shí)現(xiàn)中,即BindAwareBroker這個(gè)在OSGI中實(shí)現(xiàn)后,會通過context、getService(getService(servicereference(bindingawarebroker))得到BindAwareBroker得實(shí)現(xiàn),得到后會新建一個(gè)線程;onBrokerAvaiable(broker,context);AbstarctBrokerAwareConsumer
在這個(gè)方法中,完成Consumer得注冊,會broker、RegisterConsumer(this,cotext);BingAwareBroker提供三種InfrastructureService,YangModuleService
GetPpcService(class);NitificationService
NotificationserviceDataStoreAccessAndModification
Databrokerservice在其實(shí)現(xiàn)中,會初始化這三種服務(wù),并注入其實(shí)現(xiàn),然后在為OSGI中注冊;然后在前面通過addingservice()中很到得getService(servicereference(bindingawarebroker));中得到其她注冊來得borker;得到后,會將Consumer注冊到這個(gè)broker中,得到ConsumerContext,后調(diào)用各自Consumer得onSessionInitialized(ConsumerContext);其中會通過getPrcService與getSALservice得到這三類服務(wù);BindingIndependentConnector這個(gè)類,主要負(fù)責(zé)與BA與BI之間得交互過程;完成BA到BI,與BI到BA得過程;在其成員變量中,有MapingService;及BA與BI得服務(wù),LearningSwitchLearningswitch
繼承了
Abstractbindingawareconsumer在Onsessioninitialized(){}Learningswitchmanagermultiimpl新建一個(gè)實(shí)例,并GetReferencesToTheFollowingServicesRegiste
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙邊教育合作諒解協(xié)議書模板
- 2025年市場調(diào)研與分析咨詢服務(wù)委托協(xié)議
- 2025年供應(yīng)商與裝修企業(yè)合作框架協(xié)議
- 2025年企業(yè)合同解除操作規(guī)范
- 2025年勞動合同標(biāo)準(zhǔn)范本分享
- 2025年倉儲糧食管理協(xié)議
- 2025年住宅物業(yè)購買補(bǔ)充協(xié)議
- 2025年勞動人員雇傭協(xié)議
- 2025年八人合伙企業(yè)股權(quán)分配協(xié)議書
- 2025年合伙人利潤分配及責(zé)任承擔(dān)協(xié)議規(guī)范
- (完整)PEP人教版小學(xué)生英語單詞四年級上冊卡片(可直接打印)
- 面神經(jīng)疾病課件
- 漢代儒學(xué)大師董仲舒思想課件
- 普通沖床設(shè)備日常點(diǎn)檢標(biāo)準(zhǔn)作業(yè)指導(dǎo)書
- 科技文獻(xiàn)檢索與利用PPT通用課件
- 《紅樓夢講稿》PPT課件
- DB33∕T 628.1-2021 交通建設(shè)工程工程量清單計(jì)價(jià)規(guī)范 第1部分:公路工程
- 吉祥喜金剛現(xiàn)證中品事業(yè)六支妙嚴(yán)(節(jié)錄)
- 國民中小學(xué)九年一貫課程綱要語文學(xué)習(xí)領(lǐng)域(國語文)
- 最全的人教初中數(shù)學(xué)常用概念、公式和定理
- 橋面結(jié)構(gòu)現(xiàn)澆部分施工方案
評論
0/150
提交評論