40,000MBを追記しただけなのに、実際に書いた量は245,440MBでした。6.14倍です。
段のまとめ直しが起きるからです。設定を変えると4.30倍まで下がりました。
末尾に足すだけの形です。それでも段のまとめ直しがあるので、書き込みは増えます。
Apache Pulsarの記録は、末尾に足すだけの形です。公式は台帳とは、書き手が1つだけの追記のみのデータ構造であり、複数のBookKeeperの保管の節に割り当てられると述べています。
追記だけなら軽いのか。実際に書いた量を数えて比べました。
書き込んだ量 40,000MB。手元にためて 64MB ごとに落とす 落とした先がいっぱいになったら、次の段へまとめ直す 広がり 実際に書いた量 元の何倍 まとめ直した段 収まった段の上限 4倍 245,440MB 6.14倍 3段 40,960MB 10倍 184,640MB 4.62倍 2段 64,000MB 20倍 171,840MB 4.30倍 2段 256,000MB
40,000MBを書いたのに、実際には245,440MBを書いています。6.14倍です。
広がりを20倍にすると4.30倍まで下がります。まとめ直す段が3段から2段に減るためです。
書く先はいつも末尾です。それでも、段がいっぱいになると次の段へまとめ直します。
そのとき移す分と、移す先で重なる分の両方を書きます。この繰り返しが倍率になります。
同じ場所を書き換える方式とは向きが違います。比較はCassandraの記事で扱いました。
広がりを大きくすると、まとめ直しの段が減って倍率が下がる。
A ledger is an append-only data structure with a single writer that is assigned to multiple BookKeeper storage nodes, or bookies.原文Apache Pulsar 公式ドキュメント「Architecture Overview」 この内容の有効期限2027-02-18
記録は残り続けます。だからこそ、期間で絞れる区切り方にしておく必要があります。
Apache Pulsarは、記録を別の仕組みに預けます。公式はPulsarは、残るかたちでのメッセージの保管に、Apache BookKeeperと呼ばれる仕組みを使うと述べています。
残り続けるので、後から読むときの絞り方が効いてきます。実際に数えて比べました。
3年ぶん(1095日)・1日 8MB。合わせて 8,760MB 期間で絞る問い合わせに対し、区切り方を変えて読む量を見る 区切り方 1日ぶん 7日ぶん 30日ぶん 365日ぶん 1095日ぶん 区切らない 8,760MB 8,760MB 8,760MB 8,760MB 8,760MB 年で区切る 2,920MB 2,920MB 2,920MB 2,920MB 8,760MB 月で区切る 243MB 243MB 243MB 2,920MB 8,760MB 日で区切る 8MB 56MB 240MB 2,920MB 8,760MB
1日ぶんを読むとき、区切らなければ8,760MB、日で区切れば8MBです。1095倍の差でした。
月で区切ると243MBです。区切りの単位より細かくは絞れません。
右端の列を見ると、どの区切り方でも8,760MBです。3年ぶん全部を読むなら、区切っても意味がありません。
だから区切りの単位は、いちばん狭い問い合わせに合わせて決めます。広い問い合わせのほうは、どうせ全部読むことになります。
細かく区切りすぎる側の弊害はParquetの記事で扱いました。
Pulsar uses a system called Apache BookKeeper for persistent message storage.原文Apache Pulsar 公式ドキュメント「Architecture Overview」 この内容の有効期限2027-02-18
自分で組む形を選べます。ただし持ち続ける費用があるので、使う割合で結論が変わります。
Apache Pulsarは、自分でまとまりを組む形をとれます。公式はいちばん上の水準では、Pulsarの1つの実体は、1つ以上のPulsarのまとまりからなると述べています。
自分で持つと、使わない期間も維持費がかかります。どこで並ぶのか実際に数えて比べました。
購入は一括 100、そのあと毎月 3.5。借りる場合は毎月 12(使った月だけ) 借りる側は使わない月に止められるものとした 使う割合 6か月 12か月 18か月 24か月 36か月 48か月 20% 借りる 借りる 借りる 借りる 借りる 借りる 50% 借りる 借りる 借りる 借りる 借りる 購入 80% 借りる 借りる 購入 購入 購入 購入 100% 借りる 購入 購入 購入 購入 購入 分かれ目の月数(購入の総額と、借りる総額が並ぶ点) 使う割合 分かれ目 そのときの総額 20% 並ばない — 50% 40.0か月 240 80% 16.4か月 157 100% 11.8か月 141
常に使うなら11.8か月で並びます。それより長く使うなら、自分で持つほうが安くなります。
使う割合が20%だと並びません。毎月の維持費が、借り賃の期待値を上回るためです。
50%でも分かれ目は40.0か月です。3年以上使い続ける見込みがなければ、借りるほうが安く済みます。
つまり判断の入口は、期間ではありません。使わない時間がどれだけあるかです。
3つの計測はいずれも手元で書いた模型で、実際のApache Pulsarを動かしたものではありません。まとめ直すときに書く量を「移す分+移す先の重なる分」の2倍として計算しており、実装によって係数は変わります。1日8MBや購入100・毎月3.5といった値もすべて置いたものです。借りる側が使わない月に止められるという前提も、実際には難しいことがあります。ここで見せているのは、追記だけの形でも書き込みは数倍になるという点と、区切りの単位より細かくは絞れないという点の2つです。
At the highest level, a Pulsar instance is composed of one or more Pulsar clusters.原文Apache Pulsar 公式ドキュメント「Architecture Overview」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る