色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenDaylight中的RPC & Notification是什么

汽車電子技術 ? 來源:碼農與軟件時代 ? 作者:碼農與軟件時代 ? 2023-02-14 15:15 ? 次閱讀

本篇作為MD-SAL核心內容的第三篇,我們將介紹RPC和Notification,并從進程內外的通信開始,著重介紹遠程過程調用和發布-訂閱機制,然后分析MD-SAL的通信交互過程。

圖片

圖片來自網絡

一、通信基礎

我們在編寫單體程序的代碼時,通常關注的是類和類之間關系的設計、類內的方法以及方法間的調用關系。在跨系統調用時,我們通常需要關注系統調用的接口,并根據接口文檔進行編程,此時,涉及到跨系統、跨進程的調用。有關進程內外的通信分類大致如下:

圖片

單體程序代碼通常是進程內通信,也就是本地過程調用,在同一CPU、同一內存空間進行。進程間通信最原始的莫過于Socket通信,但寫起來相對于比較麻煩,人們希望能夠“簡單地”編程,后來基于“如何實現分布式計算的編程?”這一課題,在論文《Implementing Remote Procedure Calls》中給出了方案,即“調用遠程機器上的程序就像在本地機器的地址空間中一樣。隱藏分布式環境重要的部分:對參數和結果的編解碼、消息傳遞以及保留過程調用的語義”,提出了RPC的解決方案。

間接通信的本質是“中介者”通信,是一種“間接”通信。它使得發送者和接收者不需要知道彼此的身份,并且不需要兩者同時在線,一方不在線的情況下也可以通信,實現了空間上和時間上的解耦。間接通信比較流行的技術有:

l發布-訂閱系統:“中介者”;

l消息隊列系統:發送者發送消息到隊列中,接收者從隊列中提取消息。

1.遠程過程調用RPC

1.1基礎

RPC系統由User、User-stub、RPCRuntime、Server-stub和Server等5部分組成。其中,User、User-stub和RPCRuntime的實例在Caller machine上執行;Server、Server-stub和RPCRuntime實例在Callee machine上執行。簡單調用的交互過程:

①User發起一個遠程調用,則調用user-stub;

②user-stub負責封裝方法和參數放置,并放置到一個或多個包中,然后請求RPCRuntime;

③RPCRuntime將這些包可靠地傳輸給被調用者機器,同時,調用進程被掛起并等待結果包的返回;

④Server的RPCRuntime將包傳送給Server-stub;

⑤Server-stub解包,并本地調用會調用Server中相對應的程序邏輯;

⑥Server的邏輯執行完成,則將結果返回給Server-stub打包;

⑦Server-stub將結果傳給RPCRuntime;

⑧Server的RPCRuntime將包將被傳送回給User machine;

⑨User machine進行解包,User得到返回結果。

圖片

1.2 RPC框架

圖片

2.發布-訂閱(publish-subscribe)

我們通過發布訂閱的一個開源實現Kafka來講述發布-訂閱機制。Kafka是一種高吞吐量的分布式發布訂閱消息系統。如下圖所示,producer發布消息,consumer從消息隊列中獲取消息,broker用來接收發送的消息并將這些消息路由至隊列中。生產者將數據發布到他們選擇的主題。 生產者負責選擇分配給主題中哪個分區的記錄。

圖片

而消息是由Topic(主題)的形式組織起來的,一個Topic可以有0、1或多個consumer訂閱。對于每個Topic,又可分為多個Partition(分區)。每個分區都是一個有序的,不可變的序列。 如下所示:

圖片

Partition中的每個記錄都分配了一個稱為偏移的順序ID號,它唯一地標識每個記錄。如下所示:

圖片

二、 MD-SAL ** RPC**

2.1.RPC定義

RPC采用YANG語言建模,使用“rpc”語句建模。我們以OpenDaylight示例-Toaster為例介紹:rpc make-toast定義RPC操作的方法名、input用于定義RPC操作的輸入參數、output用于定義RPC操作的輸出參數。如下圖所示:

