2

restify (または express ) で REST サービス API を提供したい

  • サービスの義務は、オーディオ/mpeg またはその他の
    バイナリ ファイルをサーバーに送信し、認証を検証し、
    合格した場合はファイルを Amazon s3 に送信し、s3 クライアントの
    応答ステータス コードを確認するクライアントに任せることです。 statusCode == 200 、
    何かをする

solution1 : リクエスト ストリーム パイプを使用して、knox によってファイルを amazon に配置する

var stream = s3.put(filepath, {options});
serverReq.pipe(stream);
stream.on('response', function(err, s3Res) {
    if (err) { console.log(err); }
    if (s3Res.statusCode == 200) { store file infos on DB}
}

解決策2:formdiableとfsを使用してサーバーのローカル一時フォルダーにファイルを事前に保存し、knoxによってファイルをAmazonに配置します

(after pre store file on server local temp folder)
s3.putFile(sourcePath, destPath, {options}, function(err, _res) {
    (clear local files from local temp folder)

    if (err) { return next(err); }
    if (_res.statusCode == 200) {console.log('save on %s', s3.url(dest))}
    res.send(_res.statusCode);
    return next();
});

解決策 1 と解決策 2 のどちらの方法が優れているか、または他のより良い方法は?? ここで、知っておく必要のあるパフォーマンスの問題はありますか?

4

1 に答える 1

1

サーバーの負荷と使用可能な帯域幅によっては、diskioが最大の潜在的なボトルネックになります。ファイルを直接ストリーミングし、物理メディアに保存しないソリューション1を使用すると思います。オブジェクト全体をメモリに保存しようとしないでください。そうしないと、システムリソースの問題が発生する可能性があります。

于 2012-11-16T12:53:38.300 に答える