2009-06-03 12 views
4

リファレンスanother SO question私は、私はスカラ座へのレールから移動するのTwitterについてthis articleを与えられたていた、との記事でこのコメントです:TwitterとScalaのミドルウェアはどういう意味ですか?

今年の終わりまでに、Payne氏は言った、 ツイッターはその全体を持っているしたいと考えています ミドルウェアインフラストラクチャとそのAPI が新しい言語に移植されました。ルビーは が残っていますが、フロントエンドにのみあります。 「我々はまだ我々が移動したものの機能が直面している 建物のユーザー... 性能面、それはWebページの周りの人々 クリックするための罰金です。それは 力仕事だ、非同期処理 タイプのレールに満足していますaway from "

ここでミドルウェアとは何ですか? Rubyをフロントエンドに持つことは、どういう意味ですか? ORMがほとんど使われていないフロントエンドのレールを意味していますか?それはどのようにスカラーで「会う」のですか?このコメントはどういう意味ですか?

アーキテクチャを理解しようとしています。ありがとうございました。

答えて

5

N-Tier Architectureの形式です。当初、ほとんどのサイトの意志は、Webサーバーとデータベースを持つ2層アーキテクチャとして始まります。 Webサーバーはユーザーに表示されるページを提供し、データベースはこれらの動的ページによってアクセスされます。

アーキテクチャーが複数の層に分かれている場合、通常は、Webアプリケーションが呼び出すアプリケーションサーバーのある種類のWebアプリケーションが前面に表示されます。このアプリケーションサーバーはビジネスロジックを含み、アプリケーションを機能させます。アプリケーションの「顔」は、見た目がきれいに見えるようにし、ユーザーに表示するためにフォーマットします。

アプリケーションサーバー、つまり「ミドルウェア」は、単にWebサーバーから呼び出すことのできる機能の集合です。ミドルウェアは、ほとんどのアクティビティがメッセージを送信しているツイッターのようなサイトにとって強力でなければならず、ウェブサイトにアクセスしている人の活動はあまりありません。

レイヤ間の相互接続は標準的なWebサービステクノロジですが、Webアプリケーション(Ruby on Rails)がアプリケーションデータにアクセスできるカスタムサービス、おそらくはRESTまたはその他の種類のWebサービスである可能性があります。

このタイプのアーキテクチャでは、RailsはすべてのORMおよびデータ管理をミドルウェアに委託しています。

ミドルウェアもまた曖昧な用語であり、多くのティアから構成することができます。なぜなら、ミドルウェアはそれをN-Tierと呼びます。 Twitterはミドルウェアの一部をメッセージングに費やしていますが、別の部分はアカウント管理やメッセージの取り込みなどを扱っていると思います。

考えられるのは、ハードウェアを追加することで拡大縮小できるということです。 Webページを扱うサーバーのクラスター、メッセージングを扱う別のクラスター、それをサポートするデータベースサーバーのクラスターです。それは正確な科学ではなく、それぞれのアーキテクチャは異なっていますが、一般的に、これがどのように考えられるかです。

+0

まだ素晴らしい答えです。ありがとうございました。 – johnny

-1

この場合のメッセージングインフラストラクチャ。彼らはおそらくカスタムのルビーベースのソリューションからJMSのソリューションに切り替えました。

+0

JMS?ごめんなさい。私は頭字語でここで失われています。 – johnny

1

ruby twitter scala payne」のグーグルでお試しください。あなたはおそらくそれ以上の問題を抱えています。

私の(おそらくは不完全な)理解は、Twitterの「バックエンド」の多くが特にうまくコーディングされていないということです(Obie Fernandez' postを参照してください)。これは、少なくとも部分的には、アプリの使用が急激に増加し始めたために、イベントによって奪われたアプリの最初のクイックハックの性質に起因すると思われます。 Twitterで(そしてRails関連で)指摘された指の数は、その時点で「失敗した」と指摘されました。

Twitterはメッセージキューに大きく依存しています。この部分はScalaで書かれていると理解していますが、これはおそらく(個人的な経験なしに)仕事のための非常に良い選択です。

1

Scalaに移行したのは、Ruby-ORM-DBのバックアップソリューションからScalaを使用した分散型メッセージングシステムまでのメッセージ "キュー"です。 Twitterのボリュームを持つサービスには特別な要件があり、独自のメッセージソリューションを作成しました。 "Kestrel"と呼ばれています

関連する問題