1. 程式人生 > 實用技巧 >Feign+Ribbon、Dubbo、gRPC的選型對比

Feign+Ribbon、Dubbo、gRPC的選型對比

1.場景

在微服務開發中,在呼叫不同模組之間的資料時,經常回去呼叫他的http介面,總不能這樣,RPC框架,服務在程式碼裡就呼叫一個interface的介面,底層直接讓RPC框架傳送請求到對應的伺服器上去

2. feign+ribbon

image.png
  • spring cloud netflix技術棧,RPC呼叫,用的就是feign框架+ribbon做負載均衡,暴露出來的服務介面,就是最最稀鬆平常的基於spring mvc寫的controller暴露出來的一些http介面,定義一個http的url地址
  • 通過feign框架進行RPC呼叫:String result = serviceA.hello(name),會按照http協議來組裝你的請求資料,資料格式都是按照http協議裡的請求來做的,http請求還還必須做一個序列化,序列化成二進位制的位元組流,通過底層的tcp連線傳送過去
  • 本質上服務A的部署是基於tomcat去進行部署的,tomcat會監聽你指定的埠號,當別人要傳送http請求給你的時候,首先必須跟tomcat建立tcp網路連線,傳送http請求給tomcat,tomcat收到之後,解析出來這個http請求,交給你的spring mvc寫的controller來進行處理

3.dubbo

image.png
  • dubbo自己使用的一套協議,自定義協議,也可以是別的協議,肯定不是http協議,去組裝請求資料,然後做一個序列化,二進位制位元組陣列或者是位元組流,都可以,通過底層的網路連線把請求資料傳送過去就可以了

  • ServiceA這個類,呼叫他裡面的hello()這個方法,傳入name這個引數,獲取result這個返回值,然後通過網路連線把響應資料按照自己的協議封裝,序列化,通過網路連線傳送給服務B就可以了

gRPC

image.png