分布式基础

Posted adroit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式基础相关的知识,希望对你有一定的参考价值。

概念

1. 节点

可以独立按照分布式协议完成一组逻辑的程序个体,也可以认为节点是一个完整的,不可分的整体,如果整个程序进程实际上是由多个独立的部分构成的,则可以将一个进程划分为多个节点。

2. 通信

节点之间的网络通信是完全独立且相互隔离的,网络通信是不可靠的,发送消息的节点无法确认消息是否被其他节点接收或者被消费到。

3. 存储

数据库,磁盘。有无状态节点判断,比如A节点把数据同步到B节点存储,不能说A节点是有状态的,只能说B节点是有状态的节点

4.异常

机器宕机,网络异常都是异常的表现

机器宕机好理解,服务器因为一些不可抗拒的原因停止工作,可能是load过高,代码问题,物理因素等等。解决方案有很多,比如节点分散在各个机器上,异地多活等等。

网络异常分为消息丢失,消息乱序,数据错误,不可靠TCP

消息丢失是最常见的网络异常,网络拥塞 路由变动 设备异常等情况发生时都是造成发送的数据丢失,由于传输的信息会存在各种异常情况,所以这也是分布式中需要解决的棘手问题之一。

有A B C三个节点时,AB在机房a C在机房b,当出现机房a和机房b由于物理原理网络不通时,则这种特殊的网络异常为网络分化。这里可能就会造成机房a和机房b的数据不一致(这里也引入了数据一致性问题,我们下面会讲到这个)

异常不可能100%被避免,只能保证多少个9,大多数情况下都是在业务允许的范围内补偿。

副本

副本,分为数据副本和服务副本。 在分布式系统中为数据或服务提供的冗余,保证高可用。

多份副本存在的情况下,就一定存在一致性问题。

强一致性: 顾名思义 每个节点的数据都是保持一致的。

单调一致性: 任何用户在读取数据的时候,只会读取到最近一次成功更新的数据,不会读取到比这之前还早的数据。弱于强一致性

会话一致性: 用户在一次会话的时候,只会读取到某次更新后的数据,这次会话结束后,读取到的值可能不是最近一次更新的值。

最终一致性: 只要在某个节点中完成了业务,将广播至各个节点更新数据。这一过程用户无感知,会在之后的某个时刻数据在各节点都是一致的。同步数据时间通常要求极短,如果很长的话,会退化成弱一致性系统

弱一致性:节点更新成功后,无法在一个缺点的时间内把所有节点数据都同步。

以上是关于分布式基础的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统基础设施

DAY2-jmeter分布式压测,charls操作基础,python基础

分布式基础

分布式Java基础概览图

Zookeeper 理论基础

基于Spring Boot自建分布式基础应用