持久發(fā)布/訂閱消息傳送模式,緩解醫(yī)療器械的開發(fā)之痛
在決定以什么樣的最佳方式,利用軟件來使其產(chǎn)品實現(xiàn)智能化時,除考慮當(dāng)前的要求之外,醫(yī)療器械設(shè)計者的目光應(yīng)當(dāng)放得更遠。對人機界面(HMI)、無線網(wǎng)絡(luò)連接、數(shù)據(jù)存儲以及其他功能的需求發(fā)展迅速,設(shè)計者必須創(chuàng)建靈活的系統(tǒng),以適應(yīng)技術(shù)和組件的推陳出新,同時最大限度地減少相關(guān)開發(fā)工作量或者對初始設(shè)計的影響。
本文引用地址:http://butianyuan.cn/article/201809/388768.htm是否為醫(yī)療器械選擇了適當(dāng)?shù)南?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/傳送">傳送模式,意味著是按預(yù)算如期開發(fā)出高效、靈活的系統(tǒng)并獲得認證,還是所開發(fā)的系統(tǒng)效率低下而又脆弱,并且開發(fā)過程伴隨著無數(shù)麻煩的天壤之別。相比于其他消息傳送模式,持久發(fā)布/訂閱(PPS)消息傳送模式具有諸多優(yōu)勢,特別是在采用了眾多完全不同的組件和技術(shù)的醫(yī)療器械中(圖1)。
圖1 這臺用于可行性論證的醫(yī)療器械模型匯合并顯示了從血壓計、肺活量計、脈搏氧飽和度儀、心電圖設(shè)備和胰島素泵獲得的數(shù)據(jù)。這些設(shè)備連接至康體佳互通性管理器,并利用PPS消息傳送來與Qt HMI通信。PPS也為一個遠程管理器提供了消息傳送服務(wù),以確保與基于云計算系統(tǒng)的數(shù)據(jù)庫和便攜式平板電腦之間的互聯(lián)網(wǎng)通信。
另外兩種常用的消息傳送系統(tǒng)——異步消息傳送和同步消息傳送——則對設(shè)計復(fù)雜的系統(tǒng)提出了挑戰(zhàn)。眾所周知、應(yīng)用廣泛的異步消息傳送系統(tǒng)(圖2)是許多系統(tǒng)的首選解決方案,但它將錯誤處理、端到端語義和緩沖管理等負擔(dān),推高至應(yīng)用層。
圖2 采用異步消息傳送,一個進程發(fā)送其消息并繼續(xù)執(zhí)行,當(dāng)且僅當(dāng)回復(fù)到達時,接收回復(fù)。
因此,架構(gòu)師在設(shè)計采用異步消息傳送模式的系統(tǒng)時,必須開發(fā)相應(yīng)的消息協(xié)議,以確保所有應(yīng)用的消息傳送行為都是正確的,還必須確保這些應(yīng)用在高負載條件下,分配充足的存儲空間用于消息緩沖。雖然在簡單的系統(tǒng)中,完成這些設(shè)計任務(wù)可能不太費勁,但對于設(shè)計或升級復(fù)雜的系統(tǒng),這些任務(wù)可能構(gòu)成令人生畏的艱巨挑戰(zhàn)。
同步消息傳送系統(tǒng),或者說發(fā)送/接收/回復(fù)消息傳送系統(tǒng)(圖3)不如異步消息傳送系統(tǒng)那么常用。對于有許多進程要求在其開始執(zhí)行之前響應(yīng)其消息的實時環(huán)境,同步消息傳送特別有用。
圖3 采用同步消息傳送,一個進程阻塞直至其收到從目標(biāo)接收進程發(fā)出的回復(fù)。
對于必須輕松地集成完全不同的應(yīng)用的復(fù)雜系統(tǒng),同步消息傳送可能不是最優(yōu)選擇。同步消息傳送將發(fā)送方與接收方緊密地結(jié)合起來。每一臺服務(wù)器都直接與其客戶端通信,并且必須知道如何響應(yīng)所有客戶端消息,因此,對一個軟件組件做出的改變,可能要求改變其他軟件組件。
持久發(fā)布/訂閱
發(fā)布/訂閱消息傳送模式問世已久。1987年,K. P. Birman和T. A. Joseph描述了一種類似的消息傳送模式——虛擬同步。二十年前,北電網(wǎng)絡(luò)實現(xiàn)了一個用于在電話交換機上執(zhí)行故障監(jiān)視的發(fā)布/訂閱消息傳送模型,如今,快速互聯(lián)網(wǎng)搜索提供了許多發(fā)布/訂閱消息傳送實現(xiàn)的例子。持久發(fā)布/訂閱在這些模式的基礎(chǔ)上進一步發(fā)展,確保了重新啟動后的數(shù)據(jù)持久性,并且可以支持必須集成許多設(shè)備和組件,采用尖端的人機界面的應(yīng)用。
PPS是一項基于對象的服務(wù),其發(fā)布方和訂閱方是在一個松散結(jié)合的消息傳送架構(gòu)中。任何PPS客戶端都可以是發(fā)布方、訂閱方或兼為二者。發(fā)布方修改對象及其屬性,并將之寫入文件系統(tǒng)。當(dāng)發(fā)布方改變一個對象時,PPS服務(wù)將通知所有訂閱了該對象的客戶端。客戶端可以訂閱多個對象,并且對象可以具備多個發(fā)布方和訂閱方。因此,多個發(fā)布方可以使用同一個對象及其屬性,來向所有訂閱了該對象的客戶端傳遞信息。
PPS客戶端必須知道感興趣的是哪些PPS對象。如果是發(fā)布方,它們需要知道在什么時候發(fā)布什么消息;如果是訂閱方,它們需要知道必須訂閱哪些對象以及對哪些對象屬性感興趣。
然而,PPS客戶端不必管理錯誤,并且與它們有關(guān)的唯一緩沖是那些用于open()(打開)、read() (讀?。┖蛍rite()(寫入)POSIX API調(diào)用的緩沖。由于PPS訂閱方使用read()調(diào)用來檢索數(shù)據(jù),因此,它們不需要為這些對象管理緩沖。它們僅需決定其讀取是阻塞方式,還是非阻塞方式,以及確認它們能夠解析所讀取的數(shù)據(jù)。PPS服務(wù)將處理其余事項。
持久性
PPS服務(wù)可在重新啟動后更新數(shù)據(jù)。運行時,它將其對象存放在內(nèi)存中,但在收到指令或在關(guān)閉時,則將之保存在永久性存儲器中。啟動時,它可立即或在首次訪問時,恢復(fù)其對象。當(dāng)然,永久性存儲器依賴于可靠的文件系統(tǒng)和存儲介質(zhì)。
PPS消息傳送模式也可簡化系統(tǒng)啟動。例如,在采用常規(guī)消息傳送模式的系統(tǒng)中,如果某個客戶端在服務(wù)器之后啟動,那么,該客戶端必須向服務(wù)器請求新的數(shù)據(jù),以防在從服務(wù)器啟動到客戶端啟動的這段時間內(nèi)發(fā)生了任何改變。對于系統(tǒng)中的每一個客戶端,如果客戶端與服務(wù)器之間的連接中斷,也必須滿足這個要求。然而,利用PPS服務(wù),發(fā)布和訂閱服務(wù)可在啟動時恢復(fù)其對象,并在對象有所變化時更新對象。任何客戶端——不論其在任何時候啟動或重新連接——僅需讀取這些對象,即可獲得當(dāng)前數(shù)據(jù)。
利用PPS服務(wù),發(fā)布方與訂閱方相互之間并不認識;它們之間的唯一聯(lián)系是對它們具有意義和目的的對象。這種模式賦予了系統(tǒng)設(shè)計者極大的靈活性。如有必要,他們可以將關(guān)于模塊連接點和數(shù)據(jù)流的決策,推遲到運行時間再做出。開發(fā)人員可以在創(chuàng)建系統(tǒng)的過程中調(diào)整連接點,甚或?qū)⒅O(shè)置為隨著系統(tǒng)的運行而動態(tài)改變,因為這些點既不是硬編碼的,也沒有直接聯(lián)系。
PPS消息傳送模式也簡化了新組件的集成。由于發(fā)布方與訂閱方無需相互認識,因此,添加組件的開發(fā)人員僅需決定該新組件應(yīng)當(dāng)發(fā)布什么數(shù)據(jù),以及這些組件需要其他PPS客戶端發(fā)布什么數(shù)據(jù)。例如,他們可以在醫(yī)療器械聚合器中添加ECG或EEG組件,而不必微調(diào)API,并且不會加劇系統(tǒng)復(fù)雜度(圖4)。
圖4 通過PPS進行通信的系統(tǒng)組件不需要相互認識,因此,系統(tǒng)設(shè)計者可以添加新的測量設(shè)備或者改變HMI,而不必修改整個系統(tǒng)。
可行性論證
作為QNX軟件系統(tǒng)公司開展的醫(yī)療器械開發(fā)計劃的一部分,我們設(shè)計并打造了一個用于可行性論證的模型,以在便攜式醫(yī)療器械提供的有限的計算資源上運行。該應(yīng)用利用基于康體佳(Continua)標(biāo)準(zhǔn)的互通性管理器、PPS和利用跨平臺應(yīng)用和用戶界面框架Qt(發(fā)音“cute”)創(chuàng)建的尖端的HMI,將一系列典型設(shè)備組合起來。
我們之所以選擇Qt用戶界面和基于康體佳聯(lián)盟提供的康體佳使能軟件庫(CESL)的互通性管理器是因為,這兩種技術(shù)都在醫(yī)療器械行業(yè)享有盛譽。Qt在C++開發(fā)環(huán)境中提供了一套明確定義的UI組件,并且有著在獲得了FDA及其他規(guī)定認證的醫(yī)療器械上成功實現(xiàn)的悠久歷史。
Qt提供了打造符合嚴(yán)格的設(shè)計要求的清晰、高效的用戶界面所需的所有組件,包括布局、分層和多媒體支持。類似地,康體佳軟件庫中的通信協(xié)議不僅提供了與完全不同的醫(yī)療器械進行通信的簡單方法,而且是一個早已在醫(yī)療器械中成功部署的標(biāo)準(zhǔn)化協(xié)議。
簡化的架構(gòu)
可以將PPS服務(wù)專門設(shè)計為使用二進制對象或人可讀的對象。二進制對象很小,但是,除最具約束性的環(huán)境之外,在所有環(huán)境中,人可讀的對象更可取。它們允許開發(fā)人員利用標(biāo)準(zhǔn)文件系統(tǒng)實用程序,從命令行進行調(diào)試,如cat命令用于訂閱,echo命令用于發(fā)布,或者編寫一個簡單的程序,用于訂閱某個對象并打印調(diào)試信息,包括PPS對象及其屬性的列表。
PPS消息傳送為應(yīng)用提供了一個靈活的架構(gòu)。例如,要用其他庫來替代康體佳庫,或者用其他HMI技術(shù)來替代Qt,所需工作量極少。同樣地,改變HMI技術(shù)不會要求改變互通性管理器或者遠程管理器,就像改變這些管理器,不會要求改變HMI。
PPS消息傳送也便于添加新的設(shè)備——利用標(biāo)準(zhǔn)康體佳協(xié)議,通過USB、藍牙甚或TCP,即可將新的設(shè)備連接至系統(tǒng)。例如,我們僅需利用康體佳協(xié)議將一個EEG連接至互通性管理器,創(chuàng)建適當(dāng)?shù)腜PS對象用于通信,并且在HMI中添加相關(guān)顯示和控制功能,即可將該EEG添加到我們的可行性論證模型中。此外,PPS消息傳送簡化了測試和功能安全驗證,因為添加新的組件不要求修改和重新驗證所有其他組件之間的消息傳送。
最后,PPS消息傳送簡化了品牌重樹、本地化和用戶界面更新等。因為HMI通過PPS對象與系統(tǒng)的其余組件進行通信,所以設(shè)計者不必改變HMI之下的任何一行代碼。他們僅需確保新的HIMI所訂閱和發(fā)布的PPS對象與先前的HMI相同。在完全相同的基礎(chǔ)系統(tǒng)上,僅需實現(xiàn)不同的特性,或者不同的HMI設(shè)計,例如,支持不同的字母表和寫入系統(tǒng),即可打造出各種產(chǎn)品系列。
評論