-
剪断阿里的网线,双十一还能买东西吗?
2020-11-26 17:28:03这条抖音是阿里官方号发的,大概意思是随便剪网线,拉闸断电,都不影响我们买买买,让我们放心,发生故障也不影响我们花钱。 那么,从网络技术层面,有哪些可以实现这样高可靠性的技术呢? 小贴士: 网络高可靠性...双十一时,百哥的朋友圈被一条抖音截图刷屏了
这条抖音是阿里官方号发的,大概意思是随便剪网线,拉闸断电,都不影响我们买买买,让我们放心,发生故障也不影响我们花钱。
那么,从网络技术层面,有哪些可以实现这样高可靠性的技术呢?
小贴士:
网络高可靠性:是指当设备或网络出现故障时,网络提供服务的不间断性。
互联网公司的可靠性都会做到5个9以上
–可靠性99.999%意味着每年故障时间不超过5分钟
–可靠性99.9999%意味着每年故障时间不超过30秒为了实现更多的9,从网络技术、云计算技术、数据存储技术、甚至能源技术经过多年发展,产生了很多技术,本文分享几个常用的网络高可靠性技术。
MSTP,多生成树技术
可以通过连接多条线路,实现冗余,当一条线故障,数据会走备用线路。
但是因此会产生环路,环路会导致广播风暴,广播风暴又会导致网络崩溃。
所以必须有个技术来解决环路,这个技术就是生成树,简称STP。
STP随着技术发展,又进化成了RSTP和MSTP,RSTP是加快了线路切换的速度,MSTP则可以部署多实例,实现数据更合理的分流。
想成为网络工程师,获取更多网工学习资料可 + Q 裙 :7521 60765 什么?你说生成树过时了,有更好的技术了,那这个技术是什么呢?
VRRP,虚拟路由冗余协议
想成为网络工程师,获取更多网工学习资料可 + Q 裙 :7521 60765 前面实现了线路的冗余,一条线被剪断了,被老鼠咬了,被队友不小心踢掉了,都没有关系,因为有备用线路。
但是如果网关设备坏了怎么办,有备用线路,没网关也不行啊。
这时可以使用VRRP技术,实现网关设备的冗余。
简单点来说就是让多个设备来充当网关,一台坏了,其他的立即顶上,网络不断。
Linux服务器上的keepalived技术,也是基于VRRP协议。
想成为网络工程师,获取更多网工学习资料可 + Q 裙 :7521 60765 什么?你说VRRP也过时了,还有更好的技术了,行!
链路聚合
想成为网络工程师,获取更多网工学习资料可 + Q 裙 :7521 60765 看到那个小圈圈了吧,这个就是拓扑图中用来表示链路聚合的。
链路聚合就是把多条线捆绑起来,变成逻辑上的一根线来用,这样不仅线路冗余了,可靠性高了,两个设备间的带宽还变大了。
而且,没有环路,因为这本来就变成1根线了。
链路聚合,不同厂商有不同的名字,但其实是一个意思,也遵循相同的协议,可以互相兼容。
华为叫E-trunk,思科叫以太网通道,锐捷叫AP(aggregate port)等
想成为网络工程师,获取更多网工学习资料可 + Q 裙 :7521 60765 堆叠技术
想成为网络工程师,获取更多网工学习资料可 + Q 裙 :7521 60765 堆叠技术,也叫设备虚拟化技术,可以把多台设备,虚拟成一台。
然后通过多条线路,连到多台成员设备上,再把线路捆绑成一条。
这样,就相当于把高可靠性网络,变成了逻辑上的单核心单线路网络。
不但拓扑简单,整体性能还更高,故障发现和切换还更快,足以代替传统的mstp+vrrp解决方案。
但是传统技术依然在广泛应用,因为要使用设备虚拟化技术,首先得产品支持,包括硬件和软件都得支持,很多中低端设备没这功能,或者高端设备的老版本软件支持不佳,升个级又提心吊胆怕变砖。
想成为网络工程师,获取更多网工学习资料可 + Q 裙 :7521 60765 本文列举几个网络方面的高可靠性技术,其实为了实现数据中心的高可靠性,还远远不够,欢迎关注百哥,更多技术干货会持续更新。
-
讨论帖:如果只有两个数据中心,使用 Raft 协议还有意义吗?
2020-02-04 12:27:10作者:disksing 对 Raft 有所了解的同学都知道...这里超过半数的意思是 N/2+1(而不是N/2)。举例来说,3 节点集群需要 2 个以上节点在线,5 节点集群需要 3 个以上节点在线,等等。对于偶数节点的集群,2 节点集群...作者:disksing
对 Raft 有所了解的同学都知道,Raft 一般会使用奇数个节点,比如 3、5、7 等等。这是因为 Raft 是 一种基于多节点投票选举机制的共识算法,通俗地说,只有超过半数节点在线才能提供服务。这里超过半数的意思是 N/2+1(而不是N/2)。举例来说,3 节点集群需要 2 个以上节点在线,5 节点集群需要 3 个以上节点在线,等等。对于偶数节点的集群,2 节点集群需要 2 节点同时在线,4 节点集群需要 3 节点在线,以此类推。实际上不只是 Raft,所有基于 Quorum 的共识算法大体上都是这么个情况,例如 Paxos,ZooKeeper 什么的,本文仅以 Raft 为例讨论。
先考察一下为什么 Raft 通常推荐使用奇数节点而不是偶数节点。
共识算法要解决的核心问题是什么呢?是分布式系统中单个节点的不可靠造成的不可用或者数据丢失。Raft 保存数据冗余副本来解决这两个问题,当少数节点发生故障时,剩余的节点会自动重新进行 leader 选举(如果需要)并继续提供服务,而且 log replication 流程也保证了剩下的节点(构成 Quorum)总是包含了故障前成功写入的最新数据,因此也不会发生数据丢失。
我们对比一下 3 节点的集群和 4 节点的集群,Quorum 分别是 2 和 3,它们能容忍的故障节点数都是 1。如果深究的话,从概率上来说 4 节点集群发生 2 节点同时故障的可能性要更高一些。于是我们发现,相对于 3 节点集群,4 节点集群消耗更多的硬件资源,却换来了更差的可用性,显然不是个好选择。
但是!!!
上面说了,Raft 解决的核心问题有两个,分别是高可用和数据容灾。跟奇数节点相比,偶数节点的方案从可用性上看很不划算,但是数据容灾方面却是有优势的。还是以 4 节点为例,因为 Quorum 是 3,写入数据的时候需要复制到至少 3 个节点才算写入成功,假如此时有 2 个节点同时故障,这种情况下虽然不可用了,但是剩余的两个节点一定包含有最新的数据,因此没有发生数据丢失。这一点很容易被忽视,在常见的奇数节点配置下,保证可用和保证数据不丢所容忍的故障节点数是重合的,但是在偶数节点配置下是不一样的。
根据上面的分析,偶数节点集群的适用场景是“能容忍一定时间的不可用,但不能容忍数据丢失”,应该有不少严肃的金融场景是符合这个描述的,毕竟一段时间不服务也比丢掉数据要强呀。
下面以两数据中心环境为例来对比一下。限制条件是任意一个数据中心故障时(比如发生严重自然灾害),能容忍一定时间的不可用,但不允许发生数据丢失。
如果使用奇数节点集群配置,两个数据中心的节点数一定是不对等的,一旦节点数更多的那个数据中心故障,就可能发生数据丢失了。而如果使用偶数节点配置,两个数据中心的节点数是一样的,任意一个数据中心故障后,另一个数据中心一定包含有最新数据,我们只需要使用工具改写 Raft 元信息,让剩余数据中心的所有节点组成新的 Raft Group 并使得 Quorum 恰好等于剩余节点数,Raft 选举机制将会自动选择包含有最新数据的节点当 leader 并恢复服务。
题外话:本来想在 etcd 上实践下这套方案,可惜最后一步 etcd 恢复数据的时候只支持从单一节点恢复,所以无法做到“自动选择包含有最新数据的节点当 leader 并恢复服务”。我给 etcd 提了个 issue 不过貌似并没有成功让他们了解到我想干啥,如果有人看到这里觉得这事情有搞头的话,可以帮忙去 issue 下支持一下(https://github.com/etcd-io/etcd/issues/11486 )。
以上内容转载自 disksing 个人博客:原文地址 。
讨论话题:
Raft 通常需要三数据中心来解决高可用问题,但一些场景下面,用户只有两个数据中心,那么使用 Raft 协议还有意义吗?
欢迎大家在本篇文章下面踊跃留言,分享你遇到过的“偶数节点 Raft”的案例或者各种“奇葩”问题 以及你的思考~
-
paxos协议 对比_讨论帖:如果只有两个数据中心,使用 Raft 协议还有意义吗?
2020-12-24 01:00:18作者:disksing对 Raft 有所了解的同学都...这里超过半数的意思是 N/2+1(而不是N/2)。举例来说,3 节点集群需要 2 个以上节点在线,5 节点集群需要 3 个以上节点在线,等等。对于偶数节点的集群,2 节点集群需要...作者:disksing
对 Raft 有所了解的同学都知道,Raft 一般会使用奇数个节点,比如 3、5、7 等等。这是因为 Raft 是 一种基于多节点投票选举机制的共识算法,通俗地说,只有超过半数节点在线才能提供服务。这里超过半数的意思是 N/2+1(而不是N/2)。举例来说,3 节点集群需要 2 个以上节点在线,5 节点集群需要 3 个以上节点在线,等等。对于偶数节点的集群,2 节点集群需要 2 节点同时在线,4 节点集群需要 3 节点在线,以此类推。实际上不只是 Raft,所有基于 Quorum 的共识算法大体上都是这么个情况,例如 Paxos,ZooKeeper 什么的,本文仅以 Raft 为例讨论。
先考察一下为什么 Raft 通常推荐使用奇数节点而不是偶数节点。
共识算法要解决的核心问题是什么呢?是分布式系统中单个节点的不可靠造成的不可用或者数据丢失。Raft 保存数据冗余副本来解决这两个问题,当少数节点发生故障时,剩余的节点会自动重新进行 leader 选举(如果需要)并继续提供服务,而且 log replication 流程也保证了剩下的节点(构成 Quorum)总是包含了故障前成功写入的最新数据,因此也不会发生数据丢失。
我们对比一下 3 节点的集群和 4 节点的集群,Quorum 分别是 2 和 3,它们能容忍的故障节点数都是 1。如果深究的话,从概率上来说 4 节点集群发生 2 节点同时故障的可能性要更高一些。于是我们发现,相对于 3 节点集群,4 节点集群消耗更多的硬件资源,却换来了更差的可用性,显然不是个好选择。
但是!!!
上面说了,Raft 解决的核心问题有两个,分别是高可用和数据容灾。跟奇数节点相比,偶数节点的方案从可用性上看很不划算,但是数据容灾方面却是有优势的。还是以 4 节点为例,因为 Quorum 是 3,写入数据的时候需要复制到至少 3 个节点才算写入成功,假如此时有 2 个节点同时故障,这种情况下虽然不可用了,但是剩余的两个节点一定包含有最新的数据,因此没有发生数据丢失。这一点很容易被忽视,在常见的奇数节点配置下,保证可用和保证数据不丢所容忍的故障节点数是重合的,但是在偶数节点配置下是不一样的。
根据上面的分析,偶数节点集群的适用场景是“能容忍一定时间的不可用,但不能容忍数据丢失”,应该有不少严肃的金融场景是符合这个描述的,毕竟一段时间不服务也比丢掉数据要强呀。
下面以两数据中心环境为例来对比一下。限制条件是任意一个数据中心故障时(比如发生严重自然灾害),能容忍一定时间的不可用,但不允许发生数据丢失。
如果使用奇数节点集群配置,两个数据中心的节点数一定是不对等的,一旦节点数更多的那个数据中心故障,就可能发生数据丢失了。而如果使用偶数节点配置,两个数据中心的节点数是一样的,任意一个数据中心故障后,另一个数据中心一定包含有最新数据,我们只需要使用工具改写 Raft 元信息,让剩余数据中心的所有节点组成新的 Raft Group 并使得 Quorum 恰好等于剩余节点数,Raft 选举机制将会自动选择包含有最新数据的节点当 leader 并恢复服务。
题外话:本来想在 etcd 上实践下这套方案,可惜最后一步 etcd 恢复数据的时候只支持从单一节点恢复,所以无法做到“自动选择包含有最新数据的节点当 leader 并恢复服务”。我给 etcd 提了个 issue 不过貌似并没有成功让他们了解到我想干啥,如果有人看到这里觉得这事情有搞头的话,可以帮忙去 issue 下支持一下(https://github.com/etcd-io/etcd/issues/11486)。
以上内容转载自 disksing 个人博客:原文地址 。
讨论话题:
Raft 通常需要三数据中心来解决高可用问题,但一些场景下面,用户只有两个数据中心,那么使用 Raft 协议还有意义吗?
欢迎大家在本篇文章下面踊跃留言,分享你遇到过的“偶数节点 Raft”的案例或者各种“奇葩”问题 以及你的思考~ -
SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典)--随书源代码
2013-02-06 12:04:003.6.3 重复以上步骤直到客户同意你的模型 95 3.7 最佳实践 95 3.8 总结 96 第4章 规范化过程 97 4.1 为什么要规范化 98 4.1.1 消灭重复数据 98 4.1.2 避免编写不必要的代码 98 4.1.3 给表瘦身 98 4.1.4 最大... -
问一个蓝桥杯的java题,新手求解
2017-02-21 06:27:06如果字符之间有两个以上的空格程序是怎么处理的? 2、for(int i=0;i;i++)str1[i]=String.valueOf((char)(str1[i].charAt(0)+('A'-'a')))+str1[i].substring(1);这段代码什么意思? 3、fin+=m.group(1);是什么意思? -
让你的网页更丝滑(全)
2021-01-08 14:41:34其实就是更流畅的意思。 简单介绍一下自己,2012年我从中专毕业,当时是17岁,2015年我加入了360最大的前端团队奇舞团,那一年我是20岁;2017年由于组织架构的变动,我们组被... -
LINGO软件的学习
2009-08-08 22:36:50集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z)、下划线、阿拉伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。 注意:该命名规则同样适用... -
超级有影响力霸气的Java面试题大全文档
2012-07-18 09:47:04GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收... -
让Oracle跑得更快:Oracle10g性能分析与优化思路--详细书签版
2013-02-06 16:23:02这是很多人追求的目标,它的意思是,在Oracle数据库中,通过调整性能参数的值,就可以让数据库运转得飞快。 实际上这不过是句玩笑,它本身是一句反话,却让很多人误入歧途。我看到很多人,包括一些DBA,凡涉及... -
Linux操作系统基础教程
2013-04-08 21:34:26要的是,Linux 上有公认的 C 语言世界最好的编译器 gcc,如果你想得到一个效率更高的开 发环境(并不一定是最友好的,但一定是最强大的),我建议你一定要好好的熟悉一下 Linux。 三.如何得到Linux? 据我所知... -
3.4.8 找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。 3.4.9 找出被修改过的数字 3.5.0 设计DNS服务器中cache的数据结构。要求设计一个...
-
正则表达式
2014-12-03 14:51:39我们已经发现了,在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配的.JavaScript的正则表达式还通过以反斜杠(\)开头的转义序列支持某些非 字母字符.例如,序列 "\n" 在字符串中匹配的是一个直接量换... -
php高级开发教程说明
2008-11-27 11:39:22偏爱的语言(也许是公司指定的一种语言),了解它的优点和它的缺点,并根据语言的具体特点 修正项目。但当克服所选语言的缺陷时,就可能会增加不必要的额外工作。 了解如何使用一门语言却缺乏其特定的概念知识,就... -
java 面试题 总结
2009-09-16 08:45:34GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收... -
net学习笔记及其他代码应用
2010-11-16 18:15:0921.在.net中,配件的意思是? 答:程序集。(中间语言,源数据,资源,装配清单) 22.常用的调用WebService的方法有哪些? 答:1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜单选项 23..net... -
windows实用dos命令大全
2010-12-10 21:27:35(2)PATH命令中的路径,若有两条以上,各路径之间以一个分号“;”隔开; (3)PATH命令有三种使用方法: PATH[盘符1:][路径1][盘符2:][路径2]…(设定可执行文件的搜索路径) PATH:(取消所有路径) ... -
报组是什么意思? 6. 组和中心有什么区别? 7. 如何获知每个组的招生人数? 8. 本科学校不好,报考北邮会不会有歧视? 9. 北邮考研看重比赛和项目经历吗? 10. 跨考北邮计算机应该准备些什么,会不会歧视跨考? 11. ...
-
[老饭骨] 黄金炒饭 - https://youtu.be/RT9tmSnpziI
2020-12-09 06:09:15翻译主要意思即可,不要超过 100 个字符) 【国宴大师•黄金炒饭】松软弹香又油润,粒粒分明不粘锅!这样的黄金炒饭不来一碗吗? |老饭骨 简介 小友们好,今天给大家带来一碗... -
[老饭骨] 象眼鸽蛋 - https://youtu.be/-gBr0T4HXzk
2020-12-09 10:04:51翻译主要意思即可,不要超过 100 个字符) 【国宴大师•象眼鸽蛋】快失传的精致宫廷老菜:象眼鸽蛋!虾仁Q弹、面包酥脆、桃仁香甜,做宴席太赞了!牛肉丸怎么打出来才弹|老饭骨 简介 ... -
【美食作家王刚】一串樱桃肉 - https://youtu.be/j4He7VuVyu4
2020-12-09 09:07:37清水的量最好能烧制40分钟以上 0:05:22.295,0:05:23.992 大概需要没过五花肉即可 0:05:25.670,0:05:27.656 加入适量的糖色大火烧开 0:05:47.695,0:05:50.009 大火烧开之后再加入适量的冰糖 0:05:50.106,0:05:51....