キャッシュは、ユーザーから最も頻繁に要求される情報が永続ストレージから中間バッファーに移動されるという事実に要約されており、I / O操作がはるかに高速になります。 「キャッシュ」という伝統的な概念は私たちの生活の多くの分野で見られ、その役割は非常に重要です。 具体的には、ネットワークIT業界では、データキャッシングを使用して、ユーザーからの非常に要求の多い情報を格納するサーバーからの負荷を軽減します。 ソーシャルネットワークへの通常の訪問者にこのアプローチを実装した結果、その時点で最も人気のあるWebページでさえも、即座にロードされます。 一般的なネットワークリソースが正常に機能するために、このテクノロジーは「望ましい」というカテゴリーから「必要な」カテゴリーへと長い間移行しています。 そしてもちろん、Facebookはその種の唯一のものではありません。 キャッシュは、他の同様のインターネットプロジェクト(Twitter、Instagram、Redditなど)にとっても重要です。
Facebookネットワークインフラストラクチャエンジニアは、キャッシュプロセスを管理するための特別なツールを作成し、「Mcrouter」という名前を付けました。 今月初め、Mcrouterの存続と発展のために非常に重要なイベントが開催されました。 サンフランシスコで開催された季節的な会議で、Facebookの関係者は彼らの発案のためのシステムコードを明らかにしました。 実際、これはmemcachedプロトコルベースのルーターであり、数千のキャッシュサーバーと企業のデータセンターにある数十のクラスター間のすべてのトラフィックを管理します。 したがって、memcachedテクノロジーはFacebookなどのプロジェクトで非常に機能します。
Memcachedは、分散インフラストラクチャの一部であるサーバーにデータをキャッシュするためのシステムです。 このソフトウェア製品は2003年に初めてLiveJournalに使用されましたが、今日ではすでにウィキペディア、ツイッター、グーグルなどの多くのインターネット企業の不可欠な一部となっています。
Instagramは、Facebookデータセンターに移行する前に、Amazon Web Services(AWS)のサーバーインフラストラクチャで既に動作していたmcrouterの使用を開始しました。 偶然にもAWSでホストされていたRedditの従業員は、プロジェクトのマクロテストを既に完了しており、近い将来、リソース全体を使用に完全に移行する予定です。
オープンソース形式化
Facebookは、データセンターを管理し、多くのオープンソースソフトウェア製品を作成して使用しています。 それが彼らの原則です。 サンフランシスコでの最近の会議で、会社の代表者は、使用するソフトウェアの「オープン性」を最大化することの重要性について多くのことを述べました。 この方向でさらに作業を進めるという彼らのイニシアチブは、とりわけ、Google、Twitter、Box、GithubなどのIT大手によってサポートされていました。 オープン性のリスクがいくつかありますが、ソフトウェアが開発のために得られる利点は明らかです。 さて、発表されたイニシアチブに従って実際の行動がどのようになるかを待つ必要があります。そして、彼らは待つのに時間がかかりません。
ソフトウェアの「オープン性」のイニシアチブをサポートしたフォーラムに参加している企業は、TODO組織の設立(「Talk Openly、Create Openly」の略)を発表しました。 これまでのところ、具体的な活動計画は発表されていませんが、一般的に、明らかに、組織は新製品の開発に貢献し、既存の製品を促進します。 コミュニティのメンバーは、自分のソフトウェア開発を適応させ、統一することも約束します。
ライブが好きな場所
Mcrouterは、Facebookのさらなる開発、特にいくつかの興味深い機能のサイトでの実装に不可欠になりました。 同社のプログラマーの1人であるRajesh Nishtal氏によると、これらの機能の1つは「ソーシャルグラフ」でした。これは、Facebookでの滞在中に行う人々、好み、行動間の関係を追跡するアプリケーションです。
ソーシャルグラフには、人の名前とその関係、およびオブジェクト(写真、投稿、いいね、コメント、位置情報データ)が含まれます。 「これは、キャッシングが適用されるタスクの1つにすぎません」とニシュタラ氏は述べています。
ソーシャルネットワークにページを読み込むたびに、キャッシュにアクセスします。 また、キャッシュは大部分がマクロターのおかげで、1秒あたり40億を超えるこのような操作を処理できます。 このツールは、インフラストラクチャ全体を正常に処理します。
負荷分散から過負荷保護まで
Mcrouterは、クライアントとキャッシュサーバー間の中間リンクであり、実際、ユーザーはそれを介して作業します。 ユーザーの要求を受け入れ、キャッシュサーバーの応答を送信するのは彼です。 上記のすべてに加えて、ニシュタラはこのシステムの3つの主要なタスクについても説明しました。キャッシュ接続の組み合わせ、リポジトリ自体へのワークロードの分散、およびネットワーク上の特定のサーバーの過負荷に対する自動保護です。
キャッシュ接続を組み合わせると、高いサイトパフォーマンスを維持できます。 各ユーザーがキャッシュサーバーへの直接接続を開始すると、簡単に過負荷になります。 Mcrouterはプロキシとバランサーの原理に基づいて動作します。これにより、クライアントの負荷がクリティカルになるまでサーバーにアクセスできます。
多くのプロセスがメモリキャッシュで互いに競合し、それによって負荷が発生するときに、システムはこれらのプロセスをグループに分散し、これらのグループはサーバーの既存のネットワーク間ですでに分散しています。
キャッシュサーバーに障害が発生した場合、mcroterは自動的に別のサーバーをバックアップ付きで接続します。 これが発生するとすぐに、システムは落ちたサーバーがインサービスに戻るかどうかを監視し始めます。
システムには、結合されたサーバーグループのレベル全体を作成する機能もあります。 1つのキャッシュサーバーの関連付けが利用できない場合、mcroterは自動的に負荷を別の利用可能なグループに転送します。
Redditはmcrouterにも依存しています
Radditは、提供されたAWSクラスターのいずれかでmcrouterをテストできました。 Redditシステム管理者のRicky Ramirez氏は、次のように述べています。 また、合計メモリが1TVの約70ノードのバックエンドキャッシュがありました。 結果によると、一般的にシステムは成果を上げたと言えます。 弱点となるのは、Amazonが常に発明している新しいタイプのマシンに切り替えることができないことです。 これは非常に大きな問題であり、オペレーターエンジニアから多くの時間がかかります。
結合されたサーバーのグループの1つで起動され、1秒あたり4200の操作を実行したテストが成功した後、チームはより大きな負荷でmcrouterを使用することを計画しています。 次のグループは、1秒あたり200,000を超える操作の負荷でも操作性をテストできます。
さらに、エンジニアはmcrouterを使用して、新しいクラウド仮想マシンにアクセスし、インターネットリソースのダウンタイムなしで現在の容量をそれらに置き換えます。 すでに使用されている容量を降ろすことは、インフラストラクチャの管理に多少の困難を伴いますが、ラミレスは、結果としてこれらすべての努力がこの機器の生産性の印象的な増加をもたらすと確信しています。