分布式系统 - 脑裂

分布式系统 - 脑裂,第1张

在分布式系统中脑裂是一个系统中可能出现的问题。 如果网络分区出现在一致的系统中,则分区的一侧或另一侧(或两者)需要停止响应维护一致性保证的请求。 如果双方在无法相互通信的情况下继续响应读写,则它们会发散并且不再一致。 分区两侧保持可用的状态称为脑裂。

比如对于Raft协议的实现,网络分区导致两个leader产生,这个就是出现了脑裂现象,如果两个leader同时处理客户端的写请求,就会导致数据一致性问题。Raft协议肯定是要考虑这种情况,使得就算是出现脑裂也不会影响系统的数据一致性。Raft协议中通过选举的限制和日志复制的一些控制来解决脑裂问题。

上网没什么区别 就看你家连的是什么网 如果是电信 在飞车上是可以上其他大区的(网通) 如果介入网络不一样 会出现网络延迟(就是有点卡) 这个上是不会扣费的 放心。

那飞车中没有铁通 如果你家的是铁通 也是可以上飞车中的电信、网通(据说网络会有点卡) 不收取费用。

总得来说大区分为网通跟电信,这就要看你的宽带接入是什么了,你是电信的线子就玩电信区,网通的线子就玩网通区这不难理解吧!

每个大区里按地域划分的吧,当然是选择离你最近的了,比方说山东,或是河北,或是华南,华中区,这些学过地理的话也不难理解吧(实在分不清上百度搜地图看下)

选区没什么原则的,把你的地域跟宽带搞明白以后,就是游戏性了,新游戏哪个区都行了,因为新服本来就少,老游戏,大区人多难混,但可玩性高,新区人气旺,一个字卡,配置低了别考虑,呵呵,那种冷门区(半新不旧的)是你的最佳选择了!

《本文同步发布于“脑之说”微信公众号,欢迎搜索关注~~》

神经影像增强了我们对疼痛的神经关联的理解。但神经回路是如何与持续疼痛相互作用并导致持续疼痛的,在很大程度上仍是未知的。

我们通过两个独立数据集的 静息态f MRI 数据生成 内在功能社区 来研究大脑的 介观 尺度组织 ,队列包括43名纤维肌痛患者(FM)和20名健康对照(HC),复制样本包括34名纤维肌痛患者和21名纤维肌痛患者。 使用归一化互信息,我们发现慢性疼痛患者的全球网络结构不太稳定 (更多变化)。随后的 节点社区分配 分析表明,FM和HC的社区组成存在差异。此外,网络组织的差异与不同程度临床疼痛患者的社区构成变化有关。总之,这项工作z明了FM患者和对照组之间的内在网络社区有很大的不同。这些差异可能代表了慢性损伤性疼痛病理生理学的一个新方面。

1 简述

疼痛研究的一个难以实现的目标是对 慢性疼痛状态的客观标记 进行识别。理想情况下,该标记在慢性疼痛患者中更为显著,并可根据临床疼痛感觉的严重程度定量跟踪。损伤性疼痛中,如纤维肌痛(FM),中枢神经系统功能改变有助于在没有周围组织损伤或炎症的情况下感知疼痛。静息态功能磁共振成像可以通过测量功能连通性来了解大脑的内在动态。之前的研究已经确认了 慢性疼痛患者内在功能连接的中断 。然而,这些分析基于 先验假设 (如种子连接或独立成分分析)检查了孤立的大脑区域或静息状态网络(RSNs)之间的功能连接。大脑还可以作为节点和边的网络来研究,去测量所有功能连接的贡献。采用 基于网络的方法 提供了对大尺度功能网络的全局和局部拓扑结构的洞察力。

在大多数网络中, 节点的集合可以被组织成相互连接的组,称为社区 。

与网络中其他社区中的节点相比,这些社区中的节点在本质上彼此之间的连接更加紧密。这种关系通过一种称为 模块度 的度量来量化,模块化、分离的网络在结构上具有更高的模块度。使用 归一化互信息 (NMI)可以量化两个网络之间的社区结构组成。具体来说, NMI是一种全局度量方法,通过每个社区内节点 的分配 来量化两个网络之间社区结构的相似性。 局部度量,如 phi值、节点间距或灵活性 ,探索跨网络的节点社区分配以及它们之间的差异。然而,在FM中,脑功能是如何内在地组织成模块或社区的仍然是未知的。

我们假设,大脑内功能社区的组织提供了一个基于大脑的FM标记。

我们还推测特定节点或大脑区域的社区分配改变,导致FM网络结构的差异,并与疼痛自我报告的水平有关。

2 方法

21 被试

这项研究的新分析包括来自已发表的调查了慢性疼痛中的单因素静息状态功能连接和中枢结构研究的女性纤维肌痛(FM)患者和健康对照者(HC)。受试者分为无重合的FM和HC的发现集和重复集。FM与HC年龄匹配。发现集包括43女FM和20HC,由于伪迹排除5FM和3HC。重复集包括34FM和21HC,2FM和1HC排除,1FM由于不符合临床诊断标准被排除。

