2

私は現在、ソーシャルネットワークの実装に取り​​組んでいます。アーキテクチャは次のとおりです。

-分散C++/Qtクライアント
-Neo4jサーバーデータベース

QtアプリからのRESTインターフェースがあるため、データベースに直接クエリを実行できます。このアプローチはセキュリティで保護されておらず、最適化(リクエストのキャッシュ)が不可能であるため、私はこのアプローチにあまり慣れていません。

クライアントからのリクエストを管理するには、どのサーバー/アーキテクチャを使用する必要がありますか?

私はJavaよりもPythonですが、ここでは速度が重要です。

そして、RESTは十分に高速だと思いますか、それともRPCを使用する必要がありますか?

最後のシナリオでは、データベース用に独自のサーバー実装を開発する必要があることを意味します。

4

1 に答える 1

2

RESTは十分に高速になります。問題があることを示す実際のデータを測定して取得できるようになるまで、これを使用してください。

ただし、RESTAPIを使用してデータベースを直接処理することはしません。

2つの間に、セキュリティ、検証とバインディング、ユースケースとエラー処理、ロギング、トランザクションなどを管理するレイヤーを追加します。

Springでこれを行う場合、最初の2つを心配するのはコントローラーであり、最後の2つを処理するのはサービスです。

はい、クライアント/サーバーをデータベースに直接接続するのはより複雑ですが、より多くのレイヤーとより多くのコードを犠牲にして、必要なもの(セキュリティなど)を購入しています。それがあなたにとって何の価値があるかを決定します。

もちろん、速度は重要ですが、制限は他の何よりもネットワーク遅延によって設定される可能性が高くなります。クライアントがインターネット経由でアクセスしている場合、それはアプリに到達するために平均12ルーターホップを意味します。企業イントラネットでの遅延のラウンドトリップは70ミリ秒です。それを速度の目安とします。

重要なことに関しては、ソーシャルネットワーキングサイトは多くの訪問者へのスケーリングについて心配する必要があると思います。私が知っているアーキテクチャは、スレッドプールとリクエストキューであり、着信リクエストごとに1つのスレッド、またはNettyのような非ブロッキングI/Oです。Nettyに相当するPythonはTwistedだと思います。

于 2011-04-09T12:08:40.393 に答える