前言

上周有幸和淘宝前端团队的七念老师做了一些NodeJS方面上的交流(实际情况其实是他电话面试了我╮(╯-╰)╭),我们主要聊到了我参与维护的一个线上NodeJS服务,关于它的现状和当下的不足。他向我提出的一些问题带给了我很大启发,尽管回答的不是很好。问题大意是,对于你意识到的这些不足,你将尝试怎样去改进它们?甚至,如果给你一个机会来重新设计这个系统服务,你将如何做?相比现在有什么的改进?

为什么说这些问题对我产生了启发,是因为这些问题是我不曾考虑过的。或者说考虑过,但没有这么严肃的考虑过。这里的“严肃”指的是具体到线上,细节,容灾容错等方面。而在电话之后我重新尝试回答这些问题的过程中又收获了不少新的知识。

这篇文章与以往的文章不同,并不是阐述某一个问题的最佳解决方案,也不会落实到具体的代码上。而是分享在探寻答案过程中收获的心得、留下的困惑还有一点个人的经验。至于这些能否拿来回答最初的那些问题我没有十足的把握,也许能,但肯定不是最佳答案。因为后端架构实在一个很有深度的话题,也是一个极其成熟的技术方向。即使有了理论方面的积累,面对千变万化的业务需求难免还是灵活的对方案进行改进,而无论是理论还是实践经验都是我欠缺的。

这段话本来应该是写在结尾,感觉顺嘴也就挂在了开头。

最后,本文的部分内容和图片参考自图书Node.js design patterns的第七章内容Scalability and Architectural Patterns。其实书中该章中的大部分内容也并非原创,但是它做了很好的汇总和迁移,具体我会在之后说明。所以如有雷同,不是巧合。

正文

一个怎样的后端服务才能算得上优秀?或者放低身段说合格?再把这个问题翻译翻译,优秀或者合格的标准是什么?

假设现在需要你用NodeJS搭建一个http服务,我猜测你会借助express框架用不到10行的代码完成这项工作。不能说这么做是错的,但这样简易的程序是脆弱的:一旦部署上线之后,可能瞬间就被大量涌入的请求击垮,更不要提各种潜在的漏洞危险。退一步说,即使线上程序经过了这一关考验,如果你要更新程序怎么办?不得不让用户中断访问一段时间?

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式