最終更新:
Click to expand / collapse
現代のAPI統合では、データの送受信だけでなく、すべてのイベントが一度、正しく、確実に処理されるようにすることが重要です。私たちは、外部サービスやキューでの作業における損失や重複を排除するために、中間状態を保持し、メカニズムを再試行し、メッセージの重複を排除するアーキテクチャを実装しています。
これは、トランザクション、決済ゲートウェイ、Webhookイベント、バックグラウンドタスクを扱う場合に特に重要です。
実装されているもの
| メカニズム | 目的とメリット |
|---|---|
| 状態を保存する | 障害箇所から継続したり、処理の進捗を追跡したりする機能 |
| 自動再試行 | エラーが発生した場合の再試行、指数遅延 |
| 重複排除(Deduplication) | 同一の要求またはイベントの二重処理に対する保護 |
| イベントID | 'event_id'、 'message_id'、ハッシュトラッキングのサポート |
| 延期されたタスク | 外部サービスが一時的に利用できない場合は、後でもう一度お試しください |
どのように機能しますか
1.着信リクエストまたはイベントが一意の識別子を受け取ります
2.エントリが処理ログに追加されます(DB、 RedisまたはKafka)
3.エラーの場合、タスクは再試行のためにキューに入れられます(制限と制御)
4.同じイベントが再び受信された場合、システムはそのIDをチェックし、重複を拒否します
5.すべてのイベント履歴と処理ステータスを監査可能
APIとプラットフォームのメリット
ネットワーク障害、繰り返しのWebhook、またはクライアントエラーの重複を排除
一時的な問題でも信頼性の高い配送
外部APIやデータベースへの負荷を最小限に抑える
正確なロギング、監査、リカバリ
さまざまなシナリオ(支払い、ボーナス、イベント)の拡張性と柔軟性)
特に重要な点
金融取引、請求、預金
ゲームイベント: ベット、勝利、決済
Webhookや遅いAPIとの統合
バックグラウンドタスクを備えた重負荷アーキテクチャ