22 疼痛、抑郁和焦虑的临床评价

扫描前获得所有人的疼痛(0-100分的直观类比量表)评级、发现集抑郁和焦虑(医院抑郁和焦虑量表HADS)评级、重复集抑郁和焦虑(流行病研究中心抑郁量表CES-D、状态-特征焦虑量表STAI)评级。为了比较所有研究对象的临床变量,使用抑郁和焦虑的临界值将患者分为两组:可能是抑郁或焦虑,或不焦虑。临界值如下:HADS-Depression:≥8;HADS-Anxiety:≥9;STAI:大于40;CESD:≥18

23 fMRI方法

231 数据采集和预处理

30T GE扫描仪,8通道头线圈。T2spiral序列采集6分钟静息数据。采集T1W 高分辨率结构像。被试清醒睁眼,同时采集生理数据。SPM12和Conn进行数据预处理和分析。MATLAB的RETROICOR算法去除生理伪迹,FSL进行层时间校正。然后进行头动校正、重排列、配准到T1、标准化到MNI空间、平滑。预处理后的fMRI数据被输入到Conn工具箱,其中CompCor包括6个受试者特定的运动参数,来自白质和脑脊液的fMRI信号,以及它们的一阶导数作为混杂。001-01Hz滤波。

232 移动

多步排除过度移动的被试。第一,排除FD平动超过2mm,转动超过05°的被试。计算每个被试6个头动参数的均值和方差来决定每个数据集在移动参数上的组差异。6个移动参量组合成瞬间FD。计算均值和最大FD作为平均和瞬态FD。平均FD大于均值3SD的被试被排除。为排除移动不会对NMI和phi的组差异带来贡献,将均值和最大FD作为NMI组差异检验的协变量。评价组NMI内的均值FD和最大FD得相关性。

24 图论分析

图1是个体图创造步骤。预处理的数据传入Conn得到基于264脑区作为ROI的FC矩阵。使用最大化模块化的社区检测方法为个体受试者生成功能网络,并考虑了1000次重复的全连接和加权相关矩阵。 共识分析 用于生成每个个体特定的网络。具体来说,计算两个节点在同一社区中的次数生成 一致矩阵 。阈值tau(01-09),被应用于每个矩阵,以01为间隔来创建个体水平的分区。

241 模块度

使用模块度最大化可以实现将网络划分为不重叠的社区或模组。模块度度量量化了模块化分区的好坏,即一个模组或社区内有较强连接的网络比模块间连接网络具有更高的值。基于共识分析生成的个体水平分区的全加权矩阵计算模块度。

242 归一化互信息

为量化被试间全球网络组差异,我们用归一化互信息。NMI测量了所有被试两个网络间的成对相似性(图1b)。基于信息论,互信息(MI)量化了两个集群 共享相似解决方案 的程度。当两个网络完全随机时,MI为0;当两个网络完全相同时,MI为1。归一化互信息(NMI)技术提高了有不同社区数的两个网络比较的灵敏度。具有相似社区结构的网络具有较高的NMI值,因为较低的NMI表明网络在组织上是不同的。对每个被试,用相同组所有被试间的平均NMI计算组内NMI(FM-FM,HC-HC)。计算组间NMI作为不同组所有被试间平均成对NMI(FM-HC)。更大的NMI说明两个网络在社区结构上更大的相似度。

243 组一致功能网络

对FM和HC组,用阈值tau=04的个体网络分区分别生成一致性矩阵。这个框架下,一致性矩阵测量了两个节点出现在FM和HC组内不同被试相同社区内的一致性。基于tau在01-09,步长01得到组一致分区或网络。发现社区数量随tau增加而增加。我们报告了tau=05(组内50%一致)的跨不同一致矩阵的组一致网络,因为这个阈值FM和HC之间社区数一致。

244 phi分析

一个节点的社区分配是一个局部度量,它标识了节点对网络组织的贡献。我们使用Phi检验来量化节点社区分配的成对相似性,从而确定哪些节点可能导致NMI组差异(图1c)。对于每个受试者, 根据给定节点与其他所有节点 在同一社区 (1) 或不同社区(0)生成一个二进制矩阵。 用此矩阵,然后 皮尔逊phi系数 生成 节点相似性度量(phi) 。

对每个受试者与受试者的节点对计算 组内平均 phi 。较高的phi值表明该节点在参与者中经常是同一社区的成员(即强烈忠诚)。低的phi 表示节点社区的分配是可变的,并且经常在不同被试网络的不同社区之间转移忠诚。

245 社区率

为了评估一个节点在其社区成员中是如何不同的,我们检查了每组低疼痛和高疼痛被试中每个节点的社区分配的变化(见图7中的例子)。

