分布式系统定义:建立在网络之上的软件系统,彼此之间通过消息传递进行通信和协调的系统,展现给用户是一个统一的整体。
分布式系统架构需要解决三大问题
什么是吞吐量?
能接收多少请求,能返回多少请求。一般单位时间内能处理多少请求,如每秒处理多少请求,一般叫QPS,如果更严格的QTS每秒处理事务数
这里有几个概念表达同一件事
1.吞吐量:指QPS
2.并发量:指同一时间内的连接数
3.性能:指响应时间
这里数据来源于压测,并发量越大,QPS也会升高,在并发量一定范围内响应时间是不变的,当并发量无线增大时,响应时间会增高,增高到一定程度就会下降。
如何提升吞吐量?
单机性能不足需要扩容部署,多台机器同时提供服务,形成集群部署,流量请求过来均匀的把流量分配到每台机器。如果依然存在瓶颈,先扩容后找原因,最终决定性能的可能不是应用系统,可能是数据库,因为它是长连接独占的同步交互。如果数据库性能不足,应用扩容太多也没有用,因为最终流量都要达到数据库中,因此数据库也需要扩容。
总结:要想提升吞吐量,唯一解决办法就是扩容,扩容不但解决消息堆积问题,还能提升请求耗时。
如何提升可用性?
解决可用性的唯一手段就是冗余,冗余就要解决副本与副本之间的一致性问题,分布式一致性问题就构成了分布式理论的核心,即CAP问题。
C:一致性
A:可用性
P:分区容错性
分布式场景中当发生故障时P是必须存在,当解决一致性时无法解决可用性,当解决可用性时无法解决一致性,所以三种不都能同时满足,只能选择任意两种。要么选择CP,要么选择AP。注意只有在发生故障时才会这么选择,当正常场景下三种均满足。
如何解决扩展性?
扩展性分功能扩展和集群扩展。
如果这篇文章对你有用,麻烦关注点赞收藏,或关注公众号“猿码”了解更多内容