APPクライアントインターフェースのローカルキャッシュ:リクエスト量とピークを削減し、クラウドリソースコストを最適化

背景

静的情報:リアルタイムでない状態を持つデータ

グルレッスン毎日11時の予約取得、類似の整時イベントセールス業務シナリオ。リソースエリア、評価などの静的情報がピーク時にキャッシュされ、リクエスト量とリクエストピークを削減する目標を達成します。

コスト予算管理の下で、クラウドリソースコストとWAFはリクエストピークに制約されます。

業務とデータのセキュリティを考慮し、会社は阿里云のWAFの導入を希望していますが、年間価格とコストが高いです。

目標

APPローカルキャッシュ/前置きキャッシュ

  • バックエンドインターフェースのキャッシュ設定に基づいて応答し、APP側でインターフェースの応答内容をキャッシュする
  • 【コスト削減】APP側からインターフェースのリクエスト量を削減し、それに伴ってコンテナなどの弾性リソースコストを削減し、WAFのコストも削減する
  • 【キャッシュ効果】キャッシュヒット率は、業務特性とユーザーの操作行動に関連する
  • 【キャッシュ対象】サーバー側でデグレード可能なインターフェース

クライアントサイドキャッシュソリューション

クライアント-インターフェースキャッシュ

Content-Type: text/html; charset=utf-8
Cache-Control: max-age=300, private

1. キャッシュルール

クライアントHTTP三方フレームワークが`Cache-Control`関連ロジックを実装し、パラメータに基づいてメモリキャッシュを行います。

  • メモリキャッシュメカニズム(Androidの`OkHttp`はディスクキャッシュ+メモリキャッシュの使用のみ)
  • 機能追加-全体スイッチでキャッシュソリューション全体を制御

2. キャッシュ識別子

キャッシュ識別子 == インターフェース署名

キャッシュ識別子はリクエストフルパス+パラメータのハッシュ値で構成されます。

バックエンドインターフェースキャッシュ設定ソリューション

インターフェースキャッシュ戦略設定

  • インターフェースパス次元で設定
  • 設定項目: キャッシュ有効時間間隔+持続時間
    • キャッシュ有効時間間隔: [startTime, endTime], 毎日繰り返し
    • 持続時間: durationTime, 5m/5s
      • 最大値は5m、設定エラーによる業務への影響を防ぐため
    • 有効状態スイッチ

インターフェースパス: `com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew`

インターフェースキャッシュ設定実装ページ

画像

フロントエンド-バックエンド連携経路

インターフェース署名=path+hash(すべてのパラメータ)

アクション

  • グローバルスイッチ制御
  • キャッシュの実際の操作ポイントを明確に整理、例えばユーザーログアウト時
  • 検証事前実演
  • 繰り返しユーザーの割合30%、繰り返しリクエストの割合を統計
  • グルレッス詳細ページ、厳選評価とcmsインターフェースはキャッシュ可能

キャッシュ対象

【キャッシュ対象】サーバー側でデグレード可能なインターフェース

11時の1秒ピーク>3000+

毎日のピーク: 2024-06-13 **11:00:00** ~ 2024-06-13 **11:00:01

業務ログに基づいて業務リクエスト特徴を分析

# 2024-06-13 **11:00:00** ~ 2024-06-13 **11:00:01

* and header.lk-appv : "6.1.0" and api : "/com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew" and ("gcCoursedetailsbooks" or "gcFloat") | select count( distinct "header.X-devid" )

* and api : "/com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew" and ("gcCoursedetailsbooks" or "gcFloat")

* and api : "/com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew" 

2024-06-13 **10:58:00** ~ 2024-06-13 **11:02:00**

**ログ数**: 73,578

**デバイス数**: 5870

実践ケース

【実践効果】11時の1秒ピーク時にリクエスト量が約x.x万減少し、全体で**20%**減少。

【実践効果】有効期間中にリクエスト量がx.x万+減少し、全体で**70-80%**減少(ローカルキャッシュヒット率)。

ユーザー側での広告エリア取得

【実践効果】11時の1秒ピーク時にリクエスト量がxx00+減少し、全体で**80%**減少。

【実践効果】有効期間中にリクエスト量がx.x万+減少し、全体で**80%**減少。

現在のインストラクターのWeChat QRコード取得

【実践効果】11時の1秒ピーク時にリクエスト量がxx00+減少し、全体で**90%**減少。

【実践効果】有効期間中にリクエスト量がx.x万+減少し、全体で**75+%**減少。

厳選評価

【実践効果】11時の1秒ピーク時にリクエスト量がxx00+減少し、全体で**75%**減少。

【実践効果】有効期間中にリクエスト量がx.x万+減少し、全体で**70%**減少。

参考

  • FinOps Foundation

タグ: クライアントキャッシュ リクエスト最適化 クラウドコスト削減 Cache-Control APIキャッシュ

8月8日 00:55 投稿