轉自:http://www.javashuo.com/article/p-ohyhqoxw-ms.htmlhtml
1. RPC API和RESTful APIjson
(1)RPC面向過程:內部調用建議RPC瀏覽器
(2)RESTful 面向資源:對外開發推薦RESTful網絡
RPC遠程調用不必定跨網絡,同一臺主機的兩個進程直接也能夠是RPC。REST就是一種RPC負載均衡
RPC能夠經過http也能夠直接走socket。 選用http,是因爲其更通用。socket
2. RPC與HTTP的不一樣特色微服務
2.1 傳輸協議性能
(1)RPC:基於TCP,也可基於HTTPspa
(2)HTTP:基於HTTPhtm
2.2傳輸效率
(1)自定義TCP協議,報文小。 若是基於HTTP2協議,也可減少報文,提升傳輸效率
(2)基於HTTP1.1協議,報文有不少無用內容,傳輸效率低
2.3 性能消耗,主要在於序列化和反序列化的耗時
(1)RPC,能夠基於thrift實現高效二進制傳輸
(2)HTTP,大部分是json實現,字節大小和序列化耗時逗比thrift更消耗性能
2.4負載均衡
(1)RPC自帶負載均衡策略
(2)HTTP,須要配置Nginx,HAProxy來實現
2.5服務治理
(1)RPC,自動通知
(2)HTTP,事先通知,修改Nginx/HAProxy配置
3.總結
(1)RPC:用於公司內部服務調用,性能消耗低,傳輸效率高,服務治理方便。 實現負載,適用於開發過程使用同一的技術棧
(2)HTTP:用於對外的異構環境,瀏覽器接口調用,APP接口調用,第三方接口調用。實現簡單,更加靈活,跨語言,跨平臺
微服務,強調的是獨立、自治、靈活。而RPC方式限制多,所以微服務經常使用基於http的Rest風格服務。