在这两个组中,我们发现节点要么分配给一个社区,要么在我们的数据集中分布在两个或多个社区。我们根据它们的模式对这些节点进行分组:模式A、模式B、模式C和模式D。遵循模式A的节点被划分为社区1和社区3。模式B由主要存在于社区2中的节点组成。分组在模式C和D中的节点分别优先在社区3和社区1。

社区比率进一步通过量化节点社区分配在低和高疼痛FM网络之间的差异来检验节点社区分配的变化。 A lpha比率量化了节点相对于社区2被分配在社区1和3的平均频率 一个较低的Alpha比率意味着一个节点可能经常被分配到社区2中。通过计算节点相对于社区3被分配到社区1的频率,Beta比率检查节点是分配到社区1还是分配到社区3。较低的beta比表明在一组网络中一个节点主要在社区3中。

对社区比率的另一种解释是, Alpha比率决定了一个节点在一个群体中相对于模式B表现出模式A的规模。 beta比率解释了一个节点显示模式 D相对于模式C的比例。

25 ROC分析

根据R统计软件的接收器曲线分析确定识别指标。在每个阈值,组内NMI值用于确定网络拓扑是否准确识别FM或HC组成员。阈值是根据最大化到恒等线距离的值来确定的。敏感性、特异性和准确性也从这个阈值计算。

26 全脑回归分析

为了探讨传统的内在静息状态网络(RSN)与我们的网络测量方法之间的关系,我们进行了全脑回归分析,将FM患者的NMI与静息状态网络功能连接的改变进行相关。RSN种子是使用GIFT工具栏通过独立成分分析生成的。从估计的成分中,凸显(SLN)和默认模式网络(DMN)通过空间相关性与RSN模板进行识别。为每个RSN生成二元mask,用于Conn工具箱中的种子到全脑功能连接分析。为决定FM中与NMI关联的RSN网络的变化,个体beta图用于与NMI二阶全脑回归分析。年龄和运动作为协变量。

最后进行统计学分析。

3 结果

31 内在网络结构在慢性疼痛患者中改变了

首先决定FM与HC之间的网络结构是否有差异。比较了组内和组间网络组织的差异。发现FM组内,每一对FM患者平均NMI低于HC的对,说明FM组FC的组织更多变。HC有相对稳定的网络结构(高配对NMI)。组内NMI在FM与HC间显著不同,且在不同阈值都是事实(图2a)。然后,比较组间网络相似度。发现,FM患者组间NMI相对于组内FM NMI显著更低,说明网络组织与HC大不同。FM与HC之间社区数和模块的无显著差异(图2b,c)。对于运动的影响,平均FD在FM与HC显著不同,但NMI与运动无显著相关性,说明运动不会影响个体网络变化。均值FD与最大FD作为协变量不会影响组差异。

随后检验了这些结果的可重复性。在复制集,同样发现FM有更低的组内和组间NMI(图2c-e)。 简言之,慢性疼痛患者有更低的组内和组间NMI,说明其网络结构更多变和不同。模块度和社区数无组差异进一步说明尽管相对于社区间,社区内的连接强度是相似的,组成社区的节点在不同组是不同的。

32 NMI识别FM网络的敏感性和特异性

为了研究全局网络结构是否可以用于识别FM网络,我们测量了NMI是否可以准确地识别FM患者和HC的网络。ROC分析表明组内NMI在多个阈值可成功识别病人和控制,对发现和复制集平均准确性为85 ±139和86± 10,曲线下面积(AUC) 为87±108和86±128(图3)。不同阈值得到70%的一致性,组内NMI断准确识别FM患者,发现集敏感性88%,特异性94%,和复制集平均敏感性79%,特异性91% (图3 b)。在这两个数据集的准确性,敏感性,特异性和AUC随tau增加超过了07而有所下降。

33 静息态网络的变化与归一化互信息有关联

为了探讨FM的NMI与内在网络连接的相关性,我们采用全脑回归分析了静息状态网络连通性与NMI的相关性。凸显网络(SLN)和默认模式网络(DMN)之间的功能连接与组内NMI (FM-FM)有关。具体来说,我们发现扣带回/胼胝体下回、楔叶、颞中回和角回之间的显著连接与NMI呈负相关(图4a)。突显网络和前扣带皮层的功能连接说明突显网络内更强的连接与更低的NMI相关。由于后扣带皮层(PCC)和角回是默认模式网络的一部分,这些结果表明凸显网络和默认模式网络之间的功能连接也与组间不太相似的FM网络有关。值得注意的是,我们还发现脑岛皮质、舌、额下回、边缘上回和中央前回之间的DMN功能连接与FM中的NMI呈负相关。

34 组一致分析揭示社区结构

