2

いくつかの画像 (Google マップのタイルなど) を返す Web サービスを構築したいと考えています。

また、ソース データは esriコンパクト キャッシュ形式として編成されています。当社のサービスの鍵は、バンドルからタイルを読み取ることです。

Windows または Linux のプラットフォームを選択する方法がわかりません。

Linux は、Windows よりも IO の読み書きのパフォーマンスが優れていると言われています。

ただし、Linuxを選択した場合はJavaしか選択できないため、LinuxでIO読み取りパフォーマンスを向上させるために知っておくべきポイントがあるかどうかを知りたいですか?

PS:

winodws プラットフォームでは、c# を使用して .net4 に基づいてサービスを構築し、iis を使用してサービスを展開します。

Linux では、Java を使用してサービスを構築し (Spring MVC またはその他の MVC フレームワークに基づいている可能性があります)、Tomcat を使用してサービスをデプロイします。

アップデート:

次のソース コンパクト ファイルが別のフォルダにある場合があります。

L1
    RxxCxx.bundle
    RxxCxx.bundlx
L2
    RxxCxx.bundle
    RxxCxx.bundlx

クライアントからのリクエストは次のようになります。

http://ourserver/maptile?row=123&col=234&level=1.png

このリクエストではL1、レベルが1であるためフォールドに移動し、最初にファイルを読み取りRxxCxx.bundlxます。このファイルは、RxxCxx.bundleイメージをレンダリングするためのデータの位置 ( のオフセットと長さ) を示すメタデータであるためです ( row=123&col=234) 、次にRxxCxx.bundle、オフセットと長さに従って を読み取ります。次に、データを応答に書き込むことでデータを画像にレンダリングし、コンテンツ タイプを「image/png」などに設定します。

これは、リクエストを処理するためのプロセス全体です。

次に、これらのタイプのIO読み取りを処理する方法を示すことができるドキュメントまたは既存のデモがあるかどうか疑問に思いますか?

4

2 に答える 2

6

環境内で Windows サーバーを使用する必要がある唯一の状況は、MS SQL Server DBMS を選択する場合です (これはほぼ Sybase ですが、かなり安価です)。この場合、DB 用に Windows ボックスを使用し、中間層用に *nix サーバーを使用します。 .

Windows を使用できる状況は数多くあります。「Windows が必要」という宣言から始まり、既存の偏見が明らかになり、多くの根拠のない発言が続きます。しかし、少なくともあなたはこれが事実であることを明確に認識していました。

Java は、主に利用可能な成熟した標準化されたオープン ソース テクノロジの量において、ミリ秒グレードのミドルウェアに最適なテクノロジです。コーディング (Eclipse、NetBeans、Idea) から手動 (ant、maven) および自動 (teamcity、hudson/jenkins) ビルド、テスト、静的コード分析まで、すべてがそこにあり、標準化され、オープンソースであり、数百万によってバックアップされていますサイズコミュニティ。

オープンソースであることを除いて、Visual Studio/C# (OP が代替として言及されているため) が上記のすべてを提供していると言う必要があると思います。とはいえ、.NET Framework (または .NET Core) はオープン ソースになりました。ここで情報を入手してください。上記のコメントに基づいて、唯一の実行可能なソリューションはオープンソース コミュニティを通じて入手できると結論付けることができると思います。

「あなたの時間が価値がない場合にのみ、それは無料です。」

また、オープンソース コミュニティ全体を数えることは、でたらめな議論です。ある開発ツール/API を取り上げて、コミュニティ サポートを別のものと比較する必要があります。たとえば、Visual Studio のコミュニティのサイズと品質を Eclipse と比較してください。または、.NET Framework と Java の比較です。

ところで、Visual Studio/Windows より優れたインテリセンスの実装を経験したことはありません。Eclipse が実際に機能するときは、参照するオープン ソース ライブラリの品質に依存して、意味のあるものを作成する必要があります。同じ目標を達成するために、.NET Framework が Java よりも少ないサード パーティ ライブラリを必要とすることがわかりました。

Linux は、パフォーマンス、安定性、メンテナンスの容易さ、開発環境の品質の面で最高のサーバー側プラットフォームです。非常に強力なコマンド ライン ベースの IDE です。Linux サーバーでは数か月のアップタイムが期待できますが、Windows では期待できません。

2014 年 5 月 30 日 (ほぼ 1 年) からシステム アップタイムがあり、「ビッグ データ」を処理するサービスを実行している多くの Windows サーバーがあり、2013 年から中断することなく稼働しているサーバーがいくつかあります。アップタイムの問題が発生するのは、ハードウェアが老朽化/故障しているか、作成したアプリケーション層ソフトウェアにバグが含まれています。

Tomcat/サーブレット (または Jetty/サーブレット) は、安定性が最優先事項である多くの金融機関における古典的な産業の組み合わせです。

IIS も使用されています:金融機関の IIS 開発者の求人情報

そして最後に、IO パフォーマンスの問題です。高品質のユーザー空間のノンブロッキング IO コードは CPU とハードウェア帯域幅に制限されるため、OS は決定要因にはなりません。割り込みアフィニティ、スレッドのピニング、インフォームド リアルタイム チューニング、カーネル バイパスなどの高度なことは、Linux の方が簡単に実行できると思います。

これらの変数のほとんどは、各 OS によって定義されます。スレッドの経験が豊富なようですが、開発者は両方の環境でアプリケーション レイヤーを同じように簡単に最適化できると思います。スレッドの優先順位の変更、カスタム スレッド プールの実装、BIOS の構成などはすべて、Windows の世界でも利用できます。Unix/Linux で許可されているカーネルをカスタマイズしたい場合を除きますが、Unix/Linux の独自のカスタム ビルドをサポートする必要があります。

原則として、商用ソフトウェアを中傷したり、オープンソースを支持して回避したりするべきではないと思います。

于 2015-04-17T18:23:47.307 に答える
5

根拠のない発言に聞こえるかもしれませんが、Windows を使用する必要がない限り、*nix を使用してください。環境内で Windows サーバーを使用する必要がある唯一の状況は、MS SQL Server DBMS を選択する場合です (これはほぼ Sybase ですが、かなり安価です)。この場合、DB 用に Windows ボックスを使用し、中間層用に *nix サーバーを使用します。 .

Javaは、主に利用可能な成熟した標準化されたオープン ソース テクノロジの量において、ミリ秒グレードのミドルウェアに最適なテクノロジです。コーディング (Eclipse、NetBeans、Idea) から手動 (ant、maven) および自動 (teamcity、hudson/jenkins) のビルド、テスト、静的コード分析まで、すべてがそこにあり、標準化され、オープンソースであり、数百万によってバックアップされていますサイズコミュニティ。

Linuxは、パフォーマンス、安定性、保守の容易さ、開発環境の品質において最高のサーバー側プラットフォームであり、非常に強力なコマンド ライン ベースの IDE です。Linux サーバーでは数か月のアップタイムが期待できますが、Windows では期待できません。

Tomcat/サーブレット(または Jetty/サーブレット) は、安定性が最優先事項である多くの金融機関における古典的な産業の組み合わせです。

そして最後に、IO パフォーマンスの問題: 高品質のユーザー空間の非ブロック IO コードは CPU とハードウェア帯域幅に制限されるため、OS は決定要因にはなりません。割り込みアフィニティ、スレッドのピニング、インフォームド リアルタイム チューニング、カーネル バイパスなどの高度なことは、Linux の方が簡単に実行できると思います。

于 2012-12-22T11:35:18.007 に答える