フォロー

ハッシュタグリレーの非効率だった部分に手を入れて、だいぶ動きが良くなったよ。もう2年とか3年ぶりにコードいじるので、完全に忘れてるよね!

--

ウチのリレーはCrystal言語で書かれているんでみんな馴染みがないと思うけど、CrystalはRuby風の静的型付け言語で、バイナリにコンパイルされて実行速度は速いし、書いてて楽しい感じはRubyと一緒。

Mastodon用に、最初はRubyでpub-relay-protoが作られて(Eugenさん作)、そのCrystal版をChris Hobbsが作った。たぶんMastodon本家から有償開発依頼して書いてもらったものだと思う。

このCrystal版は、一回大規模なリファクタリングが行われて、当初はCrystal版のSidekiqベースで作られていたんだけど、途中でプロデューサー・コンシューマーパターンのアーキテクチャに変更になっているのね。

ハッシュタグリレーは、Sidekiq版からの派生。Fedibirdリレーで使ってる方は、後者のpub-relayの直系になってるよ。

sidekiqは使い慣れてるのと、複数プロセスで動かせばスケールし易い。後者は何かプロセス間通信の仕組みを導入する必要があるね。

ハッシュタグリレーは、Fedibirdよりも前に作られたもので、前身みたいなところがある。

ハッシュタグでFediverseを繋ぐ仕組みが欲しかったことと、購読の仕組みを作ろうと思って作ったのね。

普通は、サーバの管理者がリレーに参加するかどうかを決めて実行する。流量が増えて、サーバの負担が大きくなるからね。

ハッシュタグリレーは、投稿についてはハッシュタグがついているものだけを転送するリレーで、つないだサーバの負担がいくらか軽い。投稿以外、例えばアカウントの削除とかそういうアクティビティは全部転送するんだけどね。

あと、実は個人でリレーに参加することができるんだよ。

自分の投稿をリレーに流して、ハッシュタグリレーに参加しているサーバに流すことができるのと、

リレーに対し、欲しいハッシュタグやアカウントを指定して購読することができる。

misskey.ioとかmstdn.jp、Pawooのような、リレーに参加することが期待できない(大きすぎるので)サーバから自分だけ参加することもできるんだ。

リレー全体に参加すると負荷が高すぎると感じる場合に、たとえば # gochisou_photo だけ流して貰うようにするとか、そういう選択もできるよ。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。