十八禁视频网站在线观看-国产特级毛片aaaaaaa高清-情欲少妇人妻100篇-久久久久成人片免费观看-久久不见久久见www免费

蒙狼科技logo
設(shè)為首頁(yè)| 聯(lián)系我們
咨詢(xún)熱線(xiàn): 13917498722
  您的位置: 首頁(yè) > 網(wǎng)站資訊 > Hadoop 中 IPC 的源碼分析

Hadoop 中 IPC 的源碼分析

發(fā)布日期:2017/6/11

百度權(quán)重查詢(xún) 站長(zhǎng)交易 友情鏈接交換 網(wǎng)站監(jiān)控 服務(wù)器監(jiān)控 seo監(jiān)控

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

IPC模塊,也就是進(jìn)程間通信模塊,假如是在不同的機(jī)器上,那就可以理解為 RPC 了,也就是遠(yuǎn)程調(diào)用。事實(shí)上, hadoop 中的 IPC 也就是基于 RPC 實(shí)現(xiàn)的。

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

IPC 中的關(guān)鍵類(lèi)關(guān)系:

對(duì)用戶(hù)而言,可以直接使用的就是綠色的類(lèi)。

通過(guò) RPC 這個(gè)門(mén)面:

客戶(hù)端可以創(chuàng)建響應(yīng)的 proxy,接著就可以進(jìn)行遠(yuǎn)程調(diào)用。

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

序列化

從上圖也可以看出,client 和 server 的交互,是通過(guò)網(wǎng)絡(luò) connection, 而走網(wǎng)絡(luò)的調(diào)用,是需要走序列化/反序列話(huà)的過(guò)程的。

這個(gè)過(guò)程, IPC 使用了 Hadoop 的自己的序列化機(jī)制,一切都在 Writable 接口中,只要給定 writable 的 DataOutput 和 DataInput,就可以讓 Writable 自己實(shí)現(xiàn)序列化。

一些問(wèn)題和思考

  • client 是單例的嗎 —— 可以理解為是,但其實(shí)不一定。可以跟蹤 getProxy 的代碼,雖然每次都會(huì)新建一個(gè)代理對(duì)象,但底層的 Client 照舊和 SocketFactory 對(duì)應(yīng)的。一般默認(rèn)的,都是使用默認(rèn)的 SocketFactory, 但假如你設(shè)置了 "hadoop.rpc.socket.factory.class.default" ,則會(huì)有新的Client與你自定義的 SocketFactory 對(duì)應(yīng)。這時(shí)候, client 就不是單例的。

  • client 與統(tǒng)一個(gè) server 有幾個(gè)連接 —— 一個(gè) client與一個(gè) server 只有一個(gè)連接,具體可以看生成的代理中,有一個(gè) remoteId, 這個(gè) remoteId 是和 client關(guān)聯(lián)的,client 進(jìn)行調(diào)用的使用,會(huì)將此 remoteId 作為一個(gè) connectionId。因此,一般一個(gè) client 是一個(gè)連接。

  • 假如 client 是一個(gè)連接,那么對(duì)此 client 的調(diào)用,不都是串行的嗎? —— 看你怎么理解了,在用戶(hù)層面,也就是 client 調(diào)用的方法,是可以并發(fā)的。client 底層是使用一個(gè)連接來(lái)進(jìn)可能的完成吞吐量。每個(gè) request 和 response 都會(huì)有一個(gè) id 關(guān)聯(lián)起來(lái)。因此一個(gè)連接上可以跑滿(mǎn)請(qǐng)求和響應(yīng)。

  • 因?yàn)榫W(wǎng)絡(luò)問(wèn)題,client調(diào)用服務(wù)失敗后,有重試機(jī)制嗎 —— 在IPC中沒(méi)有看到call的重試,需要上層去保證了。但是后面的調(diào)用會(huì)重新建立連接。

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

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

  • 一個(gè) server 要消費(fèi)多少線(xiàn)程資源? —— 讓我們來(lái)算一下,一個(gè) Listener 線(xiàn)程,若干個(gè) Reader 線(xiàn)程(默認(rèn)1個(gè)),若干個(gè) Handler 線(xiàn)程(在 getServer 的時(shí)候指定,一般1 - 10個(gè)),一個(gè) Responder 線(xiàn)程。假如都按照默認(rèn)值來(lái)計(jì)算的話(huà)。好少需要 1 + 1 + 1 + 1 = 4 個(gè)線(xiàn)程。也許,不應(yīng)該算多,假如請(qǐng)求量不大的話(huà),這些線(xiàn)程應(yīng)該都被 blocked 住的。

