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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

OpenDaylight中的RPC & Notification是什么

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

本篇作為MD-SAL核心內(nèi)容的第三篇,我們將介紹RPC和Notification,并從進(jìn)程內(nèi)外的通信開始,著重介紹遠(yuǎn)程過程調(diào)用和發(fā)布-訂閱機(jī)制,然后分析MD-SAL的通信交互過程。

圖片

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

一、通信基礎(chǔ)

我們在編寫單體程序的代碼時(shí),通常關(guān)注的是類和類之間關(guān)系的設(shè)計(jì)、類內(nèi)的方法以及方法間的調(diào)用關(guān)系。在跨系統(tǒng)調(diào)用時(shí),我們通常需要關(guān)注系統(tǒng)調(diào)用的接口,并根據(jù)接口文檔進(jìn)行編程,此時(shí),涉及到跨系統(tǒng)、跨進(jìn)程的調(diào)用。有關(guān)進(jìn)程內(nèi)外的通信分類大致如下:

圖片

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

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

l發(fā)布-訂閱系統(tǒng):“中介者”;

l消息隊(duì)列系統(tǒng):發(fā)送者發(fā)送消息到隊(duì)列中,接收者從隊(duì)列中提取消息。

1.遠(yuǎn)程過程調(diào)用RPC

1.1基礎(chǔ)

RPC系統(tǒng)由User、User-stub、RPCRuntime、Server-stub和Server等5部分組成。其中,User、User-stub和RPCRuntime的實(shí)例在Caller machine上執(zhí)行;Server、Server-stub和RPCRuntime實(shí)例在Callee machine上執(zhí)行。簡單調(diào)用的交互過程:

①User發(fā)起一個(gè)遠(yuǎn)程調(diào)用,則調(diào)用user-stub;

②user-stub負(fù)責(zé)封裝方法和參數(shù)放置,并放置到一個(gè)或多個(gè)包中,然后請求RPCRuntime;

③RPCRuntime將這些包可靠地傳輸給被調(diào)用者機(jī)器,同時(shí),調(diào)用進(jìn)程被掛起并等待結(jié)果包的返回;

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

⑤Server-stub解包,并本地調(diào)用會調(diào)用Server中相對應(yīng)的程序邏輯;

⑥Server的邏輯執(zhí)行完成,則將結(jié)果返回給Server-stub打包;

⑦Server-stub將結(jié)果傳給RPCRuntime;

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

⑨User machine進(jìn)行解包,User得到返回結(jié)果。

圖片

1.2 RPC框架

圖片

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

我們通過發(fā)布訂閱的一個(gè)開源實(shí)現(xiàn)Kafka來講述發(fā)布-訂閱機(jī)制。Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。如下圖所示,producer發(fā)布消息,consumer從消息隊(duì)列中獲取消息,broker用來接收發(fā)送的消息并將這些消息路由至隊(duì)列中。生產(chǎn)者將數(shù)據(jù)發(fā)布到他們選擇的主題。 生產(chǎn)者負(fù)責(zé)選擇分配給主題中哪個(gè)分區(qū)的記錄。

圖片

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

圖片

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

圖片

二、 MD-SAL ** RPC**

2.1.RPC定義

RPC采用YANG語言建模,使用“rpc”語句建模。我們以O(shè)penDaylight示例-Toaster為例介紹:rpc make-toast定義RPC操作的方法名、input用于定義RPC操作的輸入?yún)?shù)、output用于定義RPC操作的輸出參數(shù)。如下圖所示:

圖片

2.2.代碼編寫

1.生成代碼

YANG文件定義好之后,我們執(zhí)行命令:mvn clean install,可自動(dòng)生成:

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

l MakeToastInput:提供make-toast調(diào)用的輸入?yún)?shù)。

l MakeToastInputBuilder:用于創(chuàng)建MakeToastInput實(shí)例的具體類。

2.實(shí)現(xiàn)接口

編寫OpenDaylightToaster實(shí)現(xiàn)ToasterService接口,添加makeToast函數(shù)代碼。

圖片

3. 注冊RPC服務(wù)

使用blueprint注冊RPC服務(wù)。

圖片

  1. 調(diào)用makeToast服務(wù)

我們可以使用POSTMAN測試工具,或者編寫應(yīng)用APP調(diào)用makeToast函數(shù),調(diào)用的請求為:

