欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Hadoop中IPC的源碼分析

2023-09-02    分類: 網站建設

百度權重查詢 站長交易 友情鏈接交換 網站監(jiān)控 服務器監(jiān)控 seo監(jiān)控

好近開始看 Hadoop 的一些源碼,睜開hadoop的源碼包,各個組件分得比較清楚,于是開始看一下 IPC 的一些源碼。

IPC模塊,也就是進程間通信模塊,假如是在不同的機器上,那就可以理解為 RPC 了,也就是遠程調用。事實上, hadoop 中的 IPC 也就是基于 RPC 實現的。

使用 sloccount 統(tǒng)計一下 ipc 包中代碼的行數,一共是 2884 行。也就是說,IPC 作為hadoop的基礎組件,僅僅用了不到3000行的代碼,就完成得穩(wěn)定且富有用率。

IPC 中的關鍵類關系:

對用戶而言,可以直接使用的就是綠色的類。

通過 RPC 這個門面:

客戶端可以創(chuàng)建響應的 proxy,接著就可以進行遠程調用。

而服務提供者則可以創(chuàng)建響應的 server,并進行響應的生命周期管理(start、stop),從而提供服務。

序列化

從上圖也可以看出,client 和 server 的交互,是通過網絡 connection, 而走網絡的調用,是需要走序列化/反序列話的過程的。

這個過程, IPC 使用了 Hadoop 的自己的序列化機制,一切都在 Writable 接口中,只要給定 writable 的 DataOutput 和 DataInput,就可以讓 Writable 自己實現序列化。

一些問題和思考

  • client 是單例的嗎 —— 可以理解為是,但其實不一定??梢愿?getProxy 的代碼,雖然每次都會新建一個代理對象,但底層的 Client 照舊和 SocketFactory 對應的。一般默認的,都是使用默認的 SocketFactory, 但假如你設置了 "hadoop.rpc.socket.factory.class.default" ,則會有新的Client與你自定義的 SocketFactory 對應。這時候, client 就不是單例的。

  • client 與統(tǒng)一個 server 有幾個連接 —— 一個 client與一個 server 只有一個連接,具體可以看生成的代理中,有一個 remoteId, 這個 remoteId 是和 client關聯的,client 進行調用的使用,會將此 remoteId 作為一個 connectionId。因此,一般一個 client 是一個連接。

  • 假如 client 是一個連接,那么對此 client 的調用,不都是串行的嗎? —— 看你怎么理解了,在用戶層面,也就是 client 調用的方法,是可以并發(fā)的。client 底層是使用一個連接來進可能的完成吞吐量。每個 request 和 response 都會有一個 id 關聯起來。因此一個連接上可以跑滿請求和響應。

  • 因為網絡問題,client調用服務失敗后,有重試機制嗎 —— 在IPC中沒有看到call的重試,需要上層去保證了。但是后面的調用會重新建立連接。

  • server 是單例的嗎 —— 不一定。假如你只 getServer 一次的話。創(chuàng)建一個 server 的代價是特別很是重的。通過上圖你也可以知道,他需要有一個線程 (Listener)來 accept socket,同時需要一些 Reader線程 來進行 socket 的 read,還有一個 Responder 來進行 socket 的 write,另外,還有若干個 handler線程 來進行營業(yè)處理。因此,假如可以削減 server 的個數,就應該削減 server 個數。

  • 暴露出的服務是否應該是線程安全的 —— 是的,一定要線程安全。server 底層是通過 nio 進行 socket 操作的,因此雖然只有一個線程負責 accept,但是能夠支撐許多的client連接。這些連接在到達 server 端之后,很有可能就會并發(fā)執(zhí)行統(tǒng)一方法(假如你的營業(yè)handler不止一個的話)

  • 一個 server 要消費多少線程資源? —— 讓我們來算一下,一個 Listener 線程,若干個 Reader 線程(默認1個),若干個 Handler 線程(在 getServer 的時候指定,一般1 - 10個),一個 Responder 線程。假如都按照默認值來計算的話。好少需要 1 + 1 + 1 + 1 = 4 個線程。也許,不應該算多,假如請求量不大的話,這些線程應該都被 blocked 住的。

總結

  • Hadoop 的 IPC 是一個比較輕量級別的 RPC
  • 從代碼來看,只支撐 java 進程之間的通信
  • 從沒有重試機制、一個Client 只有一個連接的機制來看,適合與應用網絡環(huán)境較好的場景,適合同機架或者同機房的集群。

P.S. 看了一下 io 包中,其實有個 retry 的 package,里面就是一個重試機制。新鮮的是為啥這個 package 被包含在 io package 中。

本文標題:Hadoop中IPC的源碼分析
文章起源:http://aaarwkj.com/news23/280373.html

成都網站建設公司_創(chuàng)新互聯,為您提供手機網站建設、Google、定制網站、網站導航、標簽優(yōu)化、域名注冊

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都做網站
未满十八在线观看网址| 五月婷婷六月丁香激情视频| 亚洲国产一区二区精品| 日本欧美一区二区精品| 国产黄色一区二区三区四区| 高清区一区二区在线播放| 在线视频网友自拍偷拍| 亚洲av激情码国产一区| 日韩免费av在线网站| 18禁在线免费观看网站| 国产一级成人免费视频| 久久伊人69日韩精品| 日韩丰满少妇在线观看| 久久精品性少妇一区二区三区| 蜜桃av网站免费观看| 日本黄色中文字幕网站| 国产白丝诱惑在线视频| 日韩在线一区二区视频| 超碰97精品在线观看| 国产激情视频在线观看你懂的| 国产精品日本一区二区| 国产丝袜美腿诱惑久久| 国产91福利视频在线| 美女性生活免费视频网站| 未满十八禁止下载软件| 嫩草网站国产精品一区二| 中文字幕亚洲精品熟女少妇| 亚洲综合色视频免费在线播放| 国产精品亚洲av三区国产毛片 | 精品国产无遮挡污污网站| 国产精品主播自拍视频| 男人自拍天堂在线视频| 国产一级黄色性生活片| 草草在线成年免费视频| 亚洲成人日韩成人av| 国产精品—色哟哟视频| 一区二区三区都市激情| 丁香色婷婷国产精品视频| 欧美另类亚洲综合久青草| 亚洲欧美日韩国产亚洲欧美日韩国产| 欧美黄色一区二区三区精品 |