单机,集群,分布式架构分析

程序部署方面

单机:

描述:一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构

单机,集群,分布式架构分析

缺点:单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。

集群:

描述:集群就是单机的多实例,在多个服务器上部署多个服务,每个服务就是一个节点,部署N个节点,处理业务的能力就提升 N倍(大约),这些节点的集合就叫做集群。

通过负载均衡,协调集群里的每个节点均衡地接受业务请求。通俗的讲就是服务A和服务B相同时间段内处理的同类业务请求数量是相似的减轻服务器压力,能够将业务请求均等分配 (中间件可以使用nginx)

单机,集群,分布式架构分析

 

优点:扩展性好集群只是单机的多个复制,没有改变单机的原有的代码结构,每次部署新节点只需要复制部署即可。减轻服务器压力,增加服务器访问容量提升服务器压力。

缺点: 单个节点业务耦合度高、资源浪费:节点是多个业务处理集合(耦合高),每个具体业务的访问量可能差异很大。

但是他们部署的节点却是一样的,浪费服务器资源。(解决该问题用到的架构就是分布式了)。

分布式:

 分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。这样我们可以根据业务的访问量来部署服务的多少。

优点:

系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。

系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务,就是对子系统集群。

服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

 

数据库方面:

单一数据库:

缺点:数据量太大导致性能下降;

数据文件会变得很大,导致数据备份恢复会变得很慢;

数据文件越大,极端情况数据丢失的风险更高。

这些问题可以通过数据库分库解决。

 

数据库分库:

把一个数据库切分成多个部分放在不同的数据库上。缓解单一数据库的性能问题。

 

数据库优化:

数据库读写分离:

优点:

增加了机器的数据处理能力

提升数据读写速度。