請求方法:POST

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

請求Body體:

圖片

2.3 小結(jié)

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

三、MD-SAL Notification

3.1.Notification定義

在支持NETCONF協(xié)議的網(wǎng)絡(luò)中,網(wǎng)絡(luò)設(shè)備使用Notification消息向網(wǎng)絡(luò)監(jiān)控發(fā)送通知事件以說明網(wǎng)絡(luò)設(shè)備的某種狀態(tài)。OpenDaylight也采用了Notification消息通知,它被設(shè)計(jì)為一種發(fā)布/訂閱模式。同樣,我們以O(shè)penDaylight示例Toaster來說明該機(jī)制。

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

圖片

3.2.代碼編寫

1.生成代碼

YANG文件定義好之后,我們執(zhí)行命令:mvn clean install,可自動(dòng)生成:

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

l ToasterOutOfBreadBuild:用于創(chuàng)建ToasterOutOfBread實(shí)例的具體類。

l ToasterListener:實(shí)現(xiàn)烤面包機(jī)通知消費(fèi)者的接口,定義每種通知類型的接收方法。

2.生產(chǎn)者實(shí)現(xiàn)通知

圖片

3.生產(chǎn)者實(shí)現(xiàn)配置

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

圖片

4.消息者實(shí)現(xiàn)

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

圖片

接下來,我們修改KitchenServiceImpl以實(shí)現(xiàn)ToasterListener接口和通知方法。

圖片

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

圖片

這樣就可以O(shè)penDaylightToaster在發(fā)生OutOfBread事件時(shí)發(fā)送通知。

圖片

3.3 小結(jié)

Notification采用的是發(fā)布訂閱機(jī)制,本例中生產(chǎn)者為OpenDaylightToaster,消費(fèi)者為KitchenServiceImpl,中間代理為MD-SAL,具體為YANG和NotificationPublishService。如下圖所示:

圖片

ToasterService接口通過YANG模型構(gòu)建自動(dòng)生成,OpenDaylightToaster是該接口的一個(gè)具體實(shí)現(xiàn),通過blueprint實(shí)現(xiàn)關(guān)系的綁定。KitchenService理應(yīng)采用YANG模型構(gòu)建,但示例中采用的是硬編碼的形式,在KitchenServiceImpl中直接聲明ToasterService對象,如圖中的①和①ɑ所示。無論是生產(chǎn)者還是消費(fèi)者,都需要NotificationPublishService來進(jìn)行消息的發(fā)布和訂閱。

