分布式之CAP定理

总结自:

1.CAP Theorem:Revisited

2.网络编程(七):CAP原理推导和应用


先说定义吧

一致性(Consistency):对于某次读取返回的内容是该信息的最新版本。

可用性(Availability):一个正常工作的节点,对于client的请求会在合理的时间内返回一个合理的响应,这个响应不应该是错误也不应该是请求超时。

分区容忍性(Partition Tolerance):当网络分区发生时,系统仍然工作正常。


说说一些注意事项以及认识

1.一致性

不一致并不是像移动通信里面的错误一样,由于干扰的存在产生传输的数据都解码出来错误了。

比如本来拷贝一个变量x,值为1,从node1拷贝到node2,发生错误变成了值为2。

(1)不一致主要是因为需要维护变量x的多个副本,在有些节点或者网络故障的时候,一些对于x变量的修改操作没有在某些节点里面进行,

导致了不同节点之内表示的同一个变量的值不一致。

(2)少数派在crash之后或者在被partition之后,recovery出来执行一些已经执行、没有执行反正不一样的动作。


2.可用性

可用性的概念就是上面提到的概念。值得注意的是,在分析系统的时候我们也经常会将具备可用性的概率也称作可用性。

比如,如果对于单机系统,如果宕机的概率是p,那么就有1-p的概率是具备可用性的,习惯上我们也说可用性是1-p


3.分区容忍性

要弄清分区容忍性,首先就要清楚什么是network partition

network partition就是说,由于网络设备的故障导致原来的网络分裂为2个,分裂出来的2个网络现在是不能互通的了。

而分区容忍性就是说,当network partition发生的时候,系统也能工作正常。

系统也能正常工作的意思是说,系统并没有随着network partition也表现出分裂为两部分的现象,

系统对外仍然表现为仿佛只存在一个统一的整体,并对外提供服务。


4.可用性和分区容忍性的区别

其实在上面的3中,关于分区容忍性的概念还有一个比较模糊的地方,就是什么是系统工作正常。

其实这个系统正常工作就是能不能正常对外提供服务,换句话说就是client来了一个请求,会是一个怎样的结果。

从这个角度来说可用性和分区容忍性的确有很大的相似程度。

我们不妨将整个系统划分为以下几个部分:client、distributed system(node + network)

而我们又可以将distributed system划分为:network和node部分,其中network是node之间通信的网络,而node是对client提供服务的逻辑实体。

我现在的认识是,凡是node对于提供服务的影响就是可用性,凡是network对于提供服务的影响就是分区容忍性。

将这个概念带入到网络编程(七):CAP原理推导和应用里面提供的几个模型中去分析,感觉还是比较清晰地。

特别要注意的是,其实可用性说穿了就是一个请求是否能够顺利达到目的,但是在分析的时候应该对于读请求和写请求分别对待。

因为正如网络编程(七):CAP原理推导和应用里面所列举的,同一个架构下读请求和写请求的可用性改变甚至是相反的。


5.几种网络架构

总结自网络编程(七):CAP原理推导和应用

(1)单机系统

(2)Sharding

(3)多副本读写

(4)Clustering--多副本同步

(5)Clustering--多副本非同步


深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值