ブログ · 4 ページ目
開発とデザイン、あとは雑記。
グレースフルシャットダウン:終了手順が 502 と正常応答を分ける
終了信号で即座に exit すると処理中の要求が切られます。正しい順序は、新規受付の停止、処理中の完了待ち、資源の解放、そして終了です。
HTTP キャッシュ:Cache-Control と ETag は半分ずつ担う
Cache-Control は「リクエストを送るか」を、ETag は「送った後で本文を省けるか」を決めます。混同すると片方を直しても直りません。
冪等キー:再試行を安全にする一回の書き込み
ネットワークのタイムアウトはサーバが何もしなかった証拠ではありません。冪等キーで同一リクエストを識別し、再実行せず最初の結果を返します。
JSON 正規化:同じオブジェクトが二つのハッシュになる理由
キーの順序、数値の表記、エスケープの仕方でバイト列は変わります。ハッシュを安定させるには、JSON.stringify に期待せずシリアライズ層で規則を固定します。
メモリ配置:同じアルゴリズムが十倍遅い原因はたいていキャッシュ
主記憶への一回のアクセスは数百サイクル、キャッシュ行の取得は一回です。逐次アクセスとランダムアクセスの差は次数を上回ることが多いです。
デッドロック:四つの条件のどれか一つを壊せばよい
相互排他・保持と待機・横取り不可・循環待機。四つが同時に成立して初めて起きます。実務で壊しやすいのは循環待機で、ロックに全体順序を与えます。
