データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

AmazonAuroraエンドポイントを理解する

Aurora Readレプリカを使用したことがある場合は、いくつかの異なるエンドポイントが利用可能であることに気付いたかもしれません。 クラスタエンドポイントリーダーエンドポイント 、およびインスタンスエンドポイント …これらすべてのオプションを使用して、どのオプションをいつ使用するかをどのように知ることができますか?他の重要なシステムと同様に、答えは…状況によって異なります。このブログ投稿では、さまざまなエンドポイント、それらのユースケース、およびそれらの設計上の決定に伴うトレードオフについて説明します。

まず、AmazonAuroraで利用できるさまざまなエンドポイントに触れてみましょう。

  • クラスターエンドポイントクラスターエンドポイント アプリケーションをそのDBクラスターの現在のプライマリDBインスタンスに接続します。アプリケーションは、このインスタンスの読み取りと書き込みの両方を行うことができます。

  • リーダーエンドポイントリーダーエンドポイント 使用可能なリードレプリカのプール全体で接続の負荷を分散します。ここで読み取りクエリをオフロードし、プライマリDBインスタンスの負荷を軽減します。

  • インスタンスエンドポイントインスタンスエンドポイント クラスタ内の特定のインスタンスに接続します。クライアントは、Amazon Auroraに接続分散を処理させるのではなく、クエリの割り当てをきめ細かく制御できます。

あなたが何を考えているか知っています…クラスタエンドポイントに接続するだけです forwrites、リーダーエンドポイント すべての読み取りについて、そしてなぜ特定のインスタンスに接続するのでしょうか。これは、組み込みのフォールトトレランスをバイパスし、問題を抱えています。前に説明したように、アプリケーションとそのAuroraとの相互作用により、複雑な(または少なくとも重要な)システムが作成されます。複雑なシステムでは、深夜に電話を楽しむ場合を除いて、ワンサイズですべてに対応することはできません。

いくつかのシナリオを見て、さまざまなエンドポイントをいつどこで使用するかを見てみましょう。

即時の一貫性

一部のアプリケーションは、データがすぐに一貫していることを期待しています。これらのアプリケーションがデータを書き込むと、「ローカルデータではなくモデルに依存する」という多くのデザインパターンのいずれかに厳密に準拠してデータをすぐに読み取ります。 AmazonAuroraはACIDに準拠しています。 クラスタエンドポイントからの読み取り 書き込みコミットが成功した直後に、期待されるデータが取得されます(次の読み取りの前に別のトランザクションがデータを変更しなかったと仮定します)。

問題が発生するのは、書き込みがクラスタエンドポイントに送信されるときです。 および読み取りは、リーダーエンドポイントに対して行われます。 。これは、データの書き込みとリーダーに表示されるまでの待ち時間が原因です。複製の待ち時間は100ミリ秒未満ですが、瞬時ではないため、競合状態が発生します。書き込み後すぐにデータを読み取る必要があるシナリオがある場合は、 Cluster Endpointを使用してください 読み取りと書き込みの両方。追加のパフォーマンスが必要な場合は、プライマリインスタンスのサイズを増やす必要があることに注意してください。

ただし、結果整合性が許容可能であり、アプリケーションがそれをサポートしている場合は、リーダーエンドポイントを使用します。 プライマリインスタンスの負荷を軽減するための優れた方法です。

読み取りのオフロード

書き込み後の即時読み取りに問題がある場合は、別のリーダーエンドポイントを使用する意味は何ですか。 ?わずかに一貫性のないデータが問題にならない多くのユースケースがあります。例:日次レポート。バッチジョブを実行して昨日のデータからレポートを生成する場合、100ミリ秒のレプリケーションラグは重要ではありません。 eコマースサイトでの商品の説明など、他のシナリオを想像するのは簡単です。レプリケーションの遅れの影響を受けるよりも、ユーザーのブラウザに古いデータが含まれている可能性が高くなります。

一般に、即時の整合性に依存しない読み取りの多いワークロードでは、リーダーエンドポイントの使用を検討する必要があります。 。

不均一なワークロード

インスタンスエンドポイントを使用することが理にかなっている状況があります 。 ElasticLoadBalancerの背後にステートレスマイクロサービスが多数あるアプリケーションがあるとします。この状況では、クエリがクライアント全体に均等に分散されていると想定するのが妥当です。したがって、リーダーエンドポイントを使用する場合は、読み取りレプリカ全体に分散されます。 。

