例如有一个在线商城系统,如果这个系统业务量很小,比如在校学生自己随便写的一个小项目,所有的代码都放在一个项目store-web中,然后把这个项目部署在一台服务器上。整个项目所有的服务都由这台服务器提供,这就是单机结构。
如果业务量增大,一个服务器已经处理不了当前的数据量时,可以采用集群模式。集群模式简单来说,就是将同一份项目代码放在多个服务器上,这多个服务器中每个服务器就是一个节点,所有节点构成一个集群。也就是说每台服务器都跑着相同的项目代码(即store-web)。这样通过将大量请求分配给不同的节点来执行,可以提高系统的处理能力。理论来说有多少个节点系统的处理能力就能提升多少倍。
这里有一个问题就是如何将大量请求分配给集群中不同的节点来执行。这个就涉及到负载均衡技术。
负载均衡服务器起着调度者的作用,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台服务器去处理。负载均衡服务器如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。
负载均衡经典的有四种实现方式:
还是那个在线商城,如果采用分布式架构,就不能将所有业务塞进一个项目store-web了。需要按照功能模块将业务分解,每个业务构成一个可以单独运行的子系统,所有子系统通过RPC或者MQ等方式互相通信,子系统之间相互调用/依赖来完成在线商城系统的所有功能。比如可以将在线商城系统(store-web)分为:单点登录系统(storelogin-service)、订单系统(storeorder-service)、购物车系统(storecar-service)、搜索系统(storesearch-service)、信息管理系统(stroremng-service)等。