このトピックでは、クライアント側で DoH JSON API を統合する方法について説明します。
DoH JSON API 統合フロー
次のフローチャートは、クライアント側でのドメイン名の名前解決プロセスを示しています。
設計ポリシー
ドメイン名の名前解決メカニズムは、次の設計ポリシーに従う必要があります。
フォールバックポリシー
HTTPDNS は BGP Anycast と統合され、複数のリージョンとデータセンターにまたがるディザスタリカバリを提供しますが、最悪のシナリオでもクライアント側の名前解決に影響が出ないように、次のフォールバックポリシーを採用することを推奨します。
1. まず、HTTPDNS にドメイン名クエリを送信します。
2. HTTPDNS クエリが 200 以外のステータスコードを返すか、接続タイムアウトが発生した場合は、ローカル DNS を使用してドメイン名を解決します。推奨されるタイムアウトは 3 秒です。
キャッシュポリシー
名前解決リクエストの数を最小限に抑えるために、結果をローカルにキャッシュします。キャッシュルールは次のとおりです。
1. キャッシュ期間:キャッシュ期間は 60 秒から 600 秒の間の値に設定します。
2. キャッシュの更新:次の 2 つの状況でキャッシュを更新します。
ユーザーのネットワーク状態が変化した場合:クライアントが WWAN と Wi-Fi ネットワークを切り替えると、アクセスポイントのネットワークプロバイダーが変更される場合があります。この場合、新しい名前解決リクエストを HTTPDNS に送信して、ユーザーの現在のネットワークに最適なエンドポイントを取得する必要があります。
キャッシュの有効期限が切れた場合:キャッシュされた名前解決の有効期限が切れると、クライアントは新しい名前解決リクエストを HTTPDNS に送信して、ドメイン名の最新の IP アドレスを取得する必要があります。ユーザーがキャッシュの有効期限が切れ次第、最新の IP アドレスを取得できるように、タイマーを使用して期限切れのキャッシュエントリを 1 分ごとに更新することを推奨します。
IP 最適化ポリシー
HTTPDNS にドメイン名クエリを送信して名前解決結果を取得した後、IP の最適化を実行できます。このプロセスでは、結果をキャッシュし、ソケットまたは ping メソッドを使用して各 IP アドレスの速度を非同期でテストし、速度によって IP アドレスをソートしてから、ソートされた結果でキャッシュを更新します。
注意事項
頻繁な HTTPDNS リクエストはコストを増加させる可能性があるため、キャッシュの TTL 値を低く設定しすぎないでください (最小 60 秒)。
HTTPDNS を使用するサービスは、ユーザーのローカル DNS をディザスタリカバリチャネルとして保持する必要があります。HTTPDNS が利用できない場合 (ネットワークの不安定さや HTTPDNS サービスの問題による)、フォールバック解決のためにローカル DNS を使用できます。
可能な限り、異なる機能に同じドメイン名を使用してください。URL によってリソースを区別します。これにより、名前解決リクエストの数が減り、コストが削減されます。
HTTPDNS リクエストの推奨タイムアウトは 2 秒から 5 秒です。