總結(jié)

  • Hadoop 的 IPC 是一個(gè)比較輕量級(jí)別的 RPC
  • 從代碼來(lái)看,只支撐 java 進(jìn)程之間的通信
  • 從沒(méi)有重試機(jī)制、一個(gè)Client 只有一個(gè)連接的機(jī)制來(lái)看,適合與應(yīng)用網(wǎng)絡(luò)環(huán)境較好的場(chǎng)景,適合同機(jī)架或者同機(jī)房的集群。

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





其他相關(guān)文章
  • 簡(jiǎn)單實(shí)用!好流行的10個(gè)平面設(shè)計(jì)方法小結(jié)
  • 分析網(wǎng)站關(guān)鍵詞排名一直上不去的原因
  • 蒙狼蒙狼網(wǎng)絡(luò)帶您了解網(wǎng)絡(luò)營(yíng)銷(xiāo)好基本的技巧
  • 企業(yè)網(wǎng)站建設(shè)做友情鏈接時(shí)應(yīng)該知道的技巧
  • 小型網(wǎng)站可以選擇的網(wǎng)站內(nèi)容管理系統(tǒng)
  • 揭開(kāi)網(wǎng)站建設(shè)的神秘面紗




  • 企業(yè)網(wǎng)站后臺(tái)使用
    購(gòu)物網(wǎng)站后臺(tái)使用
    網(wǎng)站產(chǎn)品圖片的處理



    農(nóng)業(yè)銀行支付
    建設(shè)銀行支付
    郵政儲(chǔ)蓄銀行支付



    企業(yè)網(wǎng)站建設(shè)
    整站建設(shè)
    購(gòu)物網(wǎng)站



    企業(yè)網(wǎng)站建設(shè)建議
    注冊(cè)適合自己的域名
    什么是虛擬主機(jī)




    售前咨詢(xún)QQ: 838821345
    售后服務(wù)QQ: 464698733
    應(yīng)急手機(jī):13917498722


    微信掃一掃
    添加24小時(shí)微信客服


    郵箱:lang@MENGL.CN
    地址:上海寶山區(qū)城銀路555弄2號(hào)樓3樓
    ICP備案:滬ICP備12042844號(hào)-3
     滬公網(wǎng)安備:31011402002917號(hào)
    做網(wǎng)站 | 企業(yè)網(wǎng)站建設(shè) | 上海做網(wǎng)站 | 企業(yè)網(wǎng)站制作 | 做網(wǎng)站的公司 | 關(guān)于蒙狼 | 整站建設(shè) | 購(gòu)物網(wǎng)站 | 企業(yè)網(wǎng)絡(luò)營(yíng)銷(xiāo) | 成功案例 | 加盟代理 | 在線(xiàn)訂單
    服務(wù)區(qū)域: 臨港新區(qū)做網(wǎng)站 徐匯做網(wǎng)站 閔行做網(wǎng)站 長(zhǎng)寧做網(wǎng)站 虹口做網(wǎng)站 黃浦做網(wǎng)站 盧灣做網(wǎng)站 靜安做網(wǎng)站 浦東做網(wǎng)站 楊浦做網(wǎng)站 普陀做網(wǎng)站 閘北做網(wǎng)站 寶山做網(wǎng)站 嘉定做網(wǎng)站 松江做網(wǎng)站 昆山做網(wǎng)站
    Copyright 2012-2025 上海蒙狼網(wǎng)絡(luò)科技有限公司 www.autolampled.com All Rights Reserved
    主站蜘蛛池模板: 亚洲国产av最新地址| 欧美精品日韩精品一卡| 吃奶摸下的激烈视频| 国产∨亚洲v天堂无码久久久| 欧美在线精彩视频免费播放| 久久香蕉成人免费大片| 国产无遮挡a片又黄又爽| 亚洲日韩欧美一区久久久久我| 国产成人精彩在线视频| 久热这里只精品99国产6-99re视… | 国产精品午夜福利视频234区 | 亚洲精品国产品国语在线| 无卡无码无免费毛片| 亚洲国产精品一区二区第四页| 一本色道久久东京热| 久久精品第九区免费观看| 亚洲午夜福利精品久久| 国产猛男猛女超爽免费视频| 大地资源中文第三页| 国产成人小视频| 亚洲妇女无套内射精| 一边吃奶一边添p好爽故事| 亚洲成l人在线观看线路| 国产成人无码久久久精品一| 黄网站色视频免费国产| 国产白浆喷水在线视频| 亚洲欧美日本久久综合网站点击| 国产真实伦在线观看| 大肉大捧一进一出好爽app| 国产小受呻吟gv视频在线观看| 国产高清乱码又大又圆| 久久五十路丰满熟女中出| 国产又色又爽又黄刺激视频| 国产精品99爱免费视频| 亚洲无码不卡| 中文字幕 亚洲 无码 在线| 黑人巨大精品欧美一区二区| 丰满人妻熟妇乱偷人无码| 国产色视频一区二区三区| 久久久婷婷五月亚洲97号色| 成人做受视频试看60秒|