为可视化FM和HC的社区结构,我们生成一致网络,tau=05选择50%作为一致性阈值是因为病人和控制一直网络之间的社区数目一致。为测试RSN内的节点如何在社区中分布,对每个RSN,我们量化了每个社区的节点百分数(图4c,d)。对FM和HC网络,视觉网络和默认网络的节点主要在一个社区。一致HC网络,感觉运动节点分裂在社区3(66%)和4(26%),在一致FM网络仅在社区3(发现集)。额顶、凸显和次皮层节点在FM和HC的多个社区的分布不同。

为决定每个社区的构成,量化了每个社区内节点在每个RSN的百分数。两个数据集,FM和HC组社区1,2,3的构成一致。社区1包含从视觉到小脑网络的节点,2包含DMN的节点,3包含感觉运动、扣带-盖、次皮层、背侧和腹侧注意网络的节点。最小的社区4在不同数据集和组的节点数目和组成不同,FM一致网络社区4的48%的节点属于额顶网络,HC网络45%的节点与感觉运动网络一致。重复集,社区4的32%的节点在FM一致网络包含额顶网络节点,与发现集一致。突显网络在FM和HC分别构成了社区4节点的41%和50%。总之,FM和HC组每个RSN的节点的社区分布不同。

35 慢性疼痛的节点在社区分布上更多变

一致网络的差异表明,社区由多个静息网络的节点组成,这可能揭示了内在静息网络连接的差异。此外,FM患者与HC网络中不同社区节点的组织可能反映了慢性疼痛网络结构的差异,并与患者的临床疼痛强度有关。我们研究了FM和HC之间的社区组成差异与哪些节点有关。较高的phi值表明一个节点在FM或HC组内的个体中始终是同一社区的成员。我们发现许多脑区社区分配在组间存在显著差异,FM患者的Phi值低于HC患者。在发现集和复制集,FM组分别有118和121个节点有显著低的phi值。其余的phi在两组之间统计不显著。264个中有47个节点在两个数据集的FM个体中phi值一致更低,说明它们在FM中显著多变(图5b)。

36 不同疼痛度的病人内部网络结构不同

虽然在FM网络中节点更多变,我们特别感兴趣的是确定FM中的社区结构的可变性是否与临床疼痛相关。结合两个数据集的FM网络,然后基于临床疼痛评级分为三分位(每组23),创造低、中和高痛组。与低痛组相比,高痛组有显著更低的NMI,说明两组社区结构的差异(图6a)。中和高、低和中痛组组内NMI无显著差异。下面的分析仅纳入高和低痛组这两种极端情况。

探索临床疼痛和FM社区结构的可变性之间的关系,我们确定哪些节点可能引起了低和高疼痛病人网络结构的差异(图6 b)。phi测试显示43个节点在高和低痛组社区分配显著不同(图6b)。簇分析发现这些节点组成了2簇解决方案,在高低痛队列之间的差异进一步说明节点社区分配的变化与疼痛强度相关。高痛组43个节点的12个节点在社区分配中是稳定的。这些节点与DMN、额顶和凸显网络有关(图6c)。低痛组其余31个节点在社区分配中稳定,与感觉运动、扣带-盖、视觉、注意、额顶、凸显网络有关(图6d)。

37 社区率揭示了节点社区分配在不同疼痛强度间的不同

为了检查一个节点在两个组之间的社区成员如何不同,我们使用社区比率来量化低和高疼痛网络之间的节点社区分配。对于在低和高疼痛网络中社区分配存在显著差异的节点,我们通过计算每个组的节点社区分配频率分布,量化了社区分配在低和高疼痛网络中的差异。

我们测量了高痛网络更高phi的节点的alpha比率,这些节点在社区1和3(模式A)对比社区2(模式B)中分配不同(图7a,c)。例如,右角回通常位于社区1和3之间(相对于社区2),在高疼痛网络中相对于低疼痛网络有更高的Alpha比率。相反,右前脑岛主要在社区2的高疼痛患者网络中发现,具有较低的Alpha比率。我们还计算了评估社区3(模式C)或社区1(模式D)在低疼痛时节点稳定情况的Beta比率。左侧中央后回在低疼痛网络分配到社区3。因此,与高疼痛组相比,低疼痛组的beta比值更低。右内侧眶额回在低疼痛网络位于社区1,而高疼痛网络更常见于社区3。因此,对于这个节点,与低疼痛组相比,高疼痛组beta比率较低。

最后,我们研究了基于组一致分析的社区标签在节点之间的社区比率,以及它们在低和高疼痛网络之间的差异。Alpha比值的差异表明,颞中回、额上回、额中回和角回的节点与默认模式网络相关,在高疼痛时是稳定的,并且存在于与视觉和感觉运动静息状态网络相关的社区中。在高疼痛患者的默认网络社区中发现了与凸显网络相关的两个节点(即脑岛前部和额前中央)(图8a,c)。值得注意的是,丘脑内侧低和高疼痛网络之间的差异反映了低和高疼痛网络之间的社区2或3的节点分配。