圖片

2.2.代碼編寫

1.生成代碼

YANG文件定義好之后,我們執行命令:mvn clean install,可自動生成:

l ToasterService:接口文件,定義與yang數據模型定義的RPC方法;

l MakeToastInput:提供make-toast調用的輸入參數。

l MakeToastInputBuilder:用于創建MakeToastInput實例的具體類。

2.實現接口

編寫OpenDaylightToaster實現ToasterService接口,添加makeToast函數代碼。

圖片

3. 注冊RPC服務

使用blueprint注冊RPC服務。

圖片

  1. 調用makeToast服務

我們可以使用POSTMAN測試工具,或者編寫應用APP調用makeToast函數,調用的請求為:

請求方法:POST

URL地址:http://localhost:8080/restconf/operations/toaster:make-toast

請求Body體:

圖片

2.3 小結

從RPC的定義和代碼編寫不難看出,RPC的定義通過YANG語言來建模,RPC的訪問可以通過RESTCONF協議進行,RPC的提供者通過blueprint來注冊RPC服務。

三、MD-SAL Notification

3.1.Notification定義

在支持NETCONF協議的網絡中,網絡設備使用Notification消息向網絡監控發送通知事件以說明網絡設備的某種狀態。OpenDaylight也采用了Notification消息通知,它被設計為一種發布/訂閱模式。同樣,我們以OpenDaylight示例Toaster來說明該機制。

在示例Toaster中,烤面包機不僅能烤面包,還能在沒有面包的情況下,發送一個toasterOutOfBread通知,告知消費者現已無面包可烤。我們在YANG文件中定義這個通知,如下圖所示:

圖片

3.2.代碼編寫

1.生成代碼

YANG文件定義好之后,我們執行命令:mvn clean install,可自動生成:

l ToasterOutOfBread:為toasterOutOfBread通知定義DTO接口。

l ToasterOutOfBreadBuild:用于創建ToasterOutOfBread實例的具體類。

l ToasterListener:實現烤面包機通知消費者的接口,定義每種通知類型的接收方法。

2.生產者實現通知

圖片

3.生產者實現配置

OpenDaylightToaster需要訪問MD-SAL的NotificationPublishService才能發送通知。 我們需要在blueprint文件中注入OpenDaylightToaster:

圖片

4.消息者實現

我們來看下如何從控制器中以編程方式訪問ToasterService,實現消費者KitchenService。示例中采用了“硬編碼”的方式。如下所示:

圖片

接下來,我們修改KitchenServiceImpl以實現ToasterListener接口和通知方法。

圖片

KitchenServiceImpl需要在MD-SAL的NotificationPublishService中注冊才能接收通知。 我們需要配置blueprint文件:

圖片

這樣就可以OpenDaylightToaster在發生OutOfBread事件時發送通知。

圖片

3.3 小結

Notification采用的是發布訂閱機制,本例中生產者為OpenDaylightToaster,消費者為KitchenServiceImpl,中間代理為MD-SAL,具體為YANG和NotificationPublishService。如下圖所示:

圖片

ToasterService接口通過YANG模型構建自動生成,OpenDaylightToaster是該接口的一個具體實現,通過blueprint實現關系的綁定。KitchenService理應采用YANG模型構建,但示例中采用的是硬編碼的形式,在KitchenServiceImpl中直接聲明ToasterService對象,如圖中的①和①ɑ所示。無論是生產者還是消費者,都需要NotificationPublishService來進行消息的發布和訂閱。

四、總結

文章寫到這里,就將YANG、DataStore、RPC和Notification這3個在MD-SAL中非常重要的點講述完了,在支持NETCONF協議配置的網絡,還涉及到需要將網絡設備的Yang文件mount到控制器以實現基于NETCONF的控制。下一篇我們將MD-SAL的各個點串聯起來,形成一條線。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6024

    瀏覽量

    135950
  • RPC
    RPC
    +關注

    關注

    0

    文章

    111

    瀏覽量

    11529
  • sal
    sal
    +關注

    關注

    0

    文章

    2

    瀏覽量

    2488
