在大数据和人工智能的带动下,越来越多的大型公司开始争夺云服务市场这块香饽饽。
AWS、阿里云、Azure,这些耳熟能详的云服务商依然牢牢占据着全球70%以上的市场,但是随着去年“区块链”这个领域的兴起,未来云服务市场可能发生改变。
目前我们所知道的云服务商、云存储机构都属于中心化存储,而去中心化存储反而拥有更高速,更廉价,更隐私的特点。此前去中心化存储一直无法解决文件上传、下载的信任问题,而“区块链”的出现,正好弥补了去中心化存储的信任问题。
今天,就从传输速度方面来讲讲,去中心化存储,为何能颠覆阿里云、AWS。
去中心化存储拥有比传统云存储数据传输更快的速度,原因是:
首先, 我要讲解的是互联网底层架构。
影响网络传输速度的因素:
  1. 中间经过的路由的数量,一般来说中间经过的路由数量越多,传输速度越慢
  2. 两端的带宽大小,以及剩余情况,特别是服务器端,如果服务器端带宽爆满了,速度肯定会变慢。
  3. 两端中间路由的带宽大小,瓶颈往往是中间最慢的路由,特别是在跨越运营商的时候,或者跨越国界的时候,非常容易遇到瓶颈
  4. 局部的热点事件,也很容易引起网络的拥塞,因为带宽总量不变,当别人用多了,你自然就用少了。
互联网在实际运行的过程中,就像一个城市的交通,其实非常复杂,存在着巨大的不确定性,很难预测。所以不能简单理解为地址位置距离越近,网速越快;但是有一点可以肯定,如果地理位置距离远的,网速一定不会快。下面这个图就是美国的网络运行示意图。
这是东南亚各国的带宽总览,可以看出不少国家的总接入带宽是很少的。
另外,国际流量的调查表格如下:
从表中可以看出,东南亚各国平均到每个人头的跨国带宽是非常低的,另外不少国家的跨国网络也是非常弱的。在此,我抛出一个问题,像Amazon这样的全球顶级云服务提供商, 能够保证每个地方都高速访问吗?
下面来解释这个问题。我们先看一张图,这是Amazon的云服务的全球机房部署图
可以看出,亚马逊云服务在东南亚地区只在新加坡重点部署了两个节点。 我猜测这样做的原因可能是:新加坡国内环境安全且经济实力较为强大,在这里布置节点,使得管理成本最低。
但是,从前面的报告来看,东南亚不少国家的国际互联网连接是很弱的。想象一下,一个泰国的用户,如果把文件存放在新加坡的亚马逊服务器节点上,他必须通过跨国连接才能访问,而柬埔寨整个国家的跨国互联网非常弱,可以推断,他的传输速度一定是很低的。
那么我设计的PPIO去中心化存储为什么能解决这个问题?
因为一旦PPIO项目主网启动,很快,我们的服务方将会遍布全球各地。为什么我们的服务方会遍布全球各地?大家都会有闲置的硬盘空间或者带宽,如果这些闲置空间可以出租赚钱,相信没有人会拒绝。PPIO就是将用户闲置的硬盘空间和带宽进行出租,再通过区块链技术,保证激励是公开透明的,只要用户把存储和带宽接入PPIO提供服务,就能获得激励。
当世界各地都有服务方接入PPIO之后,就相当于在世界各地部署了机房来提供存储服务,用最近的距离服务最近的人,传输速度自然就得到提高。想象一下,上网人数多的地方,同样提供服务的人也会更多,这样,人越多上网速度反而越快。

这是将来世界各地的PPIO服务方地图

