分布式知识总结(基本概念)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

基本概念

吞吐量

指系统在单位时间能够处理多少个请求

QPS

每秒查询次数,通常是对读操作的压测指标

TPS

每秒处理的事务数目,通常是对写操作的压测指标

RT

响应时间间隔,是指用户发起请求,到接收到请求的时间间隔

熔断

熔断机制,是指在分布式系统中,当某个下游服务出现超时、错误率过高或资源不足等过载现象时,上游服务会迅速切断对该下游服务的请求,以避免出现故障扩散的情况。

熔断机制可以保证整个系统的可用性,避免因一个服务的局部小规模故障,导致整个系统全局瘫痪的后果。

降级

服务降级,是指当系统出现高负载或异常时,通过牺牲部分非核心功能的方式,保证系统核心功能的可用性。

背压

背压思想,被请求方不会直接将请求端的流量直接丢掉,而是不断的反馈自己的处理能力。

请求端根据这些反馈,实时的调整自己的发送频率,比如:TCP/IP中使用滑动窗口来进行流量控制。

CAP原则

Consistency(一致性)

所有节点返回的数据是一致的。

Availability(可用性)

就是某个节点坏了,不能影响其他的节点业务。

如主MySQL节点挂了,但从MySQL没有挂,从MySQL照样提供服务。

Partition Tolerance(分区容错性)

当系统中有节点因网络原因无法通信时,系统依然可以继续运行。

如主MySQL和从MySQL之间没法通信时,系统可用。

分布式系统只能满足三种情况:CA、AP、CP

分布式系统肯定要实现P,那CA是理论上面的,其实不存在。

大型互联网公司,因为机器数量庞大,网络故障是常态,一般选择AP原则牺牲掉数据一致性

  • 一些金融产品对数据一致性要求很高的,就会选择CP。

Redis:AP

RocketMQ:AP

2PC:CP

Eureka:AP

BASE理论

BASE 理论是对 CAP 中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了对系统的要求。

核心思想: 即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性,也就是牺牲数据的一致性来满足系统的高可用性,系统中一部分数据的不可用或者不一致时,仍需要保持系统整体主要可用。

基本可用(Basically Available):

基本可用是指分布式系统在出现不可预知故障的时,允许损失部分可用性。

响应时间上的损失:

  • 正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障,查询结果的响应时间增加了1~2秒;

系统功能上的损失:

  • 正常情况下,在一个电商网站上进行购物的时候,消费者几乎能够顺利完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面;

软状态(Soft State):

软状态是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时;

最终一致性(Eventually Consistent):

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。

因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

集群和分布式的区别

集群主要的使用场景是为了分担请求的压力,也就是在几个服务器上部署相同的应用程序,来分担客户端请求。

将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。
分布式是指将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情。

  • 将一套系统拆分成不同子系统部署在不同服务器上。

IaaS、PaaS和SaaS

软件即服务(SaaS) :这是一个完整的软件应用程序,具有用户界面。

平台即服务(PaaS) :开发人员可以在其中部署自己的应用程序的平台。

基础设施即服务(IaaS) :提供机器、存储和网络资源,开发人员可以通过安装自己的操作系统、应用程序和支持资源来管理。

通俗易懂的解释:

SaaS:租的房子,只能住人和存放物品,不能修改房间的设施。

PaaS:买的精装修房,可以布置一些家电(如电视机、空调等等)、墙上挂一些装饰等等,俗称软装。

IaaS:买来的毛坯房,可以自己装修水电、安装柜子,家电等等,俗称硬装。

相关推荐
殷紫川19 分钟前
别再乱用了!幂等处理与分布式锁,90% 开发者都踩过的坑与正确落地姿势
分布式·架构
ALex_zry1 小时前
C++高性能日志与监控系统设计
c++·unity·wpf
Jack_David4 小时前
Kafka批量消息发送
java·分布式·kafka
wanhengidc5 小时前
服务器托管对企业的作用
大数据·运维·服务器·分布式·智能手机
Code知行合壹5 小时前
Spark使用总结
大数据·分布式·spark
Swift社区5 小时前
分布式能力不是功能,而是一种架构约束
分布式·架构
0xDevNull5 小时前
Apache Kafka 完全指南
分布式·kafka
zb200641206 小时前
RabbitMQ 客户端 连接、发送、接收处理消息
分布式·rabbitmq·ruby
zhojiew7 小时前
使用flink agent框架实现流式情感分析的示例
大数据·flink·wpf
半桶水专家7 小时前
Kafka JMX详解
分布式·kafka