Beta比率强调了与不同疼痛强度相关的视觉和感觉运动网络分配的差异(图8b,d)。在高痛网络中,眶内侧额回、颞上回、运动补充区/中央旁小叶、背侧前扣带回节点的beta比值较低,表明这些节点在高痛组分配到了感觉运动网络。在低疼痛网络中,这些节点在视觉和感觉运动社区之间变化,结果beta比接近1。有趣的是,第三组结点包括中央前回、中岛、颞上回额眶中回和视觉区域:舌、颞下回和枕下回,在高疼痛时也有更高的beta比。与低疼痛网络相比,高疼痛网络的这些节点出现在视觉社区中。这些结果表明,社区比例量化了FM患者与临床疼痛强度相关的社区组成的节点差异。

4 讨论

本研究的主要结果是慢性疼痛患者与HC的NMI是不同的。FM患者组内和组间NMI均显著降低,说明FM患者的社区构成更不稳定,与HC有显著差异。此外,NMI准确地预测网络是来自FM患者还是HC,准确率为85%。我们发现,社区结构的差异与慢性疼痛患者网络中节点忠诚度的变化有关。简言之,在慢性疼痛患者的社区分配中,某些大脑区域更多变、可预测性更低。接下来,我们确定这些社区结构的变化是否与临床疼痛水平相关。与低疼痛的慢性疼痛患者相比,高疼痛的临床患者NMI较低。这些网络拓扑结构上的差异归因于跨网络功能社区的内在组成,并与不同程度的临床疼痛相关(图8)。本研究的一个显著优势是,我们在FM和HC参与者的新队列中复制了社区结构的差异。

5 结论

与HC相比,FM患者的内在脑功能网络变化更大。此外,不同程度的临床疼痛患者内在脑网络的社区组成也不同。本研究表明介观尺度的社区结构可以作为FM患者的诊断工具。

网络游戏一般有电信和网通服务器,

如果我家用电信的宽带进入网通的服务器由于线路不同,就会很卡,所以分服。

如果我用广东电信宽带的进上海电信服务器,因为线路远了,延迟就高了,所以分区。

某个服务器人多了就分频道。

所以一般是你用什么运营商就进你运营商所在地的游戏服务器,那游戏玩起来就比较流畅。

"split brain"原本是指医学中的“ 裂脑综合征 ”,即连接大脑左右半球的胼胝体受损到一定程度后发生的症状。左右脑分离后,会分别处理知觉、形成概念和对刺激产生反应,相当于有两个脑在一个身体运作,会造成患者行为的冲突。例如:

split brain这个词也被计算机科学引入,指 采用主从(master-slave)架构的分布式系统中,出现了多个活动的主节点的情况 。但正常情况下,集群中应该只有一个活动主节点。

造成脑裂的原因主要是 网络分区 (这个词之前在 讲CAP理论 时就已经出现过了)。由于网络故障或者集群节点之间的通信链路有问题,导致原本的一个集群被物理分割成为两个甚至多个小的、独立运作的集群,这些小集群各自会选举出自己的主节点,并同时对外提供服务。网络分区恢复后,这些小集群再度合并为一个集群,就出现了多个活动的主节点。

另外,主节点 假死 也有可能造成脑裂。由于当前主节点暂时无响应(如负载过高、频繁GC等)导致其向其他节点发送心跳信号不及时,其他节点认为它已经宕机,就触发主节点的重新选举。新的主节点选举出来后,假死的主节点又复活,就出现了两个主节点。

脑裂的危害非常大,会破坏集群数据和对外服务的一致性,所以在各分布式系统的设计中,都会千方百计地避免产生脑裂。下面举两个例子说说。

一般有以下三种思路来避免脑裂:

Quorum一词的含义是“法定人数”,在ZooKeeper的环境中,指的是ZK集群 能够正常对外提供服务所需要的最少有效节点数 。也就是说,如果n个节点的ZK集群有少于m个节点是up的,那么整个集群就down了。m就是所谓Quorum size,并且:

为什么是这个数呢?

考虑一个n = 5的ZK集群,并且它按3:2分布在两个机房中。

假设m = 2(即n / 2),当两个机房之间的网络中断时,Server 1~3和Server 4~5将分别形成独立的集群,并且都能对外提供服务——也就意味着都能重新选举出各自的Leader,即产生了脑裂。当网络恢复,两个集群合并时,它们的数据就会不一致。

但是,若m = 3(即n / 2 + 1),那么网络中断后,DC2上的两个节点不满足Quorum要求的数量,故只有DC1上的三个节点能选举出Leader并提供服务,DC2上的两个节点不能提供服务,当然也就不会破坏数据一致性了。

由上可知,ZK的Quorum机制其实就是要求集群中 过半 的节点是正常的,所以ZK集群包含奇数个节点比偶数个节点要更好。显然,如果集群有6个节点的话,Quorum size是4,即能够容忍2个节点失败,而5个节点的集群同样能容忍2个节点失败,所以可靠性是相同的。偶数节点还需要额外多管理一个节点,不划算。

