目录

1. 单体

2. 分布式

3.集群

4.冗余

总结


1. 单体

是把系统部署到一台服务器上,所有的请求业务都由这台服务器处理。

优点:适合小型系统,节省资源

缺点:安全性低,一旦有突发压力,整个系统都会面临崩溃

为什么说java冗余 冗余技术的缺点_服务器

为什么说java冗余 冗余技术的缺点_分布式架构_02

2. 分布式

把系统的各个功能拆分成不同的小系统,主要是分散能力。

优点:资源利用率高,可以承担部分压力,降低耦合度,易于扩展

缺点:安全性低,如果其中一台服务器出现问题整个系统就会崩塌

比如下图与单体结构相比,就是一个拆分功能的分布式架构:

为什么说java冗余 冗余技术的缺点_分布式架构_03

为什么说java冗余 冗余技术的缺点_为什么说java冗余_04

3.集群

将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器,主要是分散压力。

优点:高可用、可扩展、负载均衡、错误恢复

缺点:占用资源比较高

比如下图所示的支付服务就是一个集群:

为什么说java冗余 冗余技术的缺点_数据库_05

为什么说java冗余 冗余技术的缺点_为什么说java冗余_06

4.冗余

先来看一下百度百科的解释:

为什么说java冗余 冗余技术的缺点_为什么说java冗余_07

为什么说java冗余 冗余技术的缺点_为什么说java冗余_08

分为两层含义:

第一层表示多余的不需要的部分,举个例子:一个数据库可以存储100万条数据,但是我们可以设置最多存储80万条,剩余的20万就是冗余,这样就提高一定的读写性能。那如果达到80万之后还要增加数据怎么办?可以通过更换硬件、增加数据库数量、分库分表等方式来解决!

第二层是说增加重复部分,上面所说的集群可以说是一种冗余

所以,集群是一种冗余,但是冗余可不一定是集群!

总结

一个好的系统设计应该是分布式和集群的结合,先分布式再集群,设置适当的冗余,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样某个子业务如果出了问题,整个系统完全不会受影响。

上面说的是整体部署一个系统,至于细节就要考虑硬件配置、MQ、缓存等因素了。