1樓:NoStar
簡單地說,REST值得考慮。
request/reply 是一種常見的系統間整合方式,主要有 RPC和REST 兩種實現風格。
RPC 是 remote procedure call 的縮寫。常見的框架有google 的gRPC。
REST 是HTTP 的一種 architectural style。
RPCREST
迭代速度
面向operation,類似面向過程程式設計,迭代速度通常更慢。例如針對乙個book service, 我們可能前後需要定義如下API
1. listAllTextBooks2. getBooksByName3.
getBooksByPrice4. registerBookWithName5. deleteBookWithName7.
deleteBookWithId...
面向resource。類似於物件導向程式設計,迭代速度可以更快。針對book 我們只需要定義乙個book resource,配合HTTP GET/POST/PUT/DELETE 等verb和 query syntax, 可以輕易組合出RPC中的所有operation。
整合複雜度
RPC整合更複雜。
1. RPC完全基於operation,operation和operation需要額外成本來理解它們的關係;2. RPC operation之間較難做到風格統一,特別是要考慮後向相容的情況;3.
RPC 通常需要client lib才能測試,當然有些框架有自帶的網頁版explorer方便除錯。
設計複雜度
面向過程,相對更簡單。
1. REST通常需要更長的時間來設計,對domain entity和它們之間的關係進行建模。有些場景下,需要更長時間才能抽象成entity。
2. HTTP verb數量有限,且REST 通常僅使用少數HTTP verbs (GET/POST/PUT/DELETE 等)。有些場景下會不夠用,需要額外設計。
效率可以基於HTTP (通常只使用GET, POST verb 和單一的URI)或TCP/UDP。相比於REST,可以做到更低延遲,沒有額外的HTTP overhead。
完全基於HTTP。
框架支援
RPC通常需要非常好的框架支援,來解決緊耦合、跨語言、相容性、快取等挑戰。目前開源已有很多框架,例如google的gRPC
HTTP本身有很好的系統於平台支援;REST 是stateless的,。OpenAPI/Swagger 等也提供了很好的工具支援。
隨著REST變得越來越流行,總的說,REST是一種值得考慮的整合風格。
2樓:NeoX
分布式系統的範疇太廣了,不過如果是追求效能的computation framework之類的,明顯不合適,REST比較適合做面向GUI的API.
分布式系統如果追求效能的話,一般自己寫乙個基於netty的狀態機. REST最大的問題是很難有效地實現call back.
Netty: Home
3樓:
有一定的效能損耗,但是不用太在意,這個損耗是可以接收的。但是前提是rest服務介面本身的設計質量要高。對於企業內部的資訊化系統,如果僅僅是考慮元件化,還可以參考OSGI的方式來架構,其本身也是元件化和服務化的思想。
集中式架構和分布式架構怎麼選?
理查 依照it的看法,能多執行緒並行的直接水平分布式。要用並行鎖的,用主從分布式。要是效能要求不高,頻寬不充裕,直接集中式佇列式 夕陽 集中式架構與分布式架構,各有優劣,對於大型的資料處理的中心,集中式的架構會更加適合一點,對於一些小型資料處理中心分布式架構更靈活一點,通常要以情況而定。 知名 這個...
springcloud用分布式配置中心從github讀配置檔案合適嗎?
許雪裡 自薦 輕量級配置管理平台 XXL CONFA 輕量級 秒級動態推送 多環境 跨語言 跨機房 配置監聽 許可權控制 版本回滾 程式猿DD 如果儲存使用Git 使用Github 注意訪問許可權的設定,這裡會有一定的風險,搞錯了就暴露了。公網訪問會慢一些。使用Gitlab 可以私有化部署,從網路上...
鴻蒙系統的分布式OS架構有什麼價值意義
沒有隱私 這個軟匯流排是乙個新名詞,它的底層傳輸還是藍芽 wifi。華為主要做的工作可能是 裝置通過低功率藍芽 BLE 廣播,使得手機能夠嗅探到該裝置。然後免認證 token 連線 組網,傳統物聯網裝置都是自顧自,只關注自己是否連線上路由器,資料都是通過路由器集中交換。軟匯流排能夠使得不同裝置組網,...