4

私が持っていた別の SO の質問を参照してください。Twitter が Rails から Scala に移行することに関するこの記事を受け取りました。記事には次のコメントがあります。

Payne 氏によると、Twitter は今年の終わりまでに、ミドルウェア インフラストラクチャ全体と API を新しい言語に移植したいと考えています。Rubyは残りますが、フロントエンドのみです。「ユーザー向けの機能を構築するためのRailsにはまだ満足しています...パフォーマンスに関しては、Webページをクリックする人々にとっては問題ありません。これは、私たちが離れた重労働で非同期処理タイプのものです。」

ここでミドルウェアとはどういう意味ですか? フロントエンドに Ruby を搭載することは、正確には何を意味するのでしょうか? これは、ORM がほとんど使用されていないフロント エンドのレールを意味しますか? それはどのようにscalaと「出会う」のですか? このコメントはどういう意味ですか?

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

4

4 に答える 4

5

これは、N 層アーキテクチャの一形態です。最初は、ほとんどのサイトは、Web サーバーとデータベースを持つ 2 層アーキテクチャとして開始されます。ウェブサーバーはユーザーが見るページを提供しますが、データベースはそれらの動的ページによってアクセスされます。

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

アプリケーション サーバー、つまり「ミドルウェア」は、Web サーバーから呼び出すことができる関数の集まりです。ミドルウェアは、ほとんどの活動がメッセージの送信にあり、Web サイトにアクセスする人々の活動があまりない twitter のようなサイトでは強力でなければなりません。

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

このタイプのアーキテクチャでは、Rails がすべての ORM とデータ管理をミドルウェアに任せていることは間違いありません。

ミドルウェアも漠然とした用語であり、多くの層で構成される可能性があるため、N 層と呼ばれています。Twitterには、メッセージング専用のミドルウェアの別の部分があり、アカウントの管理やメッセージの取得などを扱う別の部分があるに違いありません.

アイデアは、ハードウェアを追加することでスケールアップできるようにすることです。ここでは、Web ページを提供するサーバーのクラスター、メッセージングを処理する別のクラスター、およびそれをすべてサポートするデータベース サーバーのクラスターを使用できます。正確な科学ではありません。各アーキテクチャは異なりますが、一般的には、このように考えることができます。

于 2009-06-03T15:32:13.850 に答える
1

私の理解では、彼らが Scala に移行したのはメッセージの「キュー」です。つまり、Ruby-ORM-DB に基づくソリューションから Scala を使用した分散型メッセージング システムに移行したのです。Twitter のボリュームを持つサービスには特別な要件があり、独自のメッセージ ソリューションを作成しました。「ケストレル」と呼ばれる

于 2009-06-03T22:04:49.577 に答える
1

ruby​​ twitter scala payne」をグーグルで検索してみると、おそらく必要以上の情報が得られるでしょう。

私の (おそらく不完全な) 理解は、Twitter の「バックエンド」の多くが特に適切にコーディングされていないということです ( Alex Payne の引用をいくつか取り上げたObie Fernandez の投稿を参照してください)。これは、少なくとも部分的には、アプリの最初のクイック ハックの性質に起因しているように見えますが、イベントに取って代わられました。アプリの使用が指数関数的に増加し始めたため、彼らはかなりの苦痛を経験していました。当時、「スケーリングに失敗した」として、Twitter (および関連する Rails) に多くの批判が寄せられました。

Twitter はメッセージ キューイングに大きく依存しており、この部分が Scala で書かれていることを私は理解しています。これはおそらく (個人的な経験ではありませんが) 仕事に適した言語の選択です。

于 2009-06-03T15:43:29.370 に答える
-1

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

于 2009-06-03T15:27:16.107 に答える