单独一台服务器满足不了业务无限增长的(如果有的话)需求,这就需要将Node按多进程的方式部署到多台机器中。这样如果某台机器出现故障,也能有其余机器为用户提供服务。除此之外,为了能够较好地服务各地用户,绝大多数企业都会选择在各地构建机房以抵消因为地理位置带来的网络延迟等问题。为了更好的稳定性,典型的水平扩展方式就是多进程、多机器、多机房,这样的分布式设计在现在的互联网公司并不少见。
多机器:多机器部署应用带来的好处是能利用更多的硬件资源,为更多的请求服务。同时能够在有故障时,继续服务用户请求,保证整体系统的高可用性。但是一旦出现分布式,就需要考虑负载均衡、状态共享和数据一致性等问题。如同在单机中将请求分发到多个进程上一样,部署多台机器也需要考虑如何将请求均匀地分配给各个机器,这需要在机房的级别上架设负载均衡,可能是硬件设备来实现,也可能是软件来实现,比如反向代理。
多机房:多机房部署是比多机器部署更高层次的部署,目的是为了解决地理位置给用户访问带来的延迟等问题。在容灾方面,机房与机房之间可以互为备份。由于机房与机房之间的网络复杂度再度提升,负载均衡方面需要进一步去统筹规划,此处不再展开。
容灾备份:在多机房和多机器的部署结构下,十分容易通过备份的方式进行容灾,任何一台机器或者一个机房停止了服务,都能有其余的服务器来接替新的任务。在这个机制下,我们至少需要4台服务器来构建这个稳定的服务集群。
需要注意的是,如今虚拟化技术已经成熟,在多服务器部署中,要尽量避免多个服务器在相同的实体机上。因为一旦实体机出现故障,导致多台服务器一起停止服务。
应用自身的部署问题得到解决后,还要考虑的是应用依赖的服务的容灾和备份,如依赖的数据库、缓存等服务。
完
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/bb1e285c0bcd84351f857601eab96a0a.jpeg)