集群和分布式,实际上是两个截然不同的概念。
集群
一个业务,部署在多台服务器上,这就是集群。这里的一个业务,可以直接看做一个程序包。
◆ 举个例子
公司开发了一个网上商城,类似于T宝,顾客可以在上面浏览商品、加入购物车、支付,完成整个的购物流程。
公司买了一台服务器,把这套程序部署上去,可以满足一千个人同时在线购物。
当顾客越来越多,服务器负载越来越高,商城的页面也越来越卡,这时候公司再买几台服务器,把商城的程序在每个服务器上都部署一套,由负载均衡将请求转发到各个服务器上,这就是集群。
分布式
把一个业务,拆分成多个业务,然后部署到不同的服务器上,这就是分布式。
◆ 再举个例子
公司的网上商城,拆分成两个系统:商品系统和支付系统,用户在商品系统上完成浏览商品、加入购物车的动作,在支付系统上完成支付动作(当然用户是无法感知到是在两个系统上完成的操作),这就是分布式。
当然,还能继续拆,例如拆出来:用户系统、积分系统、物流系统等等等等。
◆ 分布式的好处
领导说,我们再做一个二手交易平台,类似于X鱼,这时候用户系统、支付系统就可以复用了,做到了服务复用。
分布式 + 集群
分布式和集群通常是是结合在一起使用的;
比如商品系统部署两台,支付系统部署两台,前面各自挂负载均衡,这样就算有单个服务器 Down 掉,也不会对整个业务流程造成影响。
还有另外一种方案,可以不依赖于负载均衡,那就是采用 服务注册/发现 的方式:
总之,集群部署很容易实现,当单机不能满足业务需要时,可以采用集群部署,至于要不要做分布式,业务拆分到什么粒度,就要结合公司的实际情况来决定了。