【发布时间】:2017-11-18 00:25:12
【问题描述】:
我有以下设置:
角度前端
MongoDb 数据库
API 的 NodeJS/Express 后端(+ puppeteer)
部署步骤:
1. ng build -prod --> 在/server创建dist
2. gcloud app deploy(Node.js + Express + Puppeteer + Dockerfile config*)
因为 puppeteer 基本上是 chrome;一些没有给我的库,必须上传。没问题,Docker 来救场了。
FROM node:8-slim
MAINTAINER Eric Bidelman <ebidel@>
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"]
这取自“try-puppeteer”github repo (https://github.com/ebidel/try-puppeteer)
现在前端是一个私人网站,最多 2 人。如何以 NodeJS 不必解决的方式部署 Angular?有人建议“Google Cloud Bucket for $0.09/mo”,这很酷。
现在 MongoDB 实例正在使用谷歌云计算引擎。该数据库包含 400 个文档,每个文档大小为 11kb。仍然在这里免费资源。
网站的功能: 对于所有(过滤的)文档 --> 执行需要我们加载 pupeteer().then( res.send(results)) 的操作
这意味着平均一次处理来自前端的 200 个 API 请求。尽管 NodeJS 处理得很好(一个接一个,同步地),但我正在考虑添加更多“NodeJS 克隆”,也许我可以通过这种方式处理同时请求?
--这让我想知道,如果我有一个 NodeJS 服务器一次可容纳 300 个客户端;如何处理请求?我怎么感觉不到请求之间的“停顿”?是否有一个 1 接 1 的队列?还是这是对 AJAX 的限制?
换句话说,我怎样才能以一种我可以处理这个请求瀑布的方式部署它?
我已经阅读了“nginx”和“forever”,但我更多地考虑加载可能 10 个 puppeteer 实例(即使来自同一个 VM,如选项卡或窗口),它们都可以工作同时。
这是我卡住的地方: 我知道我可以部署节点克隆;但是我将如何使用谷歌云来做到这一点,我可以通过划分和征服来扩展。 (“每滴答声”2 个请求时 200 个请求的速度是“每滴答声”1 个请求时 200 个请求的两倍。)
我做错了吗?向后端发出 200 个请求,而不是用 200 个对象发出一个请求——另一个问题是担心超时。每个请求需要 40 秒才能完成。
“默认”的 App.yaml(be + 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$
注意:repo 中的确切 app.yaml 将我的成本提高到 250 美元/13 天。我需要找到一种更便宜的方式来执行这个程序。
【问题讨论】:
标签: node.js docker nginx google-cloud-platform puppeteer