我在设计PPIO的时候,引入了P2P的经典重叠网络。所谓重叠网络,简单地说就是在基本物理互联网之上,再做一层基于节点与节点之间的平等逻辑互联网。
PPIO重叠网络就是采用自组织非结构网络的方式,这个方式鼓励就近连接(网络距离)。保持就近连接,存储时会将数据优先存储在就近的租户上,分发时也会优先从距离用户近的节点传输数据,这样能充分利用本地带宽,极大提高传输速度。
当更多的节点加入PPIO网络,每个节点就更容易找到更近更快的临近节点,用于存储或者发布下载。服务器带宽不再是瓶颈,用户增长带来的是更快的传输速度和更好的用户体验。
P2P自组织网络的建立过程
PPIO网络中每个节点会随时维持自己的长连接节点。这些节点我们称为邻居。每个节点维持连接的邻居,会自动进行淘汰,从而使每个节点在长期的在线过程中,适中动态保持连接自己的相对快的邻居,就形成了自组织的P2P重叠网络:
为实现以上操作,每个节点要维持两个实时的库,一个是邻居库,一个是有效候选节点库,这两个库对于重叠网络选择节点至关重要。另外每个节点还要维护历史邻居库,该库记录了历史上成为过邻居的节点和其相关信息。
优先就近存储原则
有邻居节点后,当每个用户上传数据时,PPIO会把大部分资源副本优先放置在邻居服务方或者足够快的邻居服务方上,这样用户再获取资源的时候,就能获得就近传输了,获得非常快的传输体验。当租户节点非常多遍及全球各地的时候,每个地方的存储传输速度都能足够快。
普通的用户一般是很少变更区域的,但是也有特殊情况。我在设计PPIO的时候适应了两种特殊的情况。
1、关于跨越地域的用户
可能存在以下的情况,有用户长期来回在两个地方,这样两个地方的传输速度都需要比较快。PPIO对于这种情况要做专门的优化,由于用户在一个地方A,其邻居也是A地方的邻居,当用户去另外一个地方B的时候,其邻居换成地方B的节点。而再用户的历史邻居节点库里面,有两个地方的节点。
每在一个地方的时候,该地方邻居节点的历史权重就会被提高,另外一个地方的邻居节点的权重就会下降。如果用户长期来回于两地,这种情况会交替出现,导致其历史邻居节点权重差不多。这样用户在上传资源的时候,检索调度节点在选择副本存储租户节点的时候,两个地方的节点都会有。这样该用户不论在哪个地方都能获得较好的用户体验。
2、如果用户永久变更地域
另外,用户可能出现长期或永久变更地点的情况,PPIO给用户设计了一个重新调度操作,只要启动这个操作,就会根据最新的历史邻居节点库的权重重新调度。
不论之前副本书存储在什么租户节点上,都会重新选择租户节点存储新的副本,而新的副本里面,大部分会才采用优先就近存储原则存储数据。这样用户之前存储的数据可以和新存储的数据一样可以享受到高速传输的用户体验。
经过这些努力,我们能做到比中心化存储方案更快地传输速度。
一个问题:
下图是用户存储数据位置图,左边是AWS的S3中心化存储服务,右边是PPIO的去中化化存储网络,你认为哪种方案传输速度会更快?
 
文章作者:Wayne Wong
转载请注明出处
如果有关于区块链学习的交流,可以通过下面的方式联系我:
加我微信,注意备注: 区块链学习
wechat:omnigeeker
telegram: @omnigeeker
twitter: @omnigeeker
zhihu:@Omnigeeker

