“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

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

关注

评论

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

面试的季节到了,老哥确定不来复习下数据结构吗

Silently9527

面试 数据结构与算法

日记 2021年2月18日(周四)

Changing Lin

2月春节不断更

【STM32】EXTI---外部中断/事件控制器

AXYZdong

硬件 stm32 2月春节不断更

心理声学基础

行者AI

心理 音乐

Elasticsearch mapping 复杂数据类型

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

什么是阻抗?

不脱发的程序猿

阻抗 电路设计 电子元器件

华为云FusionInsight MRS在金融行业存算分离的实践

华为云开发者联盟

大数据 金融 华为云 存算分离 FusionInsight MRS

厉害了!这群95后正在用三维成像技术让科幻变成现实

华为云开发者联盟

视频 华为云 三维 裸眼 光学

2021新年最新分享:阿里Java岗5轮技术面经整理

比伯

Java 编程 架构 面试 程序人生

话题讨论 | 如何使用“网站SEO”,让网站排在最前面?

我是哪吒

大前端 后端 话题讨论 SEO 2月春节不断更

用例文档

三生赤水

ElasticSearch.04 - 基础操作

insight

elasticsearch 2月春节不断更

4.从legacy或concurrent开始(从入口开始,然后让我们奔向未来)

全栈潇晨

React React Hooks react源码

【LeetCode】重塑矩阵Java题解

Albert

算法 LeetCode 2月春节不断更

门诊数字化:患者信息识别方式

boshi

医疗 数字化基础 七日更

第 4 周作业

老元宵

如何 1 天快速集成自己的“Clubhouse”?

融云 RongCloud

音视频 clubhouse 语音社交 融云

区块链挖矿系统APP开发|区块链挖矿软件开发(现成)

v16629866266

阿里云大佬爆裂推荐“redis全新手册”,内容即精华

比伯

Java redis 程序员 架构 程序人生

【函数计算实践】nodejs初探示例——本地mac环境

程序员架构进阶

架构 nodejs 函数计算 七日更 2月春节不断更

算法从有序数组中移除重复的数据,AI学习资源2020 John 易筋 ARTS 打卡 Week 38

John(易筋)

ARTS 打卡计划 ai youbute学习资源

哲少荐书:鞋狗

Jackey

书籍推荐

技术实践 | 新思路!解决线上系统异常问题

百度开发者中心

新闻|2021 FOSDEM为期两天的活动成功举办,一大波学习资源来袭!

PostgreSQLChina

数据库 postgresql 软件 开源社区

LeetCode题解:1091. 二进制矩阵中的最短路径,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

一维数组的动态和

小马哥

算法

字幕组时代落幕,翻译的未来可能是?

字节跳动技术团队

14. Python 与数据库那点事儿,滚雪球学 Python

梦想橡皮擦

python 爬虫 2月春节不断更

Java中多线程启动,为什么调用的是start方法,而不是run方法?

Java 编程 架构

山东党建系统!组织部智慧管理平台搭建

源中瑞-龙先生

智慧党建 组织部 山东

端口隔离和VLAN的区别

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