写点什么

Serverless 加 CRDT 是 Edge 的未来

  • 2017-11-29
  • 本文字数:3581 字

    阅读完需:约 12 分钟

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

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

2017-11-29 16:362881
用户头像

发布了 322 篇内容, 共 144.2 次阅读, 收获喜欢 148 次。

关注

评论

发布
暂无评论
发现更多内容

MVVM响应式

flow

8月月更

50W+小程序开发者背后的数据库降本增效实践

石云升

数据库 severless 全球架构师峰会 ArchSummit 8月月更

vue高频面试题(附答案)

helloworld1024fd

Vue

人像分割技术解析与应用

ZEGO即构

动态模型中嵌入静态模型实践

FunTester

如何使用 Mashup 技术在 SAP Cloud for Customer 页面嵌入自定义 UI

汪子熙

html5 前端开发 SAP C4C 8月月更

PanGu-Coder:函数级的代码生成模型

华为云开发者联盟

人工智能

游戏元宇宙发展趋势展望分析

易观分析

游戏 分析 元宇宙

武汉参加web前端培训哪家好

小谷哥

打破文件锁限制,以存储力量助力企业增长新动力

焱融科技

存储 文件存储 分布式文件存储 文件锁

兆骑科创平台招才引智,海内外高层次人才引进平台

兆骑科创凤阁

表达式引擎在转转平台的实践

转转技术团队

表达式 引擎

大众碰到点评的一个字体反爬,落地技术也是绝了

梦想橡皮擦

Python 爬虫 8月月更

用户体验 | 如何度量用户体验 ?

易观分析

用户体验

七日算法先导(一)—— 数组

工程师日月

8月月更

10年稳定性保障经验总结,故障复盘要回答哪三大关键问题?|奈雪的茶李道兵

TakinTalks稳定性社区

为了带你搞懂RPC,我们手写了一个RPC框架

PPPHUANG

Java 架构 dubbo RPC RPC 协议实现原理

首届中国计算机学会芯片大会召开,宋继强分享英特尔最新底层技术创新进展

科技之家

易周金融分析 | 银行ATM机智能化改造提速;互联网贷款新规带来挑战

易观分析

金融 分析

WPF如何自定义隐藏下拉框选项

吴脑的键客

WPF

大数据技术培训班怎么选择?

小谷哥

开源一夏|基于ArkUI eTS开发的坚果食谱(NutRecipes)

坚果

开源 HarmonyOS OpenHarmony OpenHarmony应用开发 8月月更

JAVA编程规范之安全规约

源字节1号

后端开发 网站开发

未来源码 | 终于有人把大数据、机器学习、数据科学讲明白了

MobTech袤博科技

数据挖掘 机器学习 大数据

️前端研发的新基础设施 - Rust ️🦀️

阿里技术

​Rust

Web前端培训班学前端技术靠谱吗

小谷哥

2.8K 120Hz触控双屏加持 灵耀X 双屏Pro 2022让办公无惧想象

科技热闻

语音聊天app源码——语音聊天派对

开源直播系统源码

软件开发 直播系统源码 开源源码 语音聊天源码 一对一语音聊天系统

OpenHarmony高校技术俱乐部计划发布

科技汇

英特尔全方位打造算力基础,助推“算”赋百业

科技之家

大数据培训机构有哪些?

小谷哥

Serverless加CRDT是Edge的未来_服务革新_薛命灯_InfoQ精选文章