在谈起集群,分布式之前,首先我们先从一个简单的小例子来讲解下从单机到集群到分布式的一个发展过程。
需求:搭建一个线上商城服务。
开始,开发人员比较少,整个公司的业务也刚起步,机器也只有几台,为了能够快速上线整个服务,我们开发人员选择在一台机器上开发并上线,整个项目都是由单台服务器提供。这也就是单机结构。
后来,随着公司业务的发展,用户增多,服务无法满足多用户同时浏览下单,出现了响应慢,甚至多请求打挂服务器的情况。为了解决这些问题,公司决定扩容,从单台服务器扩到10台,每台机器上部署同样的代码。这也就是集群结构。
再后来,公司业务拓展,愈加复杂,而单纯地扩容对集群性能的提升也变得不明显了,同时,面对复杂的业务,系统的可扩展性差的问题也渐渐凸显。为了解决这些问题,我们将在线商城拆分成多个单独的系统,比如用户服务,订单服务,后台管理,数据分析等等,每个系统可以独立开发,独立部署,独立测试,系统之间通过rpc进行通信。这也就是分布式。
随着公司规模的进一步扩大,渐渐我们将集群与分布式结合起来。以用户服务子系统为例,会将用户服务部署在多台机器上,形成集群。最终这些子系统全部结合起来,构建了我们整个线上商城帝国。