保存无状态,几乎每天停掉服务器

一段解释

你曾经有没有遇到一类严重的线上问题,比如一个服务器丢失了一些配置或数据?这可能是由于对于不属于部署部分的本地资源的一些不必要的依赖。许多成功的产品对待服务器就像凤凰鸟–它周期性地死亡和重生不带来任何损伤。换句话说,服务器只是一个硬件,执行你的代码一段时间后,可以更换。 这个方法:

  • 允许动态添加和删除服务器,无任何负面影响;
  • 简化了维护,因为它使我们不必费精力对每个服务器状态进行评估。

代码示例: 反模式

  1. //典型错误1: 保存上传文件在本地服务器上
  2. var multer = require('multer') // 处理multipart上传的express中间件
  3. var upload = multer({ dest: 'uploads/' })
  4. app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) {})
  5. //典型错误2: 在本地文件或者内存中,保存授权会话(密码)
  6. var FileStore = require('session-file-store')(session);
  7. app.use(session({
  8. store: new FileStore(options),
  9. secret: 'keyboard cat'
  10. }));
  11. //典型错误3: 在全局对象中保存信息
  12. Global.someCacheLike.result = {somedata}

其他博客作者说什么

摘自博客 Martin Fowler:

…某天,我有了启动一个对操作的认证服务的幻想。认证评估将由我和一位同事出现在企业数据中心,并通过一个棒球棒,一个电锯和一把水枪设置关键生产服务器。评估将基于操作团队需要多长时间才能重新运行所有应用程序。这可能是一个愚蠢的幻想,但有一个真正的智慧在这里。而你应该放弃棒球棒,去定期的几乎烧毁你的服务器,这是一个好的做法。服务器应该像凤凰,经常从灰烬中升起…