I次のセットアップがあります。GoogleクラウドにデプロイするNodeJS、人形遣い、および角度
角度フロントエンドを
のMongoDBデータベース
NodeJS/ExpressのバックエンドAPI(+人形遣い)展開に
手順について:
1 ngのビルド-prod - >作成/server
2のgcloudアプリのデプロイでDIST(Node.jsの+エクスプレス+人形遣い+ Dockerfileの設定*)
人形は基本的にクロームですので、私に与えられていないいくつかの図書館はアップロードされなければならなかった。問題はない、ドッカーが救助する。
FROM node:8-slim
MAINTAINER Eric Bidelman <[email protected]>
RUN apt-get update && apt-get install -y wget --no-install-recommends \
&& wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
&& apt-get update \
&& apt-get install -y google-chrome-unstable \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get purge --auto-remove -y curl \
&& rm -rf /src/*.deb
COPY . /app/
WORKDIR app
# Install deps for server.
RUN yarn
ARG CACHEBUST=1
RUN yarn add puppeteer
RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
&& mkdir -p /home/pptruser/Downloads \
&& chown -R pptruser:pptruser /home/pptruser \
&& chown -R pptruser:pptruser /app
USER pptruser
EXPOSE 8080
CMD ["yarn", "start"]
これは今のフロントエンドが上のプライベートサイト、最大2人で "試す-人形遣い" をgithubのレポ(https://github.com/ebidel/try-puppeteer)
から取られました。 NodeJSがそれを解決する必要がない方法でAngularをどのように配備すればよいですか?誰かが「Google Cloud Bucket for $ 0.09/mo」を提案した。
これで、MongoDBインスタンスはgoogleクラウドコンピューティングエンジンを使用しています。データベースには、それぞれ11kbのサイズの400個の文書のコレクションがあります。まだ無料のリソースがあります。
サイト上の機能:全て(フィルタリング)ドキュメントの場合 - >(pupeteerをロードするために私たちを必要とするアクションを行う)、その後(res.send(結果))
これは平均的があることを意味しますフロントエンドからの200のAPI要求のうちの1つが一気に処理されます。 NodeJSがこれを(1つずつ、同期して)処理するとしても、私はもっと "NodeJS-clones"を追加することを考えていました。
- これは、一度に300クライアント用のNodeJSサーバーを持っていれば不思議です。どのようにリクエストが処理されていますか?リクエスト間に「停止」を感じるのはどうですか? 1つずつ進むキューがありますか?これはAJAXの制限ですか?
つまり、私はこのリクエストを処理できる方法でどのように展開できますか?
私は "nginx"と "forever"を読んだことがありますが、私は、おそらく10人の人形のインスタンス(タブやウィンドウのような同じVMからでも)同時に働きます。
ここで私は立ち往生しています: ノードクローンを展開できます。私は分裂と征服を経てスケールできるGoogleの雲でそれをどうやって行うのだろうか。 (1回のリクエストで2回のリクエストで200回のリクエストが1回のリクエストで200回のリクエストより2倍速くなります)
これは間違った方法ですか? 200個のオブジェクトで1つの要求を行うのではなく、バックエンドに200個の要求を行うこと。もう1つの問題はタイムアウトの恐れです。各リクエストは完了するのに40秒かかります。
app.yamlをが "デフォルト" のために(+ FEは一緒に展開すること):
runtime: custom
env: flex
service: default
automatic_scaling:
max_num_instances: 1
resources:
cpu: 1
memory_gb: 1
disk_size_gb: 10
skip_files:
- node_modules/
- test*.js
- ^(.*/)?.*\.md$
注:レポからの正確なapp.yamlをは$ 13分の250日に私のコストを運転しました。私はこのプログラムを実行するための安価な方法を見つける必要があります。
ありがとうございます。Googleのクラウドは、表示されるほど友好的ではありません。私はアプリとリクエストを得るために250ドルの請求書を持っていました – Moshe