四、總結(jié)

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

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

    關(guān)注

    18

    文章

    6169

    瀏覽量

    137346
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11788
  • sal
    sal
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    2545
收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    synopsys&Mentor設(shè)計(jì)流程

    synopsys & Mentor 設(shè)計(jì)流程免費(fèi)下載。
    發(fā)表于 07-08 11:37 ?72次下載

    R&S SMB100B射頻信號發(fā)生器的特點(diǎn)性能及應(yīng)用分析

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

    R&S FSL6臺式信號分析儀的功能特點(diǎn)及應(yīng)用范圍

    R&S?FSL 是一款多功能而且經(jīng)濟(jì)實(shí)用的信號分析儀。R&S?FSL全系列標(biāo)配28MHz的信號解調(diào)帶寬,遠(yuǎn)高于其他同類產(chǎn)品。無論是頻譜、噪聲系數(shù)、ACL
    發(fā)表于 12-09 09:46 ?1400次閱讀

    歐拉 Summit 2021 安全&可靠性&運(yùn)維專場:主流備份技術(shù)探討

    在openEuler Summit 2021 安全&可靠性&運(yùn)維專場上,高沖對為數(shù)據(jù)安全而生,統(tǒng)信軟件備份還原工具分享。
    的頭像 發(fā)表于 11-10 17:42 ?2001次閱讀
    歐拉 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>;運(yùn)維專場:主流備份技術(shù)探討

    單片機(jī)STC15雙機(jī)通信&amp;異步串行通信&amp;Proteus

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

    單片機(jī)STC15雙機(jī)通信&amp;異步串行通信&amp;Proteus

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

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

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

    如何區(qū)分Java的&amp;amp;和&amp;amp;&amp;amp;

    首先給i賦值為0,如果i大于10,并且i++等于1,則輸出“錯(cuò)誤”和i的值。否則輸出“正確”和i的值。分別用&amp;和&amp;&amp;運(yùn)行,觀察運(yùn)行結(jié)果的不同。
    的頭像 發(fā)表于 02-24 10:46 ?1858次閱讀
    如何區(qū)分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,你敢信?

    接下來咱們來嘗試解決這個(gè)問題。假設(shè) if(a==1&amp;&amp;a==12)是等于 true的,那么a肯定不可能是一個(gè)“普通的變量”。它勢必要有能力在執(zhí)行的時(shí)候能夠動(dòng)態(tài)改動(dòng)值。
    的頭像 發(fā)表于 05-08 11:01 ?1324次閱讀
    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 實(shí)戰(zhàn)開發(fā),“碼”上評選活動(dòng),邀您來賽!!!

    出色的系統(tǒng) 助力優(yōu)秀的設(shè)備 為應(yīng)用開發(fā)者帶來豐富的體驗(yàn)與想象空間 正如當(dāng)HarmonyOS遇見潤和HiSpark 這萬物互聯(lián)的時(shí)代 將由你的&amp;lt; 代碼 &amp;gt;來定義 潤
    的頭像 發(fā)表于 04-11 15:33 ?1392次閱讀
    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 實(shí)戰(zhàn)開發(fā),“碼”上評選活動(dòng),邀您來賽!!!

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

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

    攝像機(jī)&amp;amp;amp;雷達(dá)對車輛駕駛的輔助

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

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

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

    onsemi LV/MV MOSFET 產(chǎn)品介紹 &amp;amp;amp; 行業(yè)應(yīng)用

    01直播介紹直播時(shí)間2024/10/281430直播內(nèi)容1.onsemiLV/MVMOSFET產(chǎn)品優(yōu)勢&amp;市場地位。2.onsemiLV/MVMOSFETRoadmap。3.onsemiT10
    的頭像 發(fā)表于 10-13 08:06 ?803次閱讀
    onsemi LV/MV MOSFET 產(chǎn)品介紹 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; 行業(yè)應(yīng)用

    北美運(yùn)營商AT&amp;amp;amp;T認(rèn)證的VoLTE測試項(xiàng)

    北美運(yùn)營商AT&amp;T的認(rèn)證測試內(nèi)容涵蓋了多個(gè)方面,以確保設(shè)備和服務(wù)的質(zhì)量、兼容性以及用戶體驗(yàn)。在AT&amp;T的認(rèn)證測試,VoLTE(VoiceoverLTE)測試項(xiàng)是一個(gè)重要的組成部分
    的頭像 發(fā)表于 12-06 16:52 ?504次閱讀
    北美運(yùn)營商AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T認(rèn)證<b class='flag-5'>中</b>的VoLTE測試項(xiàng)
    主站蜘蛛池模板: 99国产在线观看 | 玖玖爱这里只有精品视频 | 99精品久久久久久久 | 秋霞午夜一级理论片久久 | 日韩 国产 欧美视频二区 | 中文字幕久久久 | 中文字幕无码一区二区免费 | 亚洲精品久久国产高清 | 九九99亚洲精品久久久久 | 国产人妻人伦精品A区 | 手机国产视频福利 | 国产午夜一级淫片 | 欧美精品久久久久久久久大尺度 | 亚州中文字幕 | 亚洲AV色香蕉一区二区三区 | 巨污全肉np一女多男 | 小黄文纯肉污到你湿 | 国产精品永久免费视频 | 草莓AV福利网站导航 | 欧美成a人片免费看久久 | 成人在线视频免费 | 色婷婷99综合久久久精品 | 国产二级一片内射视频播放 | 女子初尝黑人巨嗷嗷叫 | 三级黄色在线视频 | 纯肉巨黄H爆粗口男男分卷阅读 | 曰本老头同性xxxxx | 久久精品亚洲牛牛影视 | 涩涩涩涩爱网站 | 日韩国产精品欧美一区二区 | 十八禁啪啦啪漫画 | 国产精品成人观看视频免费 | 久久性色AV亚洲电影无码 | 国产AV精品国语对白国产 | 欧美丰满白嫩bbxx | 午夜国产福利 | 国产不卡一卡2卡三卡4卡网站 | 色妹子综合 | 日日噜噜夜夜狠狠扒开双腿 | 欧美日韩亚洲成人 | 九九热这里只有精品视频免费 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品