BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Serverless加CRDT是Edge的未来

| 作者 薛命灯 关注 19 他的粉丝 发布于 2017年11月30日. 估计阅读时间: 12 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

Kuhiro的CTO Russell Sullivan发文介绍了他们的NearCloud产品,并指出Serverless加CRDT是Edge未来的发展方向。

作为新兴的IaaS解决方案,Serverless已然成为野心勃勃的互联网计算平台。从亚马逊2014年推出Lambda开始,Serverless已经扩展到了CDN Edge,并向移动、物联网和存储领域进军。CDN Edge的Serverless(SAE)是一个全新的领域,它预示着业务逻辑将从单一的云区域向互联网边缘转移,未来的服务器有可能直接运行在蜂窝基站里。随着5G技术的发展与普及,SAE到服务之间的延迟降到了几毫秒,互联网将转变成一个全局性的实时计算平台。

在经历了创业并出售了一个NoSQL公司之后,Russell意识到,计算无非局限于两个方面:数据中心或设备,这两者之间存在着一个巨大的待开发处女地。于是,他召集了一班聪明人成立了Kuhiro,一个专注于将云推向互联网边缘的初创公司,逐步创建一个靠近用户的去中心化云——NearCloud。

NearCloud的基础是计算和数据,于是他们构建了一个有状态的SAE系统。他们在CDN Edge运行客户的业务逻辑,让这些函数实时地读取和写入客户数据。他们在CRDT数据层投入了大量精力,实现低延迟的动态Web处理。客户借助Kuhiro将对延迟敏感的应用从云端迁移到边缘,变成全局性的实时应用。

Edge Serverless

从物理层面来看,SAE有点类似CDN:很多迷你数据中心分散在国家(或者全球)的各个角落,为近距离的用户提供低延迟的服务。SAE用户将URL域名改成SAE供应商的域名,他们的请求就会被发送给就近的SAE PoP(Points-of-Presence)。

在美国,SAE系统可以部署在30万个基站上,99%的人口距离他们附近的基站只有几公里。



去中心化的好处

一般来说,去中心化在带宽、延迟和健壮性方面都会带来好处。为了说明这点,接下来以亚马逊的仓储中心为例。亚马逊的仓储中心为Prime会员提供两天到货的物流服务,货品直接从各个分散的货仓发出。

去中心化仓储中心的好处在于:

  1. 延迟:Prime会员要求货物必须在两天内送达,低延迟是Prime的核心竞争力。
  2. 带宽:仓储中心越多,每个仓储中心需要处理的货品就越少,Prime会员规模就可以更好地伸缩。
  3. 健壮性:如果硅谷的仓储中心没有可用的送货车,或者遭遇了地震,加尼福尼亚的仓储中心可以接管订单。

SAE系统与亚马逊的仓储中心类似:

  1. 延迟:Edge PoP位于用户的就近位置或云区域,延迟被降到最低。
  2. 带宽:每个PoP只负责处理一部分用户,不需要将请求路由到中心系统:负载是分布式的,可以更好地伸缩。
  3. 健壮性:如果PoP出现饱和或者遭遇地震,负载立即被重定向到就近的PoP。

几乎所有的互联网应用都会从去中心化中受益

去中心化的三大好处(延迟、带宽、健壮性)给整个互联网带来了不可估量的价值,Web、移动、游戏、广告、虚拟现实、地图,等等。

降低延迟可以改进用户体验,是竞争力的源泉。而对于公司来说,带宽和健壮性更是无价之宝,他们不再担心运维和动态伸缩问题,在流量高峰来临时也不怕。几乎所有的互联网应用都可以从去中心化的云中获得好处。

Serverless为Edge带来多租户和伸缩性

接下来从物理层面来比较一下Edge和云的区别。

单个云可以包含超过10万个服务器,而Edge PoP则要小得多(通常在10到100台之间),PoP提供的硬件资源比云要少很多。

所以,想象一下,10台服务器如何能够为1万个用户提供IaaS服务?不用说每个用户是否能够获得一台虚拟机,单是一个私有的容器都不行。所以必须缩小计算单元,也就是使用函数——FaaS(也就是Serverless),那么这样可以把1万个用户函数部署在10台服务器上吗?这个是可以做到的,甚至可以部署更多的函数。

Serverless的低资源消耗特点与Edge PoP有限的资源配置相得益彰。

SAE的状态:无状态持续运行

那么SAE现在已经发展到什么程度了?作为一个新兴领域(始于2016年),提供SAE服务的公司还很少,但一直在增长。目前最主要的两个产品分别是Cloudflare的Workers和亚马逊的Lambda@Edge。这两个产品都很安全,并以无服务器的形式提供最小化的IaaS Edge服务,但在灵活性和性能方面则有所区别。

对无状态计算支持不足

可惜,不管是Cloudflare Workers还是Lambda@Edge都没有提供动态数据选项,它们只提供计算功能。缺乏动态数据能力(也就是无状态能力)限制了一些SAE功能,比如基于客户端状态(如URL-Parameters、Cookie、User-agent)或orign状态(如Etag、Cache-Control)重写请求和响应消息。

