集群
我们以淘宝服务举例,假设淘宝是一个单应用服务,部署在一台服务器上。当服务器压力大了之后,会出现卡顿或者宕机导致用户体验下降甚至无法使用的情况出现。
集群就可以解决这样的问题,把淘宝应用部署到多台服务器上,通过负载均衡技术使多台服务器分担压力,集群既能承受更大压力,又能避免服务器挂掉之后导致整个服务无法使用。
微服务
虽然集群能够解决高可用的问题,但依然存在问题,随着淘宝的发展,项目工程越来越大,各个模块耦合在一起难以维护,代码复杂度剧增,开发成本越来越高。微服务就可以解决这个问题,将淘宝单体应用中的各个业务模块拆分出来,作为一个独立的应用服务,再通过轻量级的通信机制使应用相互协作,即可大大降低代码的复杂度和模块之间的耦合性,开发人员也更加专注于自己负责的模块。
分布式
使用微服务之后也存在问题,因为原本的单体应用服务被拆分为了多个应用服务,也就意味着会占用更多的服务器资源,而服务器的硬件资源是有限的,也成为了性能瓶颈。分布式可以解决这一问题,各个应用服务部署到不同的服务器上,降低硬件资源对应用服务的约束,同时提高性能。
分布式也可以结合集群的概念,对于压力较大的应用服务进行扩张,例如会员服务和商品服务会是整个淘宝系统中压力较大的服务,则可以增设会员和商品的服务器。也可以在双十一购物节有针对性的增设服务器,提高淘宝系统的性能。