雑に読むMisskey
雑に読むのそっちか
こんなことがわかると良い
他のサーバーとどうやってメッセージをやり取りするの?
noteのデータが大きくなってきたらどうするの?
noteのデータはDBに保存されると思うけど、それがかなり大きくなったらどうする?
画像はどこに保存されるの?
配信URLはark.jp
これはS3とかに保存すればいいか(興味が消えた)
src/coreがcoreっぽい(小並感)
コミットメッセージ面白い
ActivityPubの実装
ApInboxをちょっと見るといろんなアノテーションがいっぱい
仕組みを理解していない段階でこれを眺めるのは難しそう
2つのレイヤーがある
サーバー間で情報を共有するプロトコル
クライアント-サーバーでのプロトコル
片方だけの実装でも良いが、1つを実装したらもう一方も実装が容易
両者は似ているってことかな
サーバーのユーザーアカウントをユーザーのことをActorという
Actorにはメッセージをやり取りする方法(エンドポイント)が提供されている
inbox メッセージを受信する
サーバー間のみが、誰かのinboxにPOSTできる
misskeyだとサーバーのエンドポイントのPOSTの実装は
ここ(outboxも同様)
キューがつまれる
取り出されるのはどこ?
QueueProcessorServiceがそれっぽい
Activityの種類によって処理が行われる
actorはinboxからGETすることでメッセージを読むことができる
redis 5だから..という話もあるけど、とっくにredis7だからこの点は問題ない
outbox 送信する
ここにActorが送信すると世界中にメッセージが配信される
誰かのOutboxからメッセージをGETすることができる
サーバー to サーバー
サーバー間で別のサーバーのユーザーのメッセージを受け渡すときに使うのかな
クライアント to サーバー
AlyssaがBenにメッセージを送信するとき、まず自分のoutboxにpostする
するとサーバーがbenのinboxにpostする
BenのActivityStreams actor objectを検索する
ということは、misskeyのinboxの実装にもこういう実装があるはず
AlyssaのスマホはinboxにGETをポーリングしてメッセージを確認する
GET /inbox の実装どこ?
noteのデータがどうなっているのか
貢献できそうなポイント
トレンドのハッシュタグのロジック
起動時に出るMisskeyのアスキーアートを発見した