しかし、各クライアントのワークロードが均一に分散されていない状況についてはどうでしょうか。レポートサービスがミックスに追加された場合、1つのリードレプリカは他のレプリカと比較して不釣り合いに高い負荷がかかります。前述のマイクロサービスもこのリードレプリカを使用している場合、レポートサービスで使用されているインスタンスをクエリするときに、クエリのパフォーマンスが低下する可能性が高くなります。これを回避するための1つのアプローチは、Amazon Auroraにこれを行わせるのではなく、クライアント側で接続の分散を管理することです。幸い、これはインスタンスエンドポイントを使用して簡単に実行できます。 リーダーエンドポイントの代わりに .MariaDB Connector / J for Aurora forMySQLまたはAmazonAuroraPostgreSQLを使用した高速フェイルオーバーを使用すると、ドライバーは、リードレプリカとして使用する個々のインスタンスを認識できるため、クエリが個々のインスタンスにどのように分散されるかをドライバーが直接管理できます。

DNSキャッシングを管理する

ワークロードの性質を理解することに加えて、Auroraの高可用性とリーダーエンドポイントを提供するために接続がどのように割り当てられるかを理解することが重要です。 負荷分散。

自動クラスタエンドポイントの管理 フェイルオーバーとリーダーエンドポイント ロードバランシングは、IP、TCP、またはデータベースクライアントプロトコルレイヤーではなく、DNS(Amazon Route 53)を介して処理されます。 DNSを介した接続の分散を処理するということは、そのアプリケーションが新しい接続要求ごとにDNSクエリを作成する必要があることを意味します。 DNSキャッシングを使用するアプリケーションは、AmazonAuroraのDNSレコードTTLと一致するようにキャッシュタイムアウトを調整する必要があります。 Aurora DNSレコードTTLよりも長いDNS応答をキャッシュすると、いくつかのエラー状態が発生します。高可用性(HA)フェイルオーバーイベントが発生した場合、つまり、リードレプリカがプライマリにプロモートされた場合、キャッシュされたDNS応答は、アプリケーションが古い障害のあるインスタンスへの再接続を試みることを意味します。 リーダーエンドポイントの場合 、DNS応答をキャッシュすると、複数の接続が使用可能なリードレプリカに分散されるのではなく、特定のリードレプリカに送られます。

まとめ

ご覧のとおり、重要な本番ワークロードに関しては、万能のソリューションはありません。アプリケーションで即時の整合性が必要な場合は、読み取りと書き込みの両方がクラスターエンドポイントに送信されることを確認してください。 。読み取りクエリがわずかなレプリケーションラグを処理できる場合は、読み取りクエリをリーダーエンドポイントにオフロードします。 。リードレプリカを使用できるが、クエリがすべてのクライアントに均一に分散されていない場合は、インスタンスエンドポイントを使用します。 クライアント側で接続の分散を管理します。アプリケーションがDNSレコードTTLよりも長いキャッシュタイムアウトでDNSキャッシングを使用している場合、エンドポイントはクラスタエンドポイント中に期待どおりに動作しないように見えることを忘れないでください。 HAフェイルオーバーまたはリーダーエンドポイントの使用時 。

アプリケーションの性質、Auroraエンドポイントの動作を理解し、その知識を正しく適用することで、より堅牢なアプリケーション環境が実現します。これは、ユーザーとお客様にとって非常に重要です。深夜に停止電話をかけたい人はいません。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。


  1. ObjectRocketインスタンスでJSONStudioを使用する方法

    JSONStudioとObjectRocket、Javaで行われた一致。 MySQLを使用したことがある場合は、PHPMyAdminやMySQL Workbenchなどのツールを使用してデータベースとインターフェイスし、アドホッククエリを実行したり、レポートを生成したりしたことがあるでしょう。これらのツールは長い間使用されており、時間の経過とともに成熟して、MySQLとの日常的なやり取りに役立つツールになりました。 MongoDBで同様の製品を検索したことがある場合は、jSonar IncのJSONStudioをぜひご覧ください。これは、MongoDBの実装と対話するためのウェブベースのフロ

  2. エンドポイント マッパーから利用できるエンドポイントはもうありません [解決済み]

    修正 から利用できるエンドポイントはもうありませんエンドポイント マッパー: このエラーが発生した場合は、プリンターをインストールしようとしているか、ネットワーク内でドライブを共有していることを意味します。通常、ドメインに参加しようとすると「No More Endpoints Available」エラーが発生しますが、Windows サービスが破損しているため、その特定のドメインに参加できない他のサービスと競合し、最終的にエラーが発生します。とにかく、このエラーは非常に煩わしいので、トラブルシューティング担当者が次のトラブルシューティング手順に従ってこのエラーを修正するためにここにいます。