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

jstorm中bolt是如何處理異常的

jstorm中bolt是如何處理異常的?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

在曲麻萊等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),營(yíng)銷型網(wǎng)站,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),曲麻萊網(wǎng)站建設(shè)費(fèi)用合理。

BasicBoltExecutor源碼:

  public void execute(Tuple input) {
    _collector.setContext(input);
    try {
      _bolt.execute(input, _collector);
      _collector.getOutputter().ack(input);
    } catch (FailedException e) {
      if (e instanceof ReportedFailedException) {
        _collector.reportError(e);
      }
      _collector.getOutputter().fail(input);
    }
  }

_bolt.execute(input, _collector) 就是執(zhí)行我們自己編寫(xiě)的bolt里的excute方法。可以看到,在這里,只會(huì)catch storm自己定義的FailedException,并且發(fā)送fail消息,標(biāo)記tuple處理失敗, 其余異常則會(huì)被放過(guò)。

再外層是BoltExecutors的processTupleEvent方法:

try {
      if (!isSystemBolt && tuple.getSourceStreamId().equals(Common.TOPOLOGY_MASTER_CONTROL_STREAM_ID)) {
        backpressureTrigger.handle(tuple);
      } else {
        bolt.execute(tuple);
      }
    } catch (Throwable e) {
      error = e;
      LOG.error("bolt execute error ", e);
      report_error.report(e);
    }

在這里,所有異常都會(huì)被catch住,但是只會(huì)進(jìn)行report_error,并不會(huì)發(fā)fail消息,相關(guān)tuple只能等超時(shí)才能被標(biāo)記為失敗。

再來(lái)看report_error.report(e) 的具體實(shí)現(xiàn),通過(guò)看構(gòu)造函數(shù),可以看到report_error是一個(gè)TaskReportErrorAndDie類,

  @Override
  public void report(Throwable error) {
    this.reporterror.report(error);
    this.haltfn.run();
  }

在這里,reporterror是一個(gè)AsyncLoopDefaultKill類

  @Override
  public void run() {
    JStormUtils.halt_process(1, "Async loop died!");
  }

這里就是整個(gè)過(guò)程的最終步驟了, JStormUtils.halt_process()方法會(huì)打印一條"Async loop died!"的日志后將worker進(jìn)程殺死。

思考

通過(guò)代碼可以出來(lái),對(duì)于jstorm,“異常后worker退出”是一個(gè)故意設(shè)計(jì)出的特性,并非程序不健壯。猜測(cè)這一塊的設(shè)計(jì)理念就是對(duì)于已知異常,開(kāi)發(fā)人員自己捕獲并重新拋出FailedException,使相應(yīng)消息失?。晃粗惓t強(qiáng)制使進(jìn)程直接失敗退出,避免過(guò)度的catch導(dǎo)致問(wèn)題被掩蓋。

不過(guò)雖然話是這么說(shuō),對(duì)這個(gè)設(shè)計(jì)還是持保留意見(jiàn),畢竟storm和普通的java程序不一樣,storm的worker進(jìn)程在退出后是會(huì)自動(dòng)被重啟的,所以這種異常處理方式并不能起到failfast的效果。

相反,worker的持續(xù)重啟,還會(huì)帶來(lái)一些其他問(wèn)題。再一個(gè),不主動(dòng)將消息標(biāo)為失敗,而是等超時(shí),如果設(shè)置的超時(shí)時(shí)間過(guò)長(zhǎng)(當(dāng)然超時(shí)時(shí)間太長(zhǎng)也不合理),也會(huì)引入一些問(wèn)題。比如說(shuō)kafkaSpout, 一條消息沒(méi)被ack之前是不會(huì)繼續(xù)取后邊的數(shù)據(jù)的,這樣如果有一條數(shù)據(jù)需要等超時(shí),同分區(qū)下的數(shù)據(jù)在這一個(gè)超時(shí)周期內(nèi),就都無(wú)法被處理了。

從另一方面來(lái)說(shuō),如果像FailedException一樣處理其他所有異常,由于異常之后可以看到有數(shù)據(jù)fail,也并不會(huì)掩蓋問(wèn)題。

看完上述內(nèi)容,你們掌握jstorm中bolt是如何處理異常的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站名稱:jstorm中bolt是如何處理異常的
當(dāng)前網(wǎng)址:http://aaarwkj.com/article24/psopce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站改版網(wǎng)站策劃、標(biāo)簽優(yōu)化、網(wǎng)站維護(hù)自適應(yīng)網(wǎng)站

廣告

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

成都網(wǎng)站建設(shè)公司
蜜臀av成人精品蜜臀av| 青青草原在线视频观看| 美女在线视频一区二区三区| 91九色最新国产在线| 久久精品女人天堂av免费观看| 国产精品自偷自偷自偷| 六月丁香花五月婷婷| 日韩二区三区精品视频| 国内精品久久大型新型| 亚洲一区二区色黄大片| 国产一区二区三区在线观看俏佳人 | 日韩一日韩一区二区三电影在线观看| av资源网大全手机在线观看| 亚洲av日韩综合一区尤物| 国产精品一区二区一牛影视| 亚洲精品主播一区二区三区| 麻豆久久精品国产亚洲精品超碰热 | 天天操夜夜操狠狠操91| 日本人妻久久中文字幕| 日韩亚洲欧美成人一区| 草草影院最新地址在线观看| 亚洲丰满性感美女av| 人妻少妇av免费久久蜜臀| 太爽了少妇高潮在线看片| 亚洲国产熟女一区二区三| 国产精品极品网站91青青| 精品欧美一区二区三区在线| 亚洲综合偷拍欧美一区日韩| 精品久久av一区二区三区| 亚洲男人的天堂久久精品| 亚洲精品另类中文字幕| 日韩在线视频免费不卡一区| 三级国产大片在线观看| 中文字幕日韩在线欧美一区| 国产97精品在线播放| 欧美一区二区日本国产激情| 日本东京热在线免费观看| 国产精品一区二区一牛影视| 一区二区三区在线观看精品| 亚洲午夜黄色生活片观看| 91午夜福利视频鉴赏|