01.系统设计

分析目标

要实现好一个系统,第一步就是分析问题,明确要实现一个什么样的目标。简单的业务模型如下,一个用户通过前端应用(或者web),访问到后端某台服务器,然后由服务器上的应用服务对其进行服务。这里的服务可以是查询一条记录,写入一个文件等等,总之是为用户提供的某种功能。

                                                                                                        

左边图这个模型是一个简单业务模型,而本文所关心的是服务器如何向外部提供服务。如果访问的用户增加,这时有两种方式扩展。一种是垂直扩展,提升服务器的硬件性能,这种方式通常简单快速,对程序本身也没有冲击,缺点是容量的增加与成本是指数级增加的(比如8G内存条与64G内存条的价格并不是8倍关系,越大容量的价格不是按容量的增加而增长);另一种是水平扩展,这种扩展就需要有一些开发工作,让多个服务器对外服务,相应的程序复杂度也出现了。

                                                                          

上面左边图中,用户访问三台不同的服务器,以缓解单台服务器的压力。这样相对于第一种情况能成倍的提高对外服务数量。不过左图还有一个缺点就是对外发布的程序(客户端)都是一个固定地址,也就是用户并不知道自己该访问哪一台服务器。所以通常做法是访问一台固定服务器(反向代理服务器),由这台服务器选择一个后端服务器进行服务。这样用户始终是访问的一个地址,而不用知道后端有哪些机器。

猜你喜欢

转载自www.cnblogs.com/newguy/p/9060921.html
01.