上面说的是网络分区的情况,如果是Leader假死呢?

之前某篇文章中其实说过了,集群每次选举出一个Leader时,都会自增纪元值(epoch),也就是Leader的代数。所以,就算原来的Leader复活,它的纪元值已经小于新选举出来的现任Leader的纪元值,Follower就会拒绝所有旧Leader发来的请求,所以不会产生脑裂。当然,有一部分Follower可能对新选举出的Leader没有感知,但由于上述Quorum机制的保证,这部分肯定不会占多数,故集群能够正常运转。除ZK外,Kafka集群的Controller也是靠纪元值防止脑裂的。

下面先贴出HDFS高可用的官方经典架构图。

HDFS NameNode高可用需要两个NN节点,一个处于活动状态,另一个处于热备状态,由ZKFailoverController组件借助外部ZK集群提供主备切换支持。

当活动NN假死时,ZK集群长时间收不到心跳信号,就会触发热备NN提升为活动NN,之前的NN复活就造成脑裂。如何解决呢?答案就是隔离,即 将原来那个假死又复活的NN限制起来 (就像用篱笆围起来一样), 使其无法对外提供服务 。具体来讲涉及到三方面。

为了实现Fencing,成为活动NN的节点会在ZK中创建一个路径为 /hadoop-ha/${dfsnameservices}/ActiveBreadCrumb 的持久znode。当正常发生主备切换时,ZK Session正常关闭的同时会一起删除上述znode。但是,如果NN假死,ZK Session异常关闭, /hadoop-ha/${dfsnameservices}/ActiveBreadCrumb 这个znode就会残留下来。由热备升格为活动的NN会检测到这个节点,并执行Fencing逻辑:

只有Fencing执行完毕之后,新的NN才会真正转换成活动状态并提供服务,所以能够避免脑裂。

最后废话一句,JournalNode集群区分新旧NN同样是靠纪元值,而它的可用性也是靠Quorum机制——即如果JournalNode集群有2N + 1个节点的话,最多可以容忍N个节点失败。

冗余通信机制没有提到,其实就是在节点之间添加额外的心跳线,防止一个心跳路径断开导致误判。

帝都疫情开始反d,还是老实在家待着吧。

民那周末快乐,晚安。

前几周有人问我,如果有一个环境中给你10多个交换机和路由器,应该如何配置。这是一个很好的问题,关键不在端口安全、Port Channel、STP、和路由的配置,而是在于针对终端应用服务特点选择相应适合的网络架构。

近十年来,虽然云服务的扩展性需求促进了相关解决方案快速发展,然而数据中心常见的网络拓扑仍然可以归纳为两种:传统的三层网络架构,和Leaf-Spine二层网络架构。

传统的三层网络架构由三层交换机组成:即访问层,聚合层(有时称为分发层)和核心层。服务器连接到其中一个边缘层访问交换机(常称Top of Rack Switch,或 TOR Switch),聚合层交换机则将多个接入层交换机互连在一起,所有聚合层交换机通过核心层交换机相互连接。核心层交换机还负责将数据中心连接到Internet。传统的数据中心过去采用的就是这种三层架构。

下图是我参与优化设计的有数万台服务器的传统数据中心网络架构示意图。

在这个拓扑中,除了经典的三层(分发路由器,网络分区汇聚路由器,服务器接入交换机)外,核心层还包括了: WAN核心骨干路由器,WAN发路由器,WAN优化加速,LAN核心路由器,外部Choke路由器,Internet边界路由器,Transit,防火墙,用于联接数据包分析器的Network TAP。网络负载均衡器放在了聚合层。另外还有一个专用的OOB接入层,用于设备维护管理。

三层架构虽然容易部署、易于诊断,但是其已无法满足日益增长的云计算需求。三层架构面临的主要问题包括:低可扩展性、低容错性、内部服务器之间横截面带宽低、较高层超额使用(Oversubscription)、高层次的拓扑中使用的大型模块化交换机成本非常高。

我过去常采用以下这几个方法缓解三层架构中网络分离问题:

(1)、PVLAN: 专用VLAN,也称为端口隔离,是计算机网络中的一种技术,其中VLAN包含受限制的交换机端口,使得它们只能与给定的端口通信。这个常用于后端的NFS网络。

(2)、VRF虚拟化路由表,用于路径隔离。

(3)、GRE Tunnel。

(4)、使用一些Overlay network封装协议并结合一 *** 作系统虚似化实现网络分离。

Leaf-Spine网络架构解决了传统三层网络架构所面临的Oversubscription和内部服务器之间横截面带宽问题。Leaf-Spine网络架构在过去几年里已开始接管主要的云服务数据中心。Leaf-Spine结构也称为Clos结构,其中每个Leaf交换机(ToR交换机)以全网状拓扑连接到每个Spine交换机。这是一种两层的Fat-tree网络。这种架构中Leaf之间只有一个跳,最大限度地减少了任何延迟和瓶颈。Spine网络的扩展非常简单,只要在需增长的情况下逐步添加Spine交换机。

