Storm如何保證可靠的訊息處理

2021-07-31 12:37:22 字數 947 閱讀 6497

**

內容簡介

storm可以保證從spout發出的每個訊息都能被完全處理。storm的可靠性機制是完全分布式的(distributed),可伸縮的(scalable),容錯的(fault-tolerant)。本文介紹了storm如何保證可靠性以及作為storm使用者,我們需要怎麼做,才能充分利用storm的可靠性。理解一些實現細節,也能夠幫助我們領悟storm的設計理念。

ps:本文用到了storm的一些基本概念,例如bolt,任務(task),元組(tuple),如果不清楚這些概念,可以參看我之前寫的文章:storm介紹(一),理解storm併發。下文中元組(tuple),跟訊息(message)是等價的,storm中處理的訊息是用元組這種資料結構來表示的。

乙個訊息被完整處理是什麼意思?

流式計算單詞個數的例子

topologybuilder builder = new topologybuilder();

builder.setspout(「sentences」, new kestrelspout(「kestrel.backtype.com」, 22133, 「sentence_queue」, new stringscheme()));

builder.setbolt(「split」, new splitstentence(), 10).shufflegrouping(「sentences」);

builder.setbolt(「count」, new wordcount(), 20).fieldsgrouping(「split」, new fields(「word」));

這個拓撲由3個處理單元組成:乙個叫」sentences」的spout,負責從kestrel佇列中讀取句子並作為新的spout元組傳送出去。名稱為」split」的bolt是spout元組的下游消費方,它把接收到句子切分成單詞並傳送出去。名稱為」count」的bolt是」split」 bolt的下游消費方,它使用hashmap

《RabbitMQ》如何保證訊息的可靠性

1.1 事務機制 amqp協議提供了事務機制,在投遞訊息時開啟事務支援,如果訊息投遞失敗,則回滾事務。自定義事務管理器 configuration public class rabbittranscation bean public rabbittemplate rabbittemplate con...

RabbitMQ系列 如何保證訊息的可靠傳輸

訊息的可靠投遞除了需要硬體,網路,訊息中介軟體等的可靠保證外,還需要生產者,消費者來共同保證來完成。一條訊息從生產者產生,到傳送到交換機,並被投遞到佇列,並最終被消費者消費,這整個路徑上,途徑的每乙個地方都要保證訊息的可靠性。其實,官方文件reliability guide已經總結了訊息系統安全的方...

RabbitMQ如何保證訊息的可靠性投遞

目前來說,現在有兩種方案實施 1.資料庫持久化方案 2.訊息延遲投遞方案 資料庫持久化方案 流程 1.將業務訂單資料和生成的message進行持久化操作 一般情況下插入資料庫,這裡如果分庫的話可能涉及到分布式事務 2.將message傳送到broker伺服器中 3.通過rabbitmq的confir...