目录
单机架构
单机架构是指整个系统的所有模块都运行在同一台计算机上的架构。
现代计算机的性能已经非常高了,所以在用户量和数据量不是非常非常高的时候,在一台主机上部署应用服务和数据库服务程序就可以满足我们的需求。
这种架构的优点是部署方便,结构简单,维护成本低,实际上绝大多数的产品都是用单机架构实现。
但是如果用户量和数据量非常高的时候(高并发和大量数据存储),一台主机的资源终究是有限的(cpu性能,网络,硬盘,内存等),这时就要引入分布式系统了(多台主机)。
分布式系统:
分布式系统目的:引入更多硬件资源。(会提升系统的复杂性)
在上述的单机架构的基础上,我们将应用服务和数据库服务分别部署在不同主机上,
这样我们不仅达到了扩充硬件资源的目的,还可以针对应用服务和数据库服务的特点分别对它们的硬件进行设置以达到最高的性价比。
比如:数据库服务对存储空间和访问速度的要求比较高,我们可以给它使用固态硬盘,而应用服务对cpu要求更高,我们可以升级它的cpu。
引入多个应用服务器:
当在高访问量(高并发)的业务场景中,我们需要引入多个应用服务器,同时使用负载均衡器,负载均衡器使用合适的负载均衡的算法,对任务进行一个合理的分配。
存储服务器的主从结构
数据库服务中,通常读的操作频率远远高于写的操作频率,针对这个特点我们可以进行读写分离,使用主从结构:主服务器负责执行写的操作(一般是一个),从服务器负责读的操作(多个),设置更多的从服务器,这样可以最大效率的缓解存储服务器的访问压力。
但是注意这其中涉及到 主从服务器之间的数据同步问题 和 负载均衡对从服务器的任务分配问题
引入缓存,冷热数据分离
二八原则:商业和制造中 80% 的问题可归因于仅 20% 的原因。其命名者,将其部分描述为“重要的少数和琐碎的多数”。
实际上,存储服务器在进行读操作时,大部分任务都只是针对其存储的少量数据进行。我们将这部分数据称为热数据,将其余数据称为冷数据。
基于这个原因,我们可以引入Redis,设置缓存服务器,将这部分热数据的读操作直接在内存中进行。当进行读操作时,先在缓存服务器中进行,没有时在去存储服务器中进行。
缓存服务器同样涉及数据同步问题。
分库分表
主从结构,引入缓存机制都是针对数据库的高并发业务场景,那当我们数据量增大时怎么处理?
答案就是分库或者分表增加存储服务器设置不同的存储集群。
当数据库有多个库导致存储空间不够时,增加存储集群,每个存储集群存储不同的数据库,每个存储集群又设置自己的主从数据库。
当一个表太大时,同样可以对表进行拆分,存储在不同的存储集群。
具体如何分库分表结合具体的业务需求。
引入微服务结构
在业务比较复杂时,我们采取上述方式在一个服务器里处理多个业务,这就可能导致代码非常复杂。非常不利于维护。所以为了方便后期进行维护,我们按照业务功能将复杂服务器拆分成多个功能单一,但是更加小型,简单的服务器。
引入微服务之间缺点:
1.系统性能降低,不同功能服务器之间要进行通讯需要依赖网络通信,网络通信效率较低。
2.系统复杂性提高,,需要专门的人员进行维护。
优势:
1:更方便进行功能的复用。
2:可以根据需求给不同的服务器进行不同的部署。
3:解决了”人“的问题:系统较为复杂,需要大量维护人员,后期进行维护时,维护人员根据微服务进行人员的划分(微服务结构本质上是解决”人“的问题)。