一直以来,只要说到运营服务器应用程序,无论是网页应用程序还是手机应用终端,我们都会认为,未来是云服务的天下。亚马逊、谷歌和微软等公司,纷纷研发新工具,试图让服务器应用程序的运营更加简单和便捷。因此,对于用户来说,AWS、GCP和Azure似乎就是最好的选择。毕竟这三大云服务工具,既方便又便宜,能够轻松实现全自动化以及有d性的扩展升级。真要说,那还有很多优点。
何故认为云时代即将终结呢?原因有以下四点:
第一,它无法满足长期的扩展升级需求。研发一款能够扩展升级和高度普及的优质网页应用程序,尤其是在云服务领域,有着相当大的难度。就算初期成功研发出了应用程序,那后期的扩展升级也需要大量人力、物力和财力。退一步说,就算你再成功,最后也会到达云技术以及网页本身的极限。计算机的计算速度和储存容量,会比网络带宽增长得还要快。虽然对大多数公司来说,现在还不用担心这个问题,但终究都要面对。现阶段,网络中的数据总量正在大幅增加。毕竟我们对分辨率的要求,已经从高清变为4K再变为8K。很快,虚拟现实数据集就会开始普及。
这之所以会成为一个问题,很大程度上是由于我们组织和安排网络的方式。需要内容和程序的客户很多,但能够提供这些内容和程序的服务器却很少。举个例子,如果有人在Slack上分享了一张猫的图片,而我身边坐着的20个人都想看,那只能各自下载这张图。也就是说,同一张图,服务器得重复发送20次。
如果现在把服务器移到云中,也就是谷歌或亚马逊数据中心的计算机上,那么这些区域附近的网络,需要较大的吞吐量,才有能力处理所有数据。同时,还需要大量硬盘驱动器来储存每个人的数据,以及大量CPU来将数据通过网络输送给每个有需要的人。但是,自从流媒体服务兴起之后,情况就有点糟糕了。
所有这些活动,都需要大量能源支持,从而使得整个系统效率低下。不仅成本高,还危害环境。
第二,它过于集中,易受攻击。集中储存数据和程序的另一大问题,就在于可用性和持久性。如果亚马逊的数据中心遭到流量攻击,受到小行星或龙卷风等自然灾害的影响,那怎么办呢?或者,不这么夸张,如果它出现了一段时间的电力中断,那又怎么办呢?数据中心机器上储存的那些数据,不仅短时间内无法使用,甚至很有可能永久丢失。
或许,有人要说,把这些数据分开储存可以解决问题。但其实,并不会。分开储存,只会意味着有更多的数据中心。没错,分开储存是能降低意外损失的风险。但是,那些真正重要的数据呢?如何做到安全储存?目前,这些数据资源,都储存在Facebook、Google Drive和iCloud这类云端中。可万一这些公司倒闭了,业务叫停了,该怎么办呢?就算他们永远不会倒闭,那储存之后使用数据也存在限制。因为你必须要借助他们的服务,才能获得这些数据。即便只是想和朋友分享,也还是要通过他们的服务。
第三,它需要我们赋予信任,但却不给我们提供任何保证。你的朋友如何相信自己收到的内容,就是你所发送的内容呢?唯一的方法,就是相信中间人。大多数情况下,这是没问题的。但是,我们使用的网站和网络,均由在国家部门注册过的法律实体负责运营。而国家部门,完全可以强迫这些法律实体做任何顺从自己意愿、符合自己利益的事情。虽然大部分情况下,都是一些帮助打击犯罪或移除非法内容的好事,但与此同时也存在滥用权力的坏事。
就在几个星期之前,西班牙政府竭尽自己所能利用手中的权力,去阻止加泰罗尼亚地区的独立公投。比如说,屏蔽一切指引民众投票的信息网站。虽然对于大多数西方人来说,言论自由或许不是最重要的问题,但保证互联网的免费和开放,还是值得提倡的。毕竟,从本质上来说,互联网就应该免费开放,就应该对用户最终看到的内容和作者最初发布的内容进行核实。
第四,它使得我们以及我们的数据成为易被欺骗的对象。互联网高度集中最大的弊端,就是个人数据信息的积聚。一方面,大型公司的确提供了人们所需要的服务;但另一方面,它们掌握着所有消费者的数据信息。这些数据信息,足以让它们推测出消费者的未来行为,比如会买些什么、会给谁投票、会不会买房,甚至想要几个孩子等等。要知道,有了这些数据信息,那些意图不轨的人用你的名字办xyk、办贷款甚至买房,都是完全有可能的。
当然,或许你认为,提供这些数据信息,不会有什么问题。毕竟,这些公司信誉足够好。你足够信任他们,从而愿意给出自己的数据信息。但其实,问题的关键并不在它们。没错,它们是可以不用担心。可万一,有图谋不轨的人呢?就在今年初,美国知名征信机构Equifax发生了非常严重的数据泄漏事件。具体说来,一共丢失了1.4亿用户的数据信息。现在,这些数据全都公之于众了。可能有人要说,这种事十年一遇。如果我们能再细心、再谨慎一点,其实是可以避免的。可现在,形势越来越明晰。像这样的数据泄漏,想要完全避免,是非常困难的事情。但如果直接放任不管,那又非常危险。所以说,唯一可行的解决办法,就是从一开始就避免集中获取用户的数据信息。
那么,接替云时代的会是什么?一个在较大程度上以客户服务器协议为支撑、以集中授权为安全保障的网络,不仅存在各种各样的缺陷,还会带来难以解决甚至无法解决的问题。因此,我们现在要寻找更加高效的解决方案。在全新模式下,其他任何人都不能储存你的个人数据,大型媒体文件分布在整个网络当中。而且,整个系统是完全点对点的,不再需要服务器。
针对这一块,我看过不少关于新兴技术的文章资料。因此,我深信,点对点,即对等,是未来的必然发展趋势。点对点网络技术之所以存在,就是为了利用各种协议和策略,替代现有的那些网络构成要素,解决上文列出的大多数问题。他们的目标,就是实现高度分布式的数据储存。每位身处该网络、切实参与进来的客户,都将以备份形式储存其中一些数据。
如果你之前听说过比特流(即BitTorrent,一种内容分发协议),那下面要说的内容应该不会陌生。在这种协议中,共享大型数据文件的网络用户,会分为较为小型的区块(每一块都有专属ID),不需要任何形式的集中授权。下载一份文件,就只需要一个“神奇”的数字。接着,用户就会找到拥有相同文件的人并且把它们下载下来,直到拿到文件中的所有内容。
其中,最有意思的地方,就是如何找到拥有相同文件的人。比特流,使用的是一种叫做Kademlia的协议。在该协议下,网络中的每个点都拥有专属ID号码,与专属区块ID长度相同。这个ID能够在某一节点上,以最接近区块ID的特定ID储存区块内的数据信息。对于随机的区块ID和网络端点ID,整个网络中的储存分布都应该是一致的。这些区块都是可以进行内容处理的,因此其中的内容验证起来,也就比较容易。
另外,利用指纹处理内容,还有一个有意思的地方,就是将其中一个区块的ID嵌入另一个内容区块,以一种无法篡改的方式将两大区块联系起来。如果其中一块的内容发生改变,那么它的ID就会相应改变,进而二者之间的联系也就随之破裂。一旦内在联系发生改变,那么另一区块的ID同样也会发生改变。
这种ID嵌入机制,有助于生成类似的区块链(就像为比特币和其他虚拟货币提供支持的区块链一样),甚至还能生成有向无环图(即Directed Acyclic Graph,以下简称DAG)这类更加复杂的结构。这种图形连接以发明者拉夫尔·默克尔命名,因此称为默克尔DAG。其中一个最为典型的例子,就是git本地仓库。它借助巨型默克尔DAG,将历史数据、所有条目和文件,以区块形式储存起来。
而这就又引出了一个有意思的话题,即基于内容处理的分布式数据储存是不可变的。也就是说,储存在这些区块中的内容是不会改变的。相反,修改版本的内容是紧邻现有版本储存的。重复使用修改版本中的内容,不会导致区块发生改变,因为它们的ID仍然相同。这就意味着,在这样一个储存系统中,目标文件是无法复制的。回到文章最开始的例子,也就是说每张猫的图片,都是独一无二的,只会存在一次。
Kademlia这类协议,加上默克尔区块链和默克尔DAG,能够给我们提供多种工具,去形成完备的文件等级层次和修改时间轴,在点对点网络中进行大规模分享。现阶段,已经存在使用这些技术的协议,能够根据我们的需求构建分布式储存系统。其中,发展比较好的要数IPFS。
名字和共享事物存在的问题
那么,说到这里,我们已经可以利用这些技术来初步解决上文列出的一些问题。整个过程差不多解决了可用性、容量、持久性和内容验证问题。但与此同时,它还需要解决带宽问题。由于各个点之间可以相互发送数据,因此就不存在大型热点或瓶颈。
未来,我们需要能够扩展升级的计算资源,当然这并不是很难。当下,每个人的笔记本电脑和手提电话,都有着五花八门的功能,远超过大多数应用程序所需要的功能。比如说,复杂的机器学习计算。因此,从横向角度来看,计算确实是能够扩展升级的。只要我们确保所有设备都满足用户的必要需求,那就不应该有大问题。
也就是说,在这种情况下,我想看的那张猫的图片,是来自坐在身边的同事,而非Slack服务器。当然,如果现在我想要主动分享一张猫的图片,那首先要做的就是更新特定渠道。没错,这一步听上去是很简单。但其实,它是最有难度的一个环节。
最为困难的环节:渠道更新某一事物会随时间变化,只是想让人们有一个秩序和稳定的概念。至于这个事物,我们可以将其看作是一个身份和一个名字,能够随着时间推移表现出不同价值。但这些价值,都是静态且不可变的。这是一种更加自然的方式,去规范计算机中的信息,因而有着更加自然的结果。如果我告诉了你一些事情,那既不能改变已经告诉你的这个事实,也不能强迫你故意忘记我所说的话。Slack这个渠道,就代表着一个身份。它随着时间推移表现出来的不同价值,就是逐渐增加的信息。
但真正的问题就在于,在这个渠道中,我们并不是孤立的。想要分享信息、改变渠道的人,实在是太多了。再者有时候,这两种情况会同时发生。所以,必须要有人站出来决定最终结果。
在较为集中系统中,会有单一机构来决定这些更新过程,将这些事件序列化。但在分布式系统中,每个人都是平等的。因此,就需要形成一种机制,确保整个网络就“世界历史”问题达成一致。
现如今,我们使用的所有应用程序,均由分布式网络提供支持。而针对这样一个真正分布式的网络,最为困难的问题就是达成一致。这不仅影响着并行更新,同时还影响着其他需要出现的更新。对于数据库来说,这个问题尤为困难。与此同时,还会对DNS这类其他重要服务产生影响。以分散方式为特定区块ID或ID序列注册人名,就意味着参与该过程的每个人都需要针对现有名称及其意义达成一致。否则,就会出现这样一种情况,即两位不同用户看到命名相同的两份不同文件。基于内容进行处理,能够为机器解决这个问题,但无法为真人解决这个问题。
解决分布式网络的共识问题,有以下几种策略。第一种,就是组建一支规模较小的经理团队,并且进一步选出“团队领导者”负责决策。过程中发生的所有变化,都要经过经理。很显然,这是一种集中体系。
第二种,就是像比特币区块链那样基于工作量证明的体系。该体系通过各端点共同解决难题,编写更新方案,在共识问题上有一定保证。其中的难题虽然解决起来比较困难,但检查起来却比较容易。如果出现分歧的话,还可以借助一些额外的规则来解决。不过,也有其他几种分布式区块链,使用的是基于权益证明的共识体系。这一体系能够减少解决某一难题所需要的投入。
第三种,与无冲突复制数据类型有关。不过,在这类型的某些案例中,共识问题根本就不会产生什么影响。如果所有的更新都只是“增加一个”,那只要我们保证每次更新都只使用一次,秩序就不重要,因为结果都是一样的。
总之,到目前为止,这个问题没有明确答案。经过大家的努力,已经出现了不少有趣搞笑的解决方案。你只需要根据自己的具体情况,选择一种相对较为平衡的方案就行。
网络环境中公开文件的隐私问题很明显,在上文列出的所有问题中,亟需解决的就是隐私问题。既然我们需要在这样一种点对点分布式网络中储存内容,那怎么可能不公开这些内容呢?如果都能够隐藏起来的话,那么内容处理储存固然是一个优质解决方案。毕竟你想要找到某些内容,是需要内容“指纹”的。因此,我们需要注意三个不同层次的隐私问题:公开、隐藏和私人。至于第三个,也就是私人隐私,合适的解决方法应该就是加密。
虽然乍一听,依靠加密来保证内容的隐私安全,确实有点冒险。但事实上,它并没有现在这么糟糕。通常,各家公司和各国政府都以不与公众共享的方式,来储存一些较为敏感的数据,通过加密等方式来保护这些数据。能够看到或使用这些数据的人,就只有公司和政府专门雇用的保密人员。而一旦你能接触到储存这些数据的系统,那往往意味着你可以看到全部的私密数据。
但如果我们以一种公开的方式储存私密数据,那就不得不采取保护措施,防止其他任何人看到或使用这些数据。说白了,这与开源一些有关安全的应用程序,是一个道理。
在这个过程中,如果你授予某人获取数据的权利,那他就能永久拥有修改之后的私密数据信息。因而,你就需要不断修改加密密钥。可现如今的糟糕状况是,只要某人能够获取这些加密数据信息,那他就会私下复制一份。
云时代终结,难道雾时代要来临?尽管需要解决的难题很多,但云时代的终结还是令人兴奋。首先,从技术层面上来看,我们应该能够优化点对点网络技术。基于内容处理的数据储存,能够针对内容本身提供加密验证,不需要获得可靠授权。即便是在发展中国家,也能看到较大进步,他们同样会逐渐摒弃数据中心。
在某种程度上,数据中心甚至会彻底成为过去式。现阶段,电子消费设备的功能越来越强大。计算功能和储存功能,几乎是随处可见。
对于运营网页应用程序的公司来说,这种变化应该能够公司帮助降低成本,减少研发优质数字产品遇到的难题,把关注重点从降低停工风险转移到增加客户价值上去。我们还是需要云端中的服务器,但它们只是若干相似端点中的一部分。
其次,给公司和客户带来的另一大好处,就是客户数据的处理问题。既然不需要集中储存大量信息,那也就不会出现大量数据丢失的情况。一直以来,软件工程专家都认为,客户向公司程序发送数据这样一种互联网设计,是存在较大缺陷的。与之相反,公司应该向客户发送程序,让他们利用程序来处理自己的私人数据,避免出现直接分享数据信息的情况。虽然这种模式看上去更加安全,但却无法阻止公司收集自己需要的客户数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)