つまりなにしたの?
出版者と購読者のモデルをなんとなく使っていたので、改めて勉強して、まとめてみた。
センサデータをみんなで購読したり、
逆にセンサが設定ファイルを購読したりすることにも使えるので、
ロボット関連でも結構活用されている。
Pub/Subとは?
登場人物と各々やりたいこと
登場人物はPublisher(出版を行う者: 出版者)とSubscriber(購読を行う者: 購読者)とBroker(出版物仲介を行う者: 仲介者)がいる。
それぞれでやりたいことがある。
- 出版者は購読者を意識せずに出版したい。
- 購読者は興味のある出版物を受け取りたい。
仲介者については後述。
じゃあ出版者は購読者に渡せばいいじゃないかと思うが、
出版者はまだ購読者を意識しなきゃいけないし、購読者は興味のある情報だけがほしい。
増えてくると管理が大変。
購読者の興味
ここで、購読者が興味のある出版物には二種類ある。
- 興味のあるトピックを購読する
(たとえばバーチャルユーチューバー雑誌の購読)
- 興味のあるコンテンツを購読する
(たとえばキズナアイに関する記事の購読、雑誌はまたがっても良い)
こういうのが読みたいって誰かに伝えたら、その情報だけ購読したくなってくる。
仲介者の役割
これを実現するのは仲介者。
仲介者は出版者が誰かという情報と、購読者は何に興味があるのかという情報ももっていて、
それを使ってフィルタリングを行う。
仲介者は出版者の情報を一旦蓄積し、フィルタリングの結果を購読者にわたす。
一旦蓄積して渡す方式はストアアンドフォワード方式というらしい。
間に仲介者がいると、出版者や購読者が増えても、出版者や購読者はそれを意識しないでも良くなる。
Redis等で実現できる
このモデルを実現する方法はいくつかあるけど、
今回はRedisを使ってやってみた。
なお、Redisが担ってくれるのは仲介者。
次回は実際にRedisを使ってPub/Subしてみる。