这个技术的出现,可能会颠覆阿里云、AWS!的更多相关文章

  1. 探索云网络技术前沿,Sigcomm 2019 阿里云参会分享

    Sigcomm 2019简介 一年一度的网络顶级学术峰会Sigcomm于8月20日至22日在北京举行.作为ACM Special Interest Group on Data Communicatio ...

  2. 技术杂记之:在阿里云centos7上部署JDK MYSQL TOMCAT

    今日小编闲来无事,乘着公司新项目即将上线之际,在阿里云上整了一台centos作为测试机.原本以为一个小时搞定,结果还是花了一点小小时间.不管怎么说,记录下来,给各位小白当成课后甜点吧. 价格 先上价格 ...

  3. 阿里云PolarDB及其共享存储PolarFS技术实现分析(下)

    上篇介绍了PolarDB数据库及其后端共享存储PolarFS系统的基本架构和组成模块,是最基础的部分.本篇重点分析PolarFS的数据IO流程,元数据更新流程,以及PolarDB数据库节点如何适配Po ...

  4. 2019亚太内容分发大会,阿里云获CDN领袖奖、技术突破奖

    近日,亚太CDN产业联盟主办的2019亚太内容分发大会在上海召开.本次大会以"5G分发"为主题,集结了CDN领域近千名行业领袖.专家参与.在会上,阿里云斩获“CDN领袖奖”.“技术 ...

  5. 阿里云MVP:开发者的超能力,用技术创造更好世界

    阿里云MVP:开发者的超能力,用技术创造更好世界 2019年3月,第8期阿里云MVP(最有价值专家)完成终审,截至目前,全球已有27个国家和地区.近500位云计算专家和优秀开发者成为阿里云MVP.阿里 ...

  6. [转载]点评阿里云、盛大云等国内IaaS产业

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:刘黎明      原文地址:http://www.chinacloud.org ...

  7. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  8. 阿里云产品介绍(二):云服务器ECS的孪生兄弟们

    上一篇介绍的云服务器ECS,是阿里云最基础的产品,也是每一个云计算厂商最基础的产品,俗称爆款.除了标准的云服务器,阿里云也不停的在推出面向特殊业务场地的云服务器,可以说是ECS的孪生兄弟们. 这一篇就 ...

  9. 阿里云 OCS SDK for NodeJS介绍

    阿里云 OCS SDK for NodeJS介绍 阿里云技术团队:熊亮 阿里云 SDK for NodeJS 是为 NodeJS 开发者提供使用阿里云各项服务的统一入口,由阿里云UED团队负责开发维护 ...

随机推荐

  1. 4.input()

    >>> help(input) Help on built-in function input in module builtins: input(prompt=None, /) R ...

  2. LeetCode - Subtree of Another Tree

    Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...

  3. 【shell编程】之基础知识-基本运算符

    Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...

  4. mongodb添加验证用户 删除用户

    1.创建用户 db.createUser( { user:<name_string>,                   #字符串 pwd:<password_string> ...

  5. Singer 学习十二 指南

    版本0.3.0 tap是一个应用程序,需要一个配置文件和可选的状态文件作为输入,并产生有序的流记录, 状态和模式信息作为输出. 一个记录是任何类型的JSON编码的数据.tap 状态消息用于保留一个调用 ...

  6. prime 又一个开源的基于graphql 的cms

    prime 是一个开源的基于graphql 的cms,类似的已经又好多了,strapi 就是一个(graphql 是通过插件扩展的) graphcms 是一款不错的,但是是收费的,prime 是基于t ...

  7. Compoxure 微服务组合proxy 中间件

    Compoxure 是一个不错的微服务组合中间件,使用此工具我们可以快速的进行micro frontends 应用的开发 使用此工具我们可以替换esi+ ssi 的开发模型(尽管都挺不错). 同时支持 ...

  8. 01Hadoop简介

    Hadoop思想之源:Google 面对的数据和计算难题 ——大量的网页怎么存储 ——搜索算法 带给我们的关键技术和思想(Google三篇论文) ——GFS(hdfs) ——Map-Reduce —— ...

  9. L老师 Shader编程教程 学习

    Shader "VoidGame/FixedShader" { Properties{ //颜色 _Color("Color",Color)=(1,1,1,1) ...

  10. C# 远程调用实现案例

    C#远程调用实现案例 2007年11月19日 13:45:00 阅读数:6012 C#实现远程调用主要用到“System.Runtime.Remoting”这个东西.下面从三个方面给于源码实例. ·服 ...