目錄
文章目錄
- 目錄
-
- @[toc]
- 簡介
-
- 引子
- SOME/IP 介紹
- SOME/IP 協定棧的位置
- @[toc]
- 引子
- SOME/IP 介紹
- SOME/IP 協定棧的位置
簡介
SOME/IP是一套通信協定和API标準,它提供了以資料為中心的連接配接服務。VSomeIP是SOME/IP的開源實作,借助它可以友善的開發出高效,可靠的分布式中間件。本系列文章是對SOME/IP協定以及VSomeIP 實作的介紹。
引子
變形金剛電影中,禦天敵背叛了擎天柱,與霸天虎合作。在地球的各地布置了許多的能量柱,他試圖借助這些能量柱将賽博坦星球傳送到地球上,以此來重建自己的家園。這些能量柱必須組合起來才能完成傳輸工作,并且在這其中有一個紅色的能量柱比較特殊,因為它負責控制其他的傳送柱。
這些能量柱必須組合起來才能完成傳輸工作,并且在這其中有一個紅色的能量柱比較特殊,因為它負責控制其他的傳送柱。
由此可見,這是一個大型的分布式系統。在這個系統中,這個紅色的能量柱被稱之為“中心節點”,中心節點正如其名稱那樣,它是整個系統的中心。對于帶有中心節點的分布式系統來說,一旦中心節點被摧毀,整個系統都将無法工作。
是以電影的後來,自然是擎天柱摧毀了這個中心節點,使得禦天敵的傳送計劃徹底失敗。
從設計上來說,對于一個如此大型的系統,卻存在一個非常薄弱和重要的中心節點,這并不是一個好的方案。
而本文介紹的SOME/IP就是一個去中心化的分布式技術。是以在這類系統中,不存在負責總控制的中心節點,所有節點都完全對等。任何一個節點的異常都不會影響整個系統的運作。
SOME/IP 介紹
SOME/IP全稱是 Scalable Service-Oriented Middleware over IP, 一種面向服務的可擴充基于IP中間件通信方式,這是一套通信協定和API标準,它提供了以資料為中心的連接配接服務,基于釋出者-訂閱者模型。
這是一套中間件,它提供介于作業系統和應用程式之間的功能,使得元件之間可以互相通信。并且提供了低延遲,高可靠的通信以及可擴充的架構。或許,你已經知道很多種網絡通信協定,對于釋出-訂閱這些概念也很熟悉。那SOME/IP到底有什麼特别之處呢?
下圖展示了4個時代的資料通信方式:
[圖1:通信方式更疊][圖1]
- (第一代)點對點的CS(Client-Server)結構,這是大家最為熟悉的:一個伺服器角色被許多的用戶端使用,每次通信時,通信雙方必須建立一條連接配接。當通信節點增多時,通信的連接配接數也會增多。并且,每個用戶端都必須知道伺服器的具體位址和所提供的服務。一旦伺服器位址發生變化,所有用戶端都會受到影響。
- (第二代)Broker模型:存在一個中間人,它負責初步處理大家的請求,并進一步找到真正能響應服務的角色,這就好像存在一個經紀人。這為用戶端提供了一層抽象,使得伺服器的具體位址變得不重要了。服務端位址如果發生變化,隻需要告訴Broker就可以了。但這個模型的問題在于,Broker變成了模型的中心,它的處理速度會影響所有人的效率,這就好像城市中心的路口,當系統規則增長到一定程度,Broker終究會成為瓶頸。更糟糕的是,如果Broker癱瘓了,可能整個系統都将無法運轉。
- (第三代)廣播模型:所有人都可以在通道上廣播消息,并且所有人都可以收到消息。這個模型解決了伺服器位址的問題,且通信雙方不用單獨建立連接配接,但它存在的問題是:廣播通道上的消息太多,太嘈雜,所有人都必須關心每條消息是否與自己有關。這就好像全公司一千号人坐在同一個房間裡面辦公一樣。
- (第四代)分享資料模型:這種模型與廣播模型有些類似,所有人都可以對外釋出和讀取消息。但它更進一步的是,通信中包含了很多并行的通路,每個人可以隻關心自己感興趣的消息,自動忽略自己不需要的消息。
SOME/IP 協定棧的位置
下圖展示了SOME/IP在網絡棧中的位置,它位于傳輸層的上面,并且以TCP,UDP為基礎:
[圖2:SOME/IP在網絡協定棧的位置][圖2]
大概比較一下SOME/IP 的優缺點:
優點 | 缺點 |
---|---|
開源, 基于boost庫, 跨平台, 基本實作通信相關功能 | 增加了存儲需求request時, 會先放在endpoint buffer中,會不停動态開劈記憶體 |
高資料通信, 如圖檔傳輸 | 不可預測的時間, endpoint是順序發送buffer, 接收端什麼時候能收到method id是不可預測 |
動态識别服務 | 資料加密,資料安全考慮不周全 |