2011-01-25 16 views
1

共有Nothingアーキテクチャを使用してすべてのWebアプリケーションを実装することは可能であり、必要でもあると主張する人もいます。この建築様式を使用してショッピングカート付きウェブショップをどのように実装することが可能ですか?共有Nothingアーキテクチャを使用したWebショップの実装方法

通常、ウェブショップはセッションを使用して実装できます。この場合、別の方法で実装しなければならないので、カートに関する情報はサーバーに格納されません。しかし、カートの内容を隠されたフィールドに含める必要があり、その結果、すべての単一の要求に沿ってサーバーに渡されます。それはShared Nothingアーキテクチャを使用したWebshopのソリューションですか?

webappsのshared nothingアーキテクチャを達成する方法はありますか?

+0

"shared nothing"は "no sessions"を意味しません – skaffman

+1

dbに保存されたセッションは "shared nothing"の原則と矛盾しないでしょうか? – paweloque

答えて

2

私は明示的に共有ナッシング(SN)ベースのシステムを構築するために出かけたことがありませんが、私はそれが「純粋な」SNを使用して建築家のWebアプリケーションに必要だと言う誰もがあることを示唆している:

  • は予算を持っています大規模なので、各階層に100万のクラスタを利用できます。
  • 実際に何も実装していない学者です。

あなたは、Webサーバーのクラスタを持っている、とあなたは同じウェブサーバは特定のセッションのためにすべてのコールを処理することを保証することはできません意味な方法でロードバランシングトラフィックの場合は - [はい、 SNの教義が適用されます。サーバーアフィニティを導入する余裕はありません。

しかし、これを「すべての」ウェブアプリで伸ばすことは単に不条理です。

SNは、他のすべてのアーキテクチャと同様に、ツールのようなものです。これらは問題の解決策です。この問題はソリューションを定義しています。

1

ウェブショップでの私の経験では、シェアードナッシングアーキテクチャはセッションベースより優れています。セッションが切れて買い物カードが消えてしまったので、何度も迷惑をかけることがありました。 AJAXであるかどうかにかかわらず、webappは、ユーザーの選択をクッキーに保存するか、または利用可能であれば、HTML5ストレージやその他の素晴らしいメカニズムを格納する必要があります。

しかし、HTTPセッションベースのアプリケーションでは、サーバ側でユーザーのためにリソースをキャッシュするときに、そのコストがかかります(大量の重いビジネスロジックのトランザクションシステムで一般的です)。多くの場合、混合ソリューションが最適な選択肢になります。

私の答えは - それは依存しています。要件を書いて、最適なものを選択して、適用するパターンまたはアーキテクチャの名前が何であるかを気にする必要はありません。

0

分散キャッシュ(memcachedなど)を使用してサーバー側にセッションデータを保存できます。