收藏 人收藏

    評論

    相關推薦

    synopsys&Mentor設計流程

    synopsys & Mentor 設計流程免費下載。
    發表于 07-08 11:37 ?72次下載

    R&S SMB100B射頻信號發生器的特點性能及應用分析

    R&S?SMB100B 在端領域的頻譜純度和輸出功率方面樹立了全新標桿。這些特性全面集成到輕量緊湊的儀器
    發表于 12-08 09:55 ?1489次閱讀

    R&S FSL6臺式信號分析儀的功能特點及應用范圍

    R&S?FSL 是一款多功能而且經濟實用的信號分析儀。R&S?FSL全系列標配28MHz的信號解調帶寬,遠高于其他同類產品。無論是頻譜、噪聲系數、ACL
    發表于 12-09 09:46 ?1277次閱讀

    歐拉 Summit 2021 安全&可靠性&運維專場:主流備份技術探討

    在openEuler Summit 2021 安全&可靠性&運維專場上,高沖對為數據安全而生,統信軟件備份還原工具分享。
    的頭像 發表于 11-10 17:42 ?1798次閱讀
    歐拉 Summit 2021 安全&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;可靠性&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;運維專場:主流備份技術探討

    單片機STC15雙機通信&amp;異步串行通信&amp;Proteus

    ?●原理圖?●Method??●Method 1這道例題是來自丁向榮老師的《單片微機原理與接口技術》上的演示例題。同時,也給出了代碼,同時在老師的網課也進行了演示,代碼如下:#include&amp;lt;STC15.H&amp
    發表于 11-18 14:36 ?13次下載
    單片機STC15雙機通信&<b class='flag-5'>amp</b>;異步串行通信&<b class='flag-5'>amp</b>;Proteus

    單片機STC15雙機通信&amp;異步串行通信&amp;Proteus

    ?●原理圖?●Method??●Method 1這道例題是來自丁向榮老師的《單片微機原理與接口技術》上的演示例題。同時,也給出了代碼,同時在老師的網課也進行了演示,代碼如下:#include&amp;lt;STC15.H&amp
    發表于 11-18 14:51 ?40次下載
    單片機STC15雙機通信&<b class='flag-5'>amp</b>;異步串行通信&<b class='flag-5'>amp</b>;Proteus

    存儲類&amp;作用域&amp;生命周期&amp;鏈接屬性

    目錄前言一、存儲類&amp;amp;作用域&amp;amp;生命周期&amp;amp;鏈接屬性的
    發表于 12-09 15:51 ?5次下載
    存儲類&<b class='flag-5'>amp</b>;作用域&<b class='flag-5'>amp</b>;生命周期&<b class='flag-5'>amp</b>;鏈接屬性

    如何區分Java的&amp;amp;和&amp;amp;&amp;amp;

    首先給i賦值為0,如果i大于10,并且i++等于1,則輸出“錯誤”和i的值。否則輸出“正確”和i的值。分別用&amp;和&amp;&amp;運行,觀察運行結果的不同。
    的頭像 發表于 02-24 10:46 ?1534次閱讀
    如何區分Java<b class='flag-5'>中</b>的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;和&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;

    if(a==1 &amp;amp;&amp;amp; a==2 &amp;amp;&amp;amp; a==3),為true,你敢信?

    接下來咱們來嘗試解決這個問題。假設 if(a==1&amp;&amp;a==12)是等于 true的,那么a肯定不可能是一個“普通的變量”。它勢必要有能力在執行的時候能夠動態改動值。
    的頭像 發表于 05-08 11:01 ?1106次閱讀
    if(a==1 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==2 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==3),為true,你敢信?

    HarmonyOS &amp;amp;amp;amp;潤和HiSpark 實戰開發,“碼”上評選活動,邀您來賽!!!

    出色的系統 助力優秀的設備 為應用開發者帶來豐富的體驗與想象空間 正如當HarmonyOS遇見潤和HiSpark 這萬物互聯的時代 將由你的&amp;lt; 代碼 &amp;gt;來定義 潤
    的頭像 發表于 04-11 15:33 ?1165次閱讀
    HarmonyOS &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;潤和HiSpark 實戰開發,“碼”上評選活動,邀您來賽!!!

    你使用shell腳本的2&amp;gt;&amp;amp;1了嗎?

    run_cmax > ./starrc_cmax.logs 2>&amp;1的 2>&amp;1是啥意思?
    的頭像 發表于 07-30 14:44 ?1906次閱讀

    攝像機&amp;amp;amp;雷達對車輛駕駛的輔助

    攝像機&amp;amp;雷達擔負著可輔助駕駛員安全駕駛的、高級駕駛輔助系統的傳感功能。尼得科正在進一步推進攝像機&amp;amp;雷達的高性能化進程。
    的頭像 發表于 11-26 10:02 ?903次閱讀
    攝像機&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;雷達對車輛駕駛的輔助

    FS201資料(pcb &amp;amp; DEMO &amp;amp; 原理圖)

    電子發燒友網站提供《FS201資料(pcb &amp; DEMO &amp; 原理圖).zip》資料免費下載
    發表于 07-16 11:24 ?0次下載

    onsemi LV/MV MOSFET 產品介紹 &amp;amp;amp; 行業應用

    01直播介紹直播時間2024/10/281430直播內容1.onsemiLV/MVMOSFET產品優勢&amp;市場地位。2.onsemiLV/MVMOSFETRoadmap。3.onsemiT10
    的頭像 發表于 10-13 08:06 ?382次閱讀
    onsemi LV/MV MOSFET 產品介紹 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; 行業應用

    北美運營商AT&amp;amp;amp;T認證的VoLTE測試項

    北美運營商AT&amp;T的認證測試內容涵蓋了多個方面,以確保設備和服務的質量、兼容性以及用戶體驗。在AT&amp;T的認證測試,VoLTE(VoiceoverLTE)測試項是一個重要的組成部分
    的頭像 發表于 12-06 16:52 ?125次閱讀
    北美運營商AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T認證<b class='flag-5'>中</b>的VoLTE測試項
    主站蜘蛛池模板: 乱奷XXXXXHD| 四虎影5151毛片在线看| 亚洲精品国产AV成人毛片| 999久久国产精品免费人妻| 國產日韓亞洲精品AV| 日本久久久久亚洲中字幕| 自慰弄湿白丝袜| 好吊妞国产欧美日韩视频| 色色色999| 99视频免费在线| 久久亚洲精品成人综合| 亚洲AV永久无码精品老司机蜜桃 | 甜性涩爱快播| gratis videos欧美最新| 久久伊人精品青青草原2021| 亚洲 无码 制服 日韩| 国产成+人+综合+亚洲不卡| 欧美日韩亚洲综合2019| 97超碰在线视频 免费| 精品国产自在现线拍400部| 午夜片神马影院福利| 丰满少妇被猛烈进出69影院| 欧美精品亚洲精品日韩专区一| 在线观看国产精选免费| 韩国女人高潮嗷嗷叫视频| 我的奶头被客人吸的又肿又红| 成人中文字幕在线观看| 欧美hdxxxx| 91福利在线观看| 老外的好大c的我好爽| 伊人久久大香线蕉综合色啪| 国内精品免费视频精选在线观看| 偷窥wc美女毛茸茸视频| 超级碰碰青草久热国产| 欧美日韩在线成人看片a| 97SE亚洲国产综合在线| 麻豆国产自制在线观看| 坠落的丝袜美人妻| 麻豆区蜜芽区| 91区国产福利在线观看午夜| 蜜芽tv在线观看免费网站|