背景
静的情報:リアルタイムでない状態を持つデータ
グルレッスン毎日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