前言
一直以来,很多人都是将传统架构,替换成了云服务器发布,就觉得“上云”了。然而却并没有体会到上云的意义,反倒总是纠结于,云服务器的单机效率更低之类的问题。
负载均衡定义
今天别的不谈,只谈负载均衡。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡的原理
负载均衡,是一个统一网络入口的组件。相当于有一个具备冗余失效多节点的负载均衡软件或者硬件。接收所有网络请求过来的请求,然后根据预设的规则,把请求转达给某一台单独服务器去处理的过程。因此在这个过程里,我们就可以感觉到,负载均衡最基本的用法应当是一个负载均衡组件后面应当有多台一模一样的服务器。
负载均衡对web服务的使用要求:无状态化
本文仅用web项目举例,常见的web项目,一般会有如下几个功能:登录,上传文件,读写数据库操作,日志记录等操作
本文之所以特别说出这几个功能,原因在于这几个服务,属于“有状态”的信息。那么这种web项目应当如何改造或者如何设计,才能轻松使用负载均衡呢?方案如下:
登录(共享session)。往往是借助session,可以考虑局域网内有单独的session管理服务器,实现多台web服务器能够通过连接同一台“session服务器”方式实现共享
上传文件。传统做法往往是上传到服务器的某个目录,但是这种做法,在负载均衡的结构下就出现了问题,上传的时候进入负载均衡的A机器,后面请求的时候被分配到B机器获取资源,返回必然是404。有人指出这里可以考虑,上传文件时候多个web服务器都存一份的方案,这种方案首先是云架构需要排斥的。本文建议的是引入另外一个云产品组件“对象存储OSS”来实现共享。这样所有的请求,无论实际被哪一台服务器处理,最终都是返回同一个文件。
读写数据库操作。这个非常简单,无非是多台服务器链接同一台数据库服务器,也可以引入另一个专业的云产品组件“云数据库RDS”。
日志。不做过多说明,有些日志不要求共享存储,如果需要共享,则可以参考共享数据库等做法实现