无状态计算更像是网络路由,而不是一般的编程模型:智能负载均衡和重写请求或响应消息。可以想象一下,如果亚马逊把所有的商品存放在一个中心仓库里,而且仓储中心只有接收订单和向外发送包裹的能力,那么Prime的体验会很糟糕,一个订单可能需要等上几天甚至几周。

Edge数据的小秘密:数据冲突

SAE之所以是无状态的,是因为往大量PoP增加数据层会比较复杂。理想情况下,可以为每个PoP增加一个数据库,每个函数直接操作这个本地数据库,然后把数据复制到其他PoP数据库里。但这里有一个问题:在将一个中心数据库拆分成多个数据库之后,在这些数据库之间复制数据会导致冲突,而且节点之间的物理距离越长,出现数据冲突的几率就越高。

对数据进行去中心化有两种方式:一种是基于共识(consensus),一种是基于CRDT(Conflict-free Replicated Data Type)。这两种方式都有各自的优缺点,稍后会详细解释。

Edge复制

接下来深入了解一下如何往SAE添加数据层。

如果在SAE中修改了单个PoP的数据,那么需要把数据复制到哪些地方?是复制到所有的PoP上还是部分PoP上,又或者不复制?这个要取决于实际情况,所以说以上三种情况都是有可能的。

SAE复制可以被想象成一个图谱,左边是为single-user复制,右边是all-users复制。



single-user复制的流程很简单,只需要将单个PoP的数据备份起来就可以了,而all-users复制则需要进行点对点的数据广播(加上备份)。如果发生故障,single-user复制会变得复杂一些。用户需要切换到另一个PoP上,所以需要从多个PoP并行复制到其他多个PoP上。

在最糟糕的情况下,如果数据修改频繁,那么all-users复制就会变成自我DDoS攻击。为了避免出现这种情况,可以通过增加延迟来换取性能,并采用批次的方式,这样可以获得更好的伸缩性。

Edge的数据复制问题非常独特,与已有的数据存储复制流程不太一样,所以需要新的技术来支持它。

基于CRDT的解决方案

所幸,Edge的状态复杂性可以通过一些数据结构和相关算法(Conflict-free Replicated Data Type,CRDT)来解决。CRDT算法允许参与者自主修改数据,并以零共识的方式自动解决数据冲突。CRDT的这些特点(自主性、零共识、自动解决冲突)是SAE平台实现低延迟的基础要素。

自主性意味着PoP可以在本地处理请求并快速做出响应,不需要与千里之外的其他PoP达成共识。PoP的自主性和并行修改数据会导致数据冲突,而CRDT可以通过多种数据结构自动解决数据冲突,并提供最终强一致性

尽管CRDT也存在一些不足,但比起基于共识的解决方案要好得多。

基于共识的解决方案太慢了

以谷歌的Spanner为例,Spanner是目前最为先进的基于共识的数据层解决方案,Spanner的论文中提到:

客户端和区域需要处于网络延迟低于1毫秒的数据中心里。

Spanner并不适合用于长距离节点,也无法实现低延迟的并行提交。Spanner使用的是两阶段提交,每个事务需要穿行网络两次。美国东海岸到美国西海岸一个来回需要100毫秒,那么两阶段提交需要200毫秒,这对于大部分应用程序来说都太慢了。

Kuhiro比Lambda快上5到10倍

经过实测,对于美国西海岸的用户,Kuhiro比Lambda快上5到10倍,东海岸用户为2到4倍,而国际用户则为50倍。降低延迟对增加营收有直接的影响,Kuhiro正是这样的一种工具,帮助客户提升应用程序速度,改进用户体验,最大化利润。

Kuhiro不可思议的健壮性

这里有一个视频记录下了Kuhiro数据层不可思议的健壮性。在12分钟的时间里,随机停掉不同数据中心里的节点,甚至关闭整个数据中心,然后再重新启动,简直就是乱来一通。而视频里显示,基于CRDT的系统仍然健壮如牛。

数据层的健壮性不仅在发生宕机或发生数据中心故障时能够带来好处,它还能降低DDoS攻击所带来的影响。

Edge Serverless进行时

NearCloud看似遥不可及,但其实它已经带着有状态Serverless来到了Edge系统里。SAE最主要的优势在于它全局性的低延迟,另外还具有高度的健壮性(包括降低DDoS攻击的影响面),当然也具备Serverless所有的优点。Kuhiro的有状态Serverless为用户提供了创建去中心化应用的能力,也可以对已有的Serverless应用去中心化,为客户提供超低延迟的服务。

原文地址:http://highscalability.com/blog/2017/11/6/birth-of-the-nearcloud-serverless-crdts-edge-is-the-new-next.html

感谢雨多田光对本文的审校。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

very good solution. by fangquan zhang

good idea.

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT