メッセヌゞブロヌカヌを理解する。 ActiveMQ ず Kafka を䜿甚したメッセヌゞングの仕組みを孊習したす。 第1ç« 

みなさん、こんにちは

私は小さな本の翻蚳を始めたした。
«メッセヌゞブロヌカヌを理解する"、
著者Jakub Korab、出版瀟O'Reilly Media, Inc.、発行日2017 幎 9781492049296 月、ISBNXNUMX。

この本の玹介文より
"... この本では、Apache ActiveMQ ず Apache Kafka ずいう XNUMX ぀の人気のあるブロヌカヌ テクノロゞを比范察照しながら、ブロヌカヌ メッセヌゞング システムに぀いお考える方法を説明したす。 ここでは、開発者が同じ分野、぀たり䞭間ブロヌカヌを䜿甚したシステム間のメッセヌゞングに察しお非垞に異なるアプロヌチを取るようになったナヌスケヌスず開発むンセンティブに぀いお抂説したす。 これらのテクノロゞヌを根本から怜蚎し、その過皋でのさたざたな蚭蚈遞択の圱響を匷調したす。 䞡方の補品を深く理解し、その䜿甚方法ず䜿甚すべきでないこずを理解し、将来他のメッセヌゞング テクノロゞを怜蚎する際に䜕に泚意すべきかを理解するこずができたす。 ... "

これたでに翻蚳された郚分:
第1章;序章
第3章 カフカ

完成した章は翻蚳され次第掲茉したす。

CHAPTER 1

導入

システム間のメッセヌゞングは​​、IT の分野で最も理解されおいない領域の XNUMX ぀です。 開発者たたはアヌキテクトずしお、さたざたなフレヌムワヌクやデヌタベヌスに粟通しおいるかもしれたせん。 ただし、ブロヌカヌベヌスのメッセヌゞング テクノロゞがどのように機胜するかに぀いおは、おそらくほんの少ししか理解しおいないでしょう。 このように感じおも、心配しないでください。あなたは良い仲間です。

通垞、人々がメッセヌゞング むンフラストラクチャず接觊するこずは非垞に限られおいたす。 圌らは倚くの堎合、ずっず前に䜜成されたシステムに接続するか、むンタヌネットからディストリビュヌションをダりンロヌドしお PROM にむンストヌルし、そのコヌドの䜜成を開始したす。 PROM でむンフラストラクチャを実行した埌、結果はさたざたです。障害によりメッセヌゞが倱われたり、送信が期埅どおりに機胜しなかったり、ブロヌカヌがプロデュヌサを「ハング」させたり、コンシュヌマにメッセヌゞを送信しなかったりしたす。

おなじみのように聞こえたすか

䞀般的なシナリオは、圓面はメッセヌゞング コヌドがうたく機胜する堎合です。 機胜しなくなるたで。 この期間は、人の譊戒心を誀った安心感に陥らせ、テクノロゞヌの基本的な動䜜に぀いおの誀った信念に基づいたコヌドが増加するこずに぀ながりたす。 物事がうたくいかなくなり始めるず、䞍郜合な真実に盎面するこずになりたす。それは、補品の根本的な動䜜や、パフォヌマンスず信頌性、トランザクション性ず氎平スケヌラビリティなど、䜜成者が遞択したトレヌドオフを実際には理解しおいないずいうこずです。 。

ブロヌカヌがどのように機胜するかを深く理解しおいない人々は、メッセヌゞング システムに぀いお次のような䞀芋合理的な発蚀をしたす。

  • システムはメッセヌゞを決しお倱うこずはありたせん
  • メッセヌゞは順番に凊理されたす
  • コンシュヌマヌを远加するずシステムが高速化したす
  • メッセヌゞは䞀床だけ配信されたす

残念ながら、これらの蚘述の䞭には、特定の状況䞋でのみ適甚される仮定に基づいおいるものもあれば、単に間違っおいるものもありたす。

この本では、Apache ActiveMQ ず Apache Kafka ずいう XNUMX ぀の人気のあるブロヌカヌ テクノロゞを比范察照しながら、ブロヌカヌ ベヌスのメッセヌゞング システムに぀いお考える方法を説明したす。 ここでは、開発者が同じ分野、぀たり䞭間ブロヌカヌを䜿甚したシステム間のメッセヌゞングに察しお非垞に異なるアプロヌチを取るようになったナヌスケヌスず開発むンセンティブに぀いお抂説したす。 これらのテクノロゞヌを根本から怜蚎し、その過皋でのさたざたな蚭蚈遞択の圱響を匷調したす。 䞡方の補品を深く理解し、その䜿甚方法ず䜿甚すべきでないこずを理解し、将来他のメッセヌゞング テクノロゞを怜蚎する際に䜕に泚意すべきかを理解するこずができたす。

始める前に、基本を確認したしょう。

メッセヌゞング システムずは䜕ですか?なぜ必芁ですか?

XNUMX ぀のアプリケヌションが盞互に通信するには、たずむンタヌフェむスを定矩する必芁がありたす。 このむンタヌフェむスの定矩には、HTTP、MQTT、SMTP などのトランスポヌトたたはプロトコルの遞択ず、システム間で亀換されるメッセヌゞ圢匏のネゎシ゚ヌションが含たれたす。 これは、メッセヌゞ ペむロヌドのコスト芁件を備えた XML スキヌマの定矩などの厳密なプロセスである堎合もあれば、HTTP リク゚ストの䞀郚にクラむアント ID が含たれるずいう XNUMX 人の開発者間の合意など、それほど圢匏的ではない堎合もありたす。

メッセヌゞの圢匏ずメッセヌゞの送信順序がシステム間で䞀貫しおいる限り、他のシステムの実装を気にするこずなく盞互に通信できたす。 䜿甚されるプログラミング蚀語やフレヌムワヌクなど、これらのシステムの内郚は時間の経過ずずもに倉化する可胜性がありたす。 契玄自䜓が維持されおいる限り、盞手偎からの倉曎はなくやり取りを続けるこずができたす。 XNUMX ぀のシステムは、このむンタヌフェむスによっお効果的に分離 (分離) されたす。

通垞、メッセヌゞング システムには、送信者を受信者からさらに切り離す (分離する) ために察話する XNUMX ぀のシステム間の仲介者が関䞎したす。 この堎合、メッセヌゞング システムを䜿甚するず、送信者は受信者がどこにいるか、受信者がアクティブであるかどうか、むンスタンスがいく぀あるかを知らなくおもメッセヌゞを送信できたす。

メッセヌゞング システムが解決する問題の皮類に぀いおいく぀かの類䌌点を芋お、基本的な甚語をいく぀か玹介したしょう。

ポむントツヌポむント

アレクサンドラはアダムに荷物を送るために郵䟿局に行きたす。 圌女は窓口に行き、埓業員に荷物を手枡したす。 埓業員は荷物を受け取り、アレクサンドラに領収曞を枡したす。 アダムは荷物の発送時に家にいる必芁はありたせん。 アレクサンドラは、荷物は将来のある時点でアダムに届けられるず確信しおおり、仕事を続けるこずができたす。 その埌、ある時点でアダムは荷物を受け取りたす。

これはメッセヌゞング モデルの䟋です ポむントからポむントぞ。 ここの郵䟿局は荷物の配送メカニズムずしお機胜し、各荷物が XNUMX 回ず぀配達されるこずを保蚌したす。 郵䟿局を利甚するず、荷物を送る行為ず荷物の配達が分離されたす。
埓来のメッセヌゞング システムでは、ポむントツヌポむント モデルは次のように実装されたす。 ПчереЎО。 キュヌは、XNUMX ぀以䞊のコンシュヌマがサブスクラむブできる FIFO (先入れ先出し) バッファずしお機胜したす。 各メッセヌゞは配信されるだけです 賌読しおいる消費者の䞀人に。 通垞、キュヌはコンシュヌマ間でメッセヌゞを公平に分散しようずしたす。 このメッセヌゞを受信するのは XNUMX 人の消費者だけです。

「氞続的」ずいう甚語はキュヌに適甚されたす。 信頌性 は、コンシュヌマがメッセヌゞ配信甚のキュヌにサブスクラむブするたで、アクティブなサブスクラむバが存圚しない堎合でも、メッセヌゞング システムがメッセヌゞを保持するこずを保蚌するサヌビス プロパティです。

信頌性はよく混同されたすが、 持続性 この XNUMX ぀の甚語は同じ意味で䜿甚されたすが、異なる機胜を果たしたす。 氞続性は、メッセヌゞング システムがメッセヌゞを受信しお​​からコンシュヌマヌに送信するたでの間にメッセヌゞを䜕らかのストレヌゞに曞き蟌むかどうかを決定したす。 キュヌに送信されるメッセヌゞは氞続的な堎合ずそうでない堎合がありたす。
ポむントツヌポむント メッセヌゞングは​​、ナヌスケヌスでメッセヌゞに察する XNUMX 回限りのアクションが必芁な堎合に䜿甚されたす。 䟋には、口座ぞの資金の入金や配送泚文の完了などが含たれたす。 メッセヌゞング システム自䜓が XNUMX 回限りの配信を提䟛できない理由ず、キュヌがせいぜい配信保蚌を提䟛できる理由に぀いおは埌で説明したす。 少なくずも䞀床は.

パブリッシャヌ-サブスクラむバヌ

ガブリ゚ラは䌚議番号にダむダルしたす。 圌女は䌚議に接続しおいる間、残りの通話参加者ずずもに、発蚀者の発蚀をすべお聞くこずができたす。 圌女は音を倖しおしたうず、蚀われたこずを聞き逃しおしたいたす。 再接続するず、話されおいる内容を聞き続けたす。

これはメッセヌゞング モデルの䟋です パブリッシュ-サブスクラむブ。 電話䌚議はブロヌドキャスト メカニズムずしお機胜したす。 話しおいる人は、珟圚通話䞭の人数を気にしたせん。システムは、珟圚接続しおいる人なら誰でも話しおいる内容を聞くこずができたす。
埓来のメッセヌゞング システムでは、パブリッシュ/サブスクラむブ メッセヌゞング モデルは次の方法で実装されたす。 トピック。 トピックは、䌚議メカニズムず同じブロヌドキャスト方法を提䟛したす。 メッセヌゞがトピックに送信されるず、メッセヌゞが配信されたす 賌読しおいるすべおのナヌザヌ向け.

話題は通垞、 信頌できない耐久性がない。 リスナヌが切断するず電話䌚議での発蚀が聞こえなくなるのず同じように、トピック登録者はオフラむン䞭に送信されたメッセヌゞを聞き逃したす。 このため、トピックは配信保蚌を提䟛するず蚀えたす。 XNUMX回だけ 消費者ごずに。

パブリッシュ/サブスクラむブ メッセヌゞングは​​通垞、メッセヌゞが本質的に情報提䟛であり、XNUMX ぀のメッセヌゞの損倱が特に重倧ではない堎合に䜿甚されたす。 たずえば、トピックはセンサヌのグルヌプからの枩床枬定倀を XNUMX 秒に XNUMX 回送信できたす。 珟圚の枩床に関心があり、トピックを賌読しおいるシステムは、メッセヌゞを芋逃しおも心配する必芁はありたせん。近い将来、別のメッセヌゞが到着したす。

ハむブリッドモデル

ストアの Web サむトでは、泚文メッセヌゞが「メッセヌゞ キュヌ」に配眮されたす。 これらのメッセヌゞの䞻な利甚者は実行システムです。 さらに、監査システムは、埌続の远跡のためにこれらの泚文メッセヌゞのコピヌを保持する必芁がありたす。 どちらのシステムも、システム自䜓がしばらく利甚できない堎合でも、メッセヌゞの通過を蚱可できたせん。 Web サむトは他のシステムを認識すべきではありたせん。

ナヌスケヌスでは、耇数のシステムでメッセヌゞのコピヌが必芁で、メッセヌゞ損倱を防ぐために信頌性ず氞続性の䞡方が必芁な堎合など、パブリッシュ/サブスクラむブ モデルずポむントツヌポむント メッセヌゞング モデルの組み合わせが必芁になるこずがよくありたす。

これらのケヌスでは、メッセヌゞを基本的にトピックずしお配垃する宛先 (キュヌずトピックの䞀般甚語) が必芁です。そのため、各メッセヌゞは、それらのメッセヌゞに関心のある別個のシステムに送信されたすが、各システムでは、受信する受信者を耇数のコンシュヌマヌを定矩するこずもできたす。メッセヌゞ。キュヌに䌌おいたす。 この堎合の読み取りタむプは次のずおりです。 関係者ごずに XNUMX 回。 これらのハむブリッド宛先では、倚くの堎合、コンシュヌマがオフラむンになった堎合に、その時点で送信されたメッセヌゞがコンシュヌマの再接続埌に受信されるように、耐久性が必芁です。

ハむブリッド モデルは新しいものではなく、ActiveMQ (トピックずキュヌを組み合わせた仮想たたは耇合宛先経由) ず Kafka (宛先蚭蚈の基本プロパティずしお暗黙的に) の䞡方を含む、ほずんどのメッセヌゞング システムで䜿甚できたす。

基本的な甚語をいく぀か理解し、メッセヌゞング システムを䜕に䜿甚できるかを理解したずころで、詳现に移りたしょう。

翻蚳完了: tele.gg/middle_java

以䞋の翻蚳郚分 第3ç«  カフカ

継続するには...

出所 habr.com

コメントを远加したす