1. 一篇文章理解啥叫IP分布式网络
本系列文章主要是为了聊聊网络新技术话题,比如SDN和Segment Routing等新技术。在进入主题之前,我觉得有必要先简单聊下IP网络中的分布式和集中式概念,为后面的技术介绍做个框架性和方向性的铺垫。
本文虽然是技术性主题文章,但是为了便于理解,会尽量少涉及专业技术术语,尽力进行技术的通俗化解释。
我们常说IP转发是尽力而为的(Best Effort),网络新手往往被这句话搞得摸不着头脑。啥叫尽力而为,表示转发很费力不尽力不行吗?还是只做甩手掌柜简单扔出去就完了?其实IP转发的尽力而为就是IP转发的依据只看目的地址,有路由条目就转发,没有路由条目就丢弃,没有任何控制、确认和保障的手段,简简单单不跟你来任何花样的套路!最重要的是,尽力而为的核心在于 各个网络设备的转发行为是独立决策的 ,怎么转发只看自己的表项,任何邻居都没资格也没办法指导其他的设备该怎么转发。
所以在纯分布式的网络中,再牛逼高端的设备也做不到教育和控制其他设备的转发行为。教育和控制做不到,只能搞点指手画脚的小动作,比如偷偷在路由条目上做点手脚--某些路由我不告诉你,或者我只告诉你我想告诉你的路由来间接达到部分控制的目的。但是本质上还是各个设备独立决策和转发。
所以网络工程师看到这里能想明白为啥干大型网络项目累成狗了吗? 项目中真要是有100台网络设备,那对不起,这100台设备你挨个一个都不能少,一个一个上配置,一个一个跑路由协议,一个一个建立自己独立的路由转发表项。为啥非要这么干? 本质原因就是IP网络本身就是一套分布式的系统,要的就是各个节点独立决策和自主转发。
我们在生活中假如要评判一个东西是否好用,重要标准就是能否能做到一键啥啥啥。而一个体量比较大的东西想要做到一键啥啥啥,本质上就是通过核心下发指令,其他边缘和末节按照指令统一行动就完了。而如果系统中的每个节点都是自主的,都各行其是,那么系统越大,协调各个节点统一行动的难度和成本就会成指数级增加。
恰恰IP网络中每个节点都有自己独立的决策和行动能力,没有一个公认的核心,所以分布式IP网络在一个普通用户的角度看来,就是一个难用且“反人性”的“产品”
说到这里,得简单交代一下IP网络为什么要搞成一个我们现在看来这么“反人性”的东西。
IP技术是美国国防部在上世纪70年代搞出来的技术,本来就是美国人使用的一套军事局域网,设计之处的要义就是要成为一个百足蜈蚣一样的系统:必须要是分布式的,任何节点遭受攻击都要能保证其他节点可以正常运作。有一种夸张的说法是,即使某个重要节点遭受核武器打击仍然能做到整体网络的正常运行。请问在这个要求下,不搞分布式而去弄一套集中式,一旦控制中心被炸了整个网络不就全部嗝屁了? 所以IP网络从出生之日起就带着强烈的去中心化的分布式属性 。
在这种核心设计思想下,分布式网络存活率和安全性是提高了,但是现在随着IP网络技术在全世界一统天下的局面,在大型网络中,不管是维护工程师还是用户,对于网络的调整都有一种本能的抗拒。只要网络还没崩溃,对于网络问题的容忍能力也培养出了老僧禅定的定力和境界!大家心照不宣的默契是:网络建设好了以后,能不同,就千万别动!动一下需要涉及协调和调整的方面之多实在是让人痛苦万分,但有疏忽就会酿成重大事故。
了解了这个背景,我想大家就能对所谓IP网络的分布式就有了一个直观和透彻的理解了!
当然,现在也有很多设备自动化配置的技术,比如简单开局、自动配置、 SDN的网络自动化 ( 这里说的是SDN中的网络自动化 , 不是真正的纯SDN ) ,但是这些都只是在设备配置上省功夫,对IP的分布式本质没有任何的改变,换言之网络设备独立决策和自主转发的分布式行为没有任何改变!
为了更加充分理解分布式网络的行为和后续引入集中式网络产生的思想源头 ,我们把IP网络比作一个帝国,那么这个帝国其实是没有中央的,只有满地的诸侯,各地不管是决策还是执行的权力都归于诸侯。假如从帝国北部发一镖货到帝国南部需要穿过整个帝国,那不好意思,沿途的诸侯必须要一个个挨个打点好(路由控制层互通),必须让他们所有人都针对这一镖货物达成放行和转发方向的一致性(生成转发表项)。小帝国还好说,打点就打点吧,反正全国就那几个诸侯。但是如果帝国疆域无比广阔呢?比如一个全国性的运营商或是一个全球性的互联网厂商?他们如果需要调整一个业务,涉及到需要处理的设备和协议可以说想想就让人头疼。
所以看到这里,我们应该就能理解分布式网络下大型用户的痛苦了! 为啥现在集中式网络技术思想越演越烈,用一句话来说就是:天下网络苦分布式久矣!
所谓时势造英雄,绕开硬件限制用软件技术实现网络控制层集中化的SDN思想就开始出现了。SDN从出现开始就注定是一个颠覆者的角色,因为它和其他集中式网络技术的核心使命就是要在这个混乱的IP帝国中立出一个中央,将各地诸侯的控制层即决策权收归中央,只保留其执行权即依令转发的权力或者说能力。 也就是要将IP网络从去中心化的分布式改造为中心化的集中式网络,打造一个上下同欲望,如臂使指的鼎盛王朝!
至于怎么在分布式IP帝国创建中心化网络,树立中央和施策削藩,将IP控制层决策能力收归中央实现其美好愿景,咱们下回分解!
2. 微服务架构的分布式事务问题如何处理
分布式系统架构中,分布式事务问题是一个绕不过去的挑战。而微服务架构的流行,让分布式事问题日益突出!
下面我们以电商购物支付流程中,在各大参与者系统中可能会遇到分布式事务问题的场景进行详细的分析!
3. 分布式系统的分布式系统的缺点
尽管分布式系统有许多优点,但也有缺点。本节就将指出其中的一些缺点。我们前面已经提到了最棘手的问题:软件。就目前的最新技术发展水平,我们在设计、实现及使用分布式系统上都没有太多的经验。什么样的操作系统、程序设计语言和应用适合这一系统呢?用户对分布式系统中分布式处理又应该了解多少呢?系统应当做多少而用户又应当做多少呢?专家们的观点不一(这并不是因为专家们与众不同,而是因为对于分布式系统他们也很少涉及)。随着更多的研究的进行,这些问题将会逐渐减少。但是我们不应该低估这个问题。
第二个潜在的问题是通信网络。由于它会损失信息,所以就需要专门的软件进行恢复。同时,网络还会产生过载。当网络负载趋于饱和时,必须对它进行改造替换或加入另外一个网络扩容。在这两种情况下,一个或多个建筑中的某些部分必须花费很高的费用进行重新布线,或者更换网络接口板(例如用光纤)。一旦系统依赖于网络,那么网络的信息丢失或饱和将会抵消我们通过建立分布式系统所获得的大部分优势。
最后,上面我们作为优点来描述的数据易于共享性也是具有两面性的。如果人们能够很方便地存取整个系统中的数据,那么他们同样也能很方便地存取与他们无关的数据。换句话说,我们经常要考虑系统的安全性问题。通常,对必须绝对保密的数据,使用一个专用的、不与其它任何机器相连的孤立的个人计算机进行存储的方法更可取。而且这个计算机被保存在一个上锁的十分安全的房间中,与这台计算相配套的所有软盘都存放在这个房间中的一个保险箱中。分布式系统的缺点如表1-3所示。 项目 描述 软件 分布式系统开发的软件还很少 网络 网络可能饱和和引起其它的问题 安全 容易造成对保密数据的访问 表 1-3. 分布式系统的缺点
尽管存在这些潜在的问题,许多人还是认为分布式系统的优点多于缺点,并且普遍认为分布式系统在未来几年中会越来越重要。实际上,在几年之内许多机构会将他们的大多数计算机连接到大型分布式系统中,为用户提供更好、更廉价和更方便的服务。而在十年之后,中型或大型商业或其它机构中可能将不再存在一台孤立的计算机了。