Leaf-Spine架构使用定制的寻址方案和路由算法,而非传统的STP。根据网络交换机中可用的功能,可以使用第2层或第3层技术实现Leaf-Spine网格。第3层的Leaf-Spine要求每个链路都被路由,并且通常使用开放最短路径优先(OSPF)或等价多路径路由( ECMP )来实现的边界网关协议(BGP)动态路由。第2层采用loop-free的以太网fabric技术,例如多链接透明互联(TRILL)或最短路径桥接(SPB, IEEE 8021aq)。其中,思科的FabricPath 和Brocade的Virtual Cluster Switching是基于TRILL发展而来的私有data plane。核心网络还可使用带有ECMP的动态路由协议通过第3层连接到主干网。华为、联想、Brocade、HP、 Extreme Networks等公司都有基于TRILL的产品或其它Leaf-Spine架构的解决方案。

Leaf-Spine结构的优点是:

(1)、使用所有链路互连,而不像传统网络中冗余链路被STP阻塞。

(2)、所有内部Leaf之间横向通信都是等距的,因此数据流延时时间是确定的。

(3)、Underlay的交换机配置和核心网络配置是固定的,因此变更Overlay Network的路由不需要更改核心网络。

(4)、产品安全区域能虚拟分离,扩展了VLAN和多租户安全性。

(5)、基础设施的物理网络可以和逻辑网络(Overlay network)分离。

Leaf-Spine结构也有些缺点,比如:

(1)、网络交换机的数量远远大于三层网络架构。

(2)、扩展新的Leaf时需要大量的线缆、并占用大量Spine交换机端口。

(3)、Spine交换机端口数量决定了最大可联接的Leaf交换机数量,也就决定了最大主机总数量。

下图是我参与过的一个公有云Leaf-Spine方案示意草图。

现代的数据中心部署中,我们一般将网络设备、服务器和机架在出厂时应模块化。对于使用Leaf-Spine 网络的数据中心,出厂时预装配成四种类型的标准工程系统:Transit 机柜, Spine 机柜, Fabric 机柜, 和 Server 机柜。Leaf 交换机和服务器一样被预装配于 Server 机柜,基本上做到开柜上电即可上线使用。

当下全球主流公有云基本上采用的都是Leaf-Spine 网络架构。然而,各家公有云服务商Leaf-Spine网络中的Underlay Network和Overlay Network使用的协议和方案有很大区别。比如,你可以基于Leaf-Spine架构使用VXLAN来设计你的SDN解决方案,也可以基于ECMP的BGP-labeled-unicast的underlay 网络,使用MPLS L3***s构建另一种多租户的数据中心SDN解决方案。

聊完了两种层数据中心网络架构,相信大家如有机会搭建新的网络时,应该知道如何选择您的网络架构方案了。

欢迎大家发表留言,谈谈你所熟悉的Leaf-Spine网络架构方案中,Underlay Network和Overlay Network使用的协议分别是什么。

参考资料:

(1)、 Building Multi tenant Data Centers with MPLS L3***s

(2)、 Cisco Data Center Spine-and-Leaf Architecture: Design Overview White Paper

首先我们再来明确一下CAP里的A的标准(非常高的标准)

这个标准可能和我们平时用的可用性是不一样的。比如你肯定会听说有这样一个概念,5个9可用。这里的可用性是关于“time system available” 除以 “total time”

所以定义上有很大的不同。CAP里的可用性不是being available的意思。而且主要讨论当系统处于网络分区情况下的该有的行为。

但是,我们还是可以用CAP里的A的术语,来定义高可用和部分可用

区别在于,高可用允许有些没挂掉的节点不给出响应。但是所有请求总有一部分节点是肯定能给出响应的。(如共识系统zookeeper)

部分可用就是允许有一些请求,所有节点都无法给出响应,有一些会有一部分节点肯定可以给出响应。

基于前面2节,系统可以划分到4类。

现在我们对一些系统做分类,▲意味着是网络分区下的典型,绝大多数的表现,△意味着网络分区下的有可能的一些表现

上图第一行是 一个WEB应用连接一个SQL DB 是一个CA系统,基本是完全不可用的当发生网络分区时。

Typical CP big data system 是一个CP的系统。典型的情况是网络分区下是高可用,有一些是部分可用或完全不可用。

下面我们来逐行分析

这个系统可以宣称自己是CP或者CA(我无法处理partition的情况)都可以。

说CP对市场营销是有好处的:虽然在有分区的情况下系统无法正常工作,但它被标记为“耐分区”。 直到有一个分区,最终用户发现CP的真正含义

说CA强调了网络分区是系统的实际问题,应该特别注意网络。 从软件工程的角度来看,这似乎是最好的类别。

之前分析过了是 non-CA的,意思是这个系统不是强一致,在网络分区下,不可用。

