写点什么

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:362804
用户头像

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

关注

评论

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

拿下中国信通院多项测评的华为云数据库,究竟有多牛?

与时俱进的时代

EfficientFormer 提升速度的同时保持性能,使 ViT 在移动端成为可能

Zilliz

今年大促季,阿里云容器服务有哪些技术和应用新突破?

阿里巴巴中间件

阿里云 容器 云原生

使用 WebP 图像加速WEB加载

devpoint

Web 前端开发 网站优化 WebP

华为云数字化解决方案激活企业市场空间,为企业稳健发展再加码!

IT科技苏辞

闲话 dubbogo 社区

阿里巴巴中间件

阿里云 云原生 dubbo

ScrollView(滚动条)

芯动大师

android ScrollView(滚动条) 滚动效果

华为云大数据赋能北港集团发展创新,数字化转型成效显著!

IT科技苏辞

企业如何轻松上云?华为云弹性云服务器ECS给出答案

IT科技苏辞

华为云ECS,专为您打造安全、灵活、高效的应用环境

与时俱进的时代

软件测试/测试开发 | Jenkins 多任务关联

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

华为云大数据解决方案赋能金融行业发展,打造5G智慧银行营业厅

IT科技苏辞

嗨 Jina,帮我画一幅高山流水图

Jina AI

图像生成 Diffusion

扩展接口SmartInstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

接口

dcm4che 依赖下载异常

JefferLiu

一文读懂Go Http Server原理

捉虫大师

Go HTTP 1月月更

万字技术干货 |YMatrix 高性能时序数据库引擎的技术实践

YMatrix 超融合数据库

性能优化 Clickhouse 时序数据 超融合数据库 YMatrix

华为云CDN引领网站性能优化,助力企业更好发展

科技怪授

CDN

本地数据怎么备份上云?华为云对象存储服务OBS帮你实现

科技说

还在高投入自建物联网平台?教你如何节省三分之二成本——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

深入思考 Schema 管理的几个基本问题

观远数据

华为云数据库GaussDB(for Redis),如何为人们日常生活保驾护航

科技怪授

数据库

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

洛神灬殇

分布式事务 seata Alibaba SpringCloud Alibaba Seata框架

教你3步完成阿里云物联网平台公共实例到企业实例的迁移——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

Frp流量隐匿对抗排查

领创集团Advance Intelligence Group

内网渗透 Frp 流量编排

EMQX在Kubernetes中如何进行优雅升级

EMQ映云科技

运维 物联网 IoT 节点 企业号 1 月 PK 榜

华为云云原生数据库,激发数据活力

与时俱进的时代

华为云数据库,安全、专业,值得信赖

与时俱进的时代

雄关漫道真如铁,而今迈步从头越 | 挥别2022,再战2023!

BoCloud博云

博云

企业优秀网络环境,为何离不开华为云CDN全站加速服务?

科技怪授

CDN

Vue基础知识和案例展示

Geek_7ubdnf

Vue

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