分布式主要解决的是哪些问题,分布式系统架构解决的三大问题

分布式系统定义:建立在网络之上的软件系统,彼此之间通过消息传递进行通信和协调的系统,展现给用户是一个统一的整体。

分布式系统架构需要解决三大问题

  1. 吞吐量
  2. 可用性
  3. 可扩展

什么是吞吐量?

能接收多少请求,能返回多少请求。一般单位时间内能处理多少请求,如每秒处理多少请求,一般叫QPS,如果更严格的QTS每秒处理事务数

这里有几个概念表达同一件事

1.吞吐量:指QPS

2.并发量:指同一时间内的连接数

3.性能:指响应时间

这里数据来源于压测,并发量越大,QPS也会升高,在并发量一定范围内响应时间是不变的,当并发量无线增大时,响应时间会增高,增高到一定程度就会下降。

如何提升吞吐量?

单机性能不足需要扩容部署,多台机器同时提供服务,形成集群部署,流量请求过来均匀的把流量分配到每台机器。如果依然存在瓶颈,先扩容后找原因,最终决定性能的可能不是应用系统,可能是数据库,因为它是长连接独占的同步交互。如果数据库性能不足,应用扩容太多也没有用,因为最终流量都要达到数据库中,因此数据库也需要扩容。

总结:要想提升吞吐量,唯一解决办法就是扩容,扩容不但解决消息堆积问题,还能提升请求耗时。

如何提升可用性?

解决可用性的唯一手段就是冗余,冗余就要解决副本与副本之间的一致性问题,分布式一致性问题就构成了分布式理论的核心,即CAP问题。

C:一致性

A:可用性

P:分区容错性

分布式场景中当发生故障时P是必须存在,当解决一致性时无法解决可用性,当解决可用性时无法解决一致性,所以三种不都能同时满足,只能选择任意两种。要么选择CP,要么选择AP。注意只有在发生故障时才会这么选择,当正常场景下三种均满足。

如何解决扩展性?

扩展性分功能扩展和集群扩展。

  • 功能扩展:指业务架构的扩展
  • 群集扩展:指节点扩展
    • 有状态扩展:有内存数据或数据库扩展,扩展难
    • 无状态扩展:无数据直接扩展非常容易(推荐)

为您推荐