这个系统上述的2PC是带逃生窗口的2PC,可以被划分到下述2类。

CP系统,上一章已经分析过了。同时是高可用的,只要在多数的那个分区里,可以响应任意请求。

这是一个有很多种可用性的类型。CP大数据存储对于某些分区可能是高度可用的,但并非对每个分区都可用。 某些分区至少有部分可用性

这或多或少是直观的:数据量很大,因此无法容纳所有可能的分区。 然后,根据网络分区,我们可以找到:

一个分区具有所有数据的副本:这是高可用性。

没有一个分区具有所有数据的副本,并且使用大数据存储的应用程序无法应对这种情况。 整个系统不可用。

没有一个分区具有所有数据的副本,但是应用程序可以处理丢失的数据。 那是部分可用性。 这取决于应用程序,因为应用程序必须显式管理这种情况。 他们中的大多数将无法应付这种情况。

为了说明所有这些,让我们来看一个实际的实现。 下面数学中的逻辑是使用最乐观的计算:在大多数实际情况下,实际可用性会更糟。

HDFS,Hadoop分布式文件系统。 HDFS是一个CP大数据系统:如果将系统分为两个分区,则只有一个分区将继续为查询提供服务。

其特点是:

所有这些都是可配置的,但是此处提到的值是常用的。 假设我们有10个机架,在复制整个集群之前有200 Tb的数据。 也就是说,每个HDFS块有160万块,每块128 Mb。

将有两个分区:一个分区具有1至9的机架,另一个分区具有10的机架。有了这样的分区,前9个机架可以继续满足所有请求:通过构造,它们具有所有数据,就像将所有块写入机架一样 10个也被复制到另一个机架中。 但是,机架10中的客户端无法将请求发送到这9个机架,因此该系统总体上是高度可用的,但没有CAP可用。(因为要求所有请求到任意一个没有挂掉的节点都可用,显然机架10不符合要求)

请注意,即使机架10具有所有数据,机架10中的客户端仍将无法在本地执行任何工作:CP系统不能使两个分区(CAP)并行运行。(这样会违反一致性,因为数据必须同步复制出去)

为了高度可用,该分区至少需要每个块一个副本。 现在,如果我们只有50%的机架,那么拥有至少一份数据副本的概率是多少? 为了进行计算,我们简化一下,说每个块都复制在3个不同的机架上。 因此,将所有副本放在另一个分区中的概率为:

初版:10个中有5个坏机架

第二份副本:9个中有4个坏机架

第三副本:8个坏机架中的3个

这样,我们得到一个块:(5/10) (4/9) (3/8),即8%。 因此,对于单个块,我们在主分区中至少有一个副本的可能性约为92%。 很好,但是我们有160万个区块。 所有块中至少有一个副本的概率为92%。 160万个块,实际上为零。 从CAP分类的角度来看,这并没有任何改变:它仍然是CP,因为CP允许我们在任何节点上的某些请求失败。 但是该系统不再具有高可用性。

首先最终一致不是强一致的,其次他不是CAP的可用。在大多数这样的系统里它可以保持高可用

大多数网络分区将导致一个有足够数据的分区与另一个没有足够数据的分区之间的分裂。 对于这些分区,系统作为存储是高度可用的,但对于CAP不可用:第二个分区无法处理所有请求(如果有)。

如果配置了数据中心之间的复制,则对于数据中心之间的分区(仅对此分区),系统将是CAP级别的可用。(因为任意请求在任意机器上都可以得到响应,因为数据中心包含了所有数据)

虽然不可能使“最终一致的大数据系统”成为AP,但也很难使任何最终一致的系统都属于该类别。 这是因为AP系统必须

但是,即使在技术上可以构建最终一致的AP系统时,某些应用程序仍可能具有安全约束,这将使断网的 *** 作变得困难。 对于今天的某些业务应用程序,有一些关于“限时访问”的要求,这些要求可以在几分钟内制定。 访问权限和身份验证应用程序是愿意选择“可用性”而不是“一致性”的应用程序的典型示例,但是它们也受到这些“限时访问”要求的限制。

市场营销中使用的CAP分类与CAP定理的实质无关。大部分将自己描述为CP的系统并非全部都不具有分区容错性,并且大多数声称是AP的系统也不是全部可用。以下是一些简要介绍:

埃里克·布鲁尔(Eric Brewer)在2012年的论文 C3 ]中已经提到了这里提出的许多观点。 在2000年的演讲 C1 ,

中,他已经研究了部分可用数据的细节。

而且,Daniel Abadi在[ C8 中已经指出:“我对CAP的主要问题是,它将CAP集中在所有人身上,这是使每个人都专注于一致性/可用性之间的权衡,从而导致人们认为NoSQL系统放弃一致性的原因是为了获得可用性。 但是,实际上,大多数放弃一致性的应用最终并没有获得更多的可用性。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/12180213.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存