1、分布式
系统中的多个模块被部署于不同服务器之上,即可以将该系统称为分布式系统。如 Web 服务器与数据库分别工作在不同的服务器上,或者多台 Web 服务器被分别部署在不同服务器上。生活例子类比:为了更好的满足现实需要,一个在同⼀个办公场地的工作小组被分散到多个城市的不同工作场地中进行远程配合工作完成目标。跨主机之间的模块之间的通信基本要借助网络支撑完成。
2、单机架构
只有一台服务器,这个服务器负责所有工作。
随着用户量的提高,单机架构的资源是有限的,比如1、CPU 2、内存 3、硬盘 4、网络等。
这时我们就需要新的解决方案:
1、开源:增加硬件资源,如加内存条,加硬盘,提高网络带宽等。
2、节流:从软件层面上优化软件,提高系统资源利用率,如优化数据结构等。
当以上方式还不能满足我们的需求,那么我们就需要引入新的主机。
3、应用数据分离架构
并且我们可以根据不同的服务器有针对性的进行硬件上的配置,如:
应用服务器业务逻辑较多,我们可以配置高性能的CPU和更大的内存。
存储服务器专注于数据存储,配置更大的硬盘,更快的读写速度。
4、应用服务集群架构
如图,看起来是两个服务器,实则可以是多个服务器。
用户的请求首先到达负载均衡器/网关服务器(单独的服务器)。
由负载均衡器负责发送任务。
有关负载均衡的算法:
1、Round-Robin 轮询算法。即非常公平地将请求依次分给不同的应用服务器
2、Weight-Round-Robin 轮询算法。为不同的服务器(比如性能不同)赋予不同的权重(weight),能者多劳。
3、⼀致哈希散列算法。通过计算用户的特征值(比如 IP 地址)得到哈希值,根据哈希结果做分发,优点是确保来自相同用户的请求总是被分给指定的服务器。也就是我们平时遇到的专项客户经理服务。
5、读写分离/主从分离架构
如图,将存储服务器的读写进行分离,存储服务器之间进行数据同步,主服务器一般只有一个,从服务器可以有很多个。同时从数据库通过负载均衡的方式,让应用服务器进行访问。
6、冷热分离架构
所谓的冷热就是冷数据和热数据,热数据是被频繁访问的数据,冷数据则是不被经常访问的数据。
我们将热数据存放在缓存服务器中,可以大大提高读取数据的效率。
存储服务器存放的是全量数据,缓存服务器只存放少部分数据(会被频繁访问的数据)。
存储服务器很快但是付出的代价是很小。
7、分库分表
随着业务的数据量增大,大量的数据存储在同⼀个库中已经显得有些⼒不从心了,所以可以按照业务,将数据分别存储。
8、微服务
之前的应用服务器,一个服务器程序里面做了很多业务,这就可能导致这个服务器的代码变得越来越复杂。
为了更方便的维护代码,就可以把这个复杂的服务器拆分成更多,功能更单一的小服务器。服务器的种类的数量就增加了。