解決了RPC的調用問題,現在還要解決的一個關鍵問題是,客戶端怎么知道調用哪一台機器上的服務。這就需要引入一個中間的第三者目標服務器
服務提供者向目標服務器注冊服務,客戶機從目標服務器(一種叫法叫服務注冊中心)中獲取可調用的機器列表。如果有用過類似dubbo這樣的RPC框架是不是對這個圖很熟悉?因為所有的RPC架構的原理大多都是類似的。服務提供者往目標服務器里面通常會注冊機器的ip和端口信息。
下面我們來談下RPC的好處和注意的地方。
好處:屏蔽了底層通訊的復雜性,在分布式系統中提供了通訊的透明性。
需要注意的地方:RPC是點對點的通訊方式,要求通訊兩端必須同時運行,當其中一端掛了就會導致通常異常,並且調用者一般會阻塞住等待結果的返回,性能相對不是很高,當然也有異步RPC,超時重試情況下服務端提供者需要做好服務冪等性處理。相對於RPC而言采用了面向消息通訊模型的架構比如MQ則不要求通訊兩端同時運行,發送消息時也不需要阻塞等待處理結果的返回通訊性能就高出很多。
最后我們總結一下:RPC調用是指不同機器間的進程通訊。程序不需要關心某個遠程服務是在哪台機器上執行的,遠程服務調用就和調用本地服務一樣。要在不同機器間進行通訊我們需要知道通訊機器的ip和端口號。ip幫助我們定位是哪一台機器,端口號幫我們定位是機器上的哪一個進程。RPC的出現使用得機器的進程通訊透明化,這在分布式系統中是很重要的。RPC調用架構中客戶端和服務端都和一個叫服務注冊中心的第三方通訊。
原文鏈接:https://www.cnblogs.com/linlinismine/p/9205676.html