php 编程 Windows Android java 微软 apache mysql google 开源 云计算 centos shell Python linux wordpress 程序员 Firefox nginx Ubuntu

RPC:NFS的传输协议

   NFS(Network file System)的縮寫,意為網絡文件系統。其功能主要是通過網絡在不同的主機之間共享目錄或者文件。NFS客戶端通過掛載將NFS服務器端共享的數據目錄掛載到本地系統。由於NFS支持的功能很多,不同的功能會啟動不同的端口來傳輸數據,由於端口的不固定會造成NFS客戶端與NFS服務器端的通信障礙,為了解決這個問題就出現了RPC(Remote Procedure Call)服務。RPC即遠程調用協議 相當於NFS客戶端與NFS服務器端數據傳輸的橋梁。

  NFS一般用來存儲共享視頻,圖片,附件等靜態數據(用戶上傳的文件在NFS存儲服務器中。),是當前互聯網系統架構中最常用的服務之一,特別是中小公司應用頻率很高。大公司可能用MFS,GFS,FASTFS分布式系統。

  RPC(遠程調用服務)。因為NFS支持的功能特別多,而不同的功能都會使用不同的程序來啟動,每啟動一個功能端口就會用一些端口來傳輸數據,因此,NFS的功能所對應的端口才無法固定,而是隨機取用一些未被使用的小於1024的端口來進行傳輸。(常規服務端口:0~655535,1024一下,系統服務常用) 
所以,客戶端要準確的獲得NFS服務器所使用的端口,就需要RPC服務。 NFS RPC最主要的功能就是記錄每個NFS功能所對應的端口號,並且在NFS客戶端請求時將該端口和功能對應的信息傳遞給請求數據的NFS客戶端,讓客戶端可以鏈接到正確的端口上去,從而實現數據傳輸。(本人覺得RPC像是中介) 
RPC怎樣知道NFS的每個端口呢? 
原因是,當NFS服務啟動時會隨機取用數個端口,並主動向RPC服務註冊取用的相關端口信息,這樣,RPC服務就可以知道每個端口所對應的NFS功能了,然後RPC服務使用固定的端口號111來監聽NFS客戶端提交的請求,並將正確的NFS端口答應給NFS客戶端,這樣一來,就可以讓NFS客戶端與服務端進行數據傳輸了。

 

延伸阅读

评论