<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>distributed-systems on Ikoma's Blog</title><link>https://blog.yusukeikoma.com/ja/tags/distributed-systems/</link><description>Recent content in distributed-systems on Ikoma's Blog</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Sat, 19 Sep 2026 21:10:16 +0900</lastBuildDate><atom:link href="https://blog.yusukeikoma.com/ja/tags/distributed-systems/index.xml" rel="self" type="application/rss+xml"/><item><title>APNs が保持する通知は1アプリ1件だけなので、プッシュはヒントとして設計する</title><link>https://blog.yusukeikoma.com/ja/posts/push-notifications-are-hints-apns-stores-one/</link><pubDate>Sat, 19 Sep 2026 21:10:16 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/push-notifications-are-hints-apns-stores-one/</guid><description>端末がオフラインのとき、アプリが終了されたとき、送信が多すぎるときにプッシュがどうなるかを、AppleとGoogleは文書で説明しています。通知は置き換えられ、捨てられ、順序が入れ替わり、遅れます。文書に書かれた失敗モードの表と、ペイロードを適用するクライアントが収束せず、カーソルから取得するクライアントが収束することを示す小さなシミュレーションを紹介します。</description></item><item><title>カーソル・有限ログ・スナップショットで、再接続したイベントストリームを再開する</title><link>https://blog.yusukeikoma.com/ja/posts/resumable-streams-cursors-last-event-id-snapshots/</link><pubDate>Fri, 04 Sep 2026 19:26:37 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/resumable-streams-cursors-last-event-id-snapshots/</guid><description>再接続したクライアントが、状態を取りこぼさず、重複せず、履歴を読み直さずに追いつく方法を、「全部読み直す」から「上限つきのログとスナップショットのフォールバック」まで、版0から版4まで段階的に組み立てます。ブラウザの EventSource が再接続時と non-200 応答のときに実際に何をするか、スナップショットの順序のバグ、決定木も扱います。</description></item><item><title>リトライで二重に処理される。「ちょうど1回」は作れない</title><link>https://blog.yusukeikoma.com/ja/posts/exactly-once-delivery-idempotency-and-backoff/</link><pubDate>Fri, 28 Aug 2026 10:07:45 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/exactly-once-delivery-idempotency-and-backoff/</guid><description>リクエストがタイムアウトしたとき、クライアントはリクエストが失われたのか、確認応答だけが失われたのかを区別できません。だから「ちょうど1回」の配送は作れず、実際にできるのは「少なくとも1回の配送」と「重複を除く受け手」の組み合わせです。不安定なネットワークでの実験、正しく見えて89件を重複させるバグ、原子的な重複排除ストア、ジッターのシミュレーションで確かめます。</description></item><item><title>エッジトリガーのepollは部分読みで止まる。イベント配信も、同じ理由で壊れる</title><link>https://blog.yusukeikoma.com/ja/posts/level-triggered-invalidation/</link><pubDate>Tue, 25 Aug 2026 17:33:01 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/level-triggered-invalidation/</guid><description>epoll のエッジトリガーは部分的に読むと止まりますが、レベルトリガーは止まりません。同じ違いが、イベントの喪失・重複・順序入れ替えに耐えられるかを分けます。再現できる epoll の実験、損失のあるチャネル上での5通りのシミュレーション、そして見落とされがちな競合(再取得の最中に届いたイベント)を扱う40行ほどの invalidator を紹介します。</description></item><item><title>共同編集の実体と残す保存を分ける</title><link>https://blog.yusukeikoma.com/ja/posts/live-document-and-saved-copy/</link><pubDate>Thu, 13 Aug 2026 10:14:09 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/live-document-and-saved-copy/</guid><description>共同編集の文書同期とスナップショット保存を分離し、初回同期前の空の文書による上書きを防ぐ設計を説明します。</description></item><item><title>開始の許可を未終了のあいだ一つにする</title><link>https://blog.yusukeikoma.com/ja/posts/one-open-admission/</link><pubDate>Wed, 12 Aug 2026 10:27:31 +0900</pubDate><guid>https://blog.yusukeikoma.com/ja/posts/one-open-admission/</guid><description>分散タスクの同時実行制御として、作業面ごとの開始許可・投入時の宛先固定・マシン停止時の冪等な再送を設計する方法を説明します。</description></item></channel></rss>