类似 GitHub Pages 那样,把代码 push 到一个 Git 仓库之后,就可以部署到世界各地距离用户最近的数据中心。然后根据程序实际消耗的运算时间和网络流量计费,不需要选择可用区( Availability Zone ),不需要选择机器配置。
将来会有这样的一种服务么?或者现在已经有了?
相比 GAE 及 Heroku 的不同之处是:
1
finian 2018-07-10 18:35:58 +08:00 1
Serverless infrastructure 这个比较接近
《世界是 container 的,也是 microservice 的,但最终还是 serverless 的》 http://liubin.org/blog/2018/05/04/the-world-is-full-managed/ |
3
est 2018-07-10 18:49:31 +08:00 1
serverless 其实就是 GAE。其实我觉得 cloudflare 的 worker 符合 L 大想要的「离用户最近」的理念。
https://blog.cloudflare.com/serverless-performance-comparison-workers-lambda/ |
5
monsterxx03 2018-07-10 18:56:17 +08:00
代码离用户近和前面套 CDN 好像没区别吧, 数据要落地的话, db 跨 region 实时同步总不是那么好搞的.
|
6
LukeChien 2018-07-10 19:01:09 +08:00 via Android
各个数据中心距主数据中心必须有高速稳定低延时的专线才能实现
|
7
Livid MOD OP @monsterxx03 数据库及大文件存储要做到离用户最近这个是否可能,或者是否有必要,我也没有想明白。
目前觉得数据库和存储可能还是需要选 AZ,用户用 OAuth 或者其他方式在边缘完成认证之后,通过某个算法,为其数据存储分配一个距离他相对较近的 AZ。 |
8
mcfog 2018-07-10 19:03:33 +08:00
嗯嗯,算力分布好做,数据分布难做,事务分布 (还要自动地,业务无关地) 那是地狱难度了
|
9
hu6360567 2018-07-10 19:05:20 +08:00 via Android
容器对应的是业务,是能够方便交付,方便编排
|
10
whileFalse 2018-07-10 19:09:21 +08:00 1
代码部署在哪里都不重要,关键是 db。
用 AWS 的 CloudFormation StackSets 可以很容易地将代码一键部署到全球多个 Region,然后通过 Route53 分发用户。 但是,用户数据怎么办呢? 如果不同用户的数据相对隔离,可以将用户在注册时自动分配至临近的 Region ;如果用户迁移了地理位置,再通过自动或者用户手动指定的方式迁移数据。 或者使用 AWS DynamoDB GlobalTables,可以在不同的 Region 中自动同步。 说到底,这样的解决方案对业务形态是有限制的。如果 @Livid 感兴趣,可以联系我讨论。 |
11
monsterxx03 2018-07-10 19:13:22 +08:00 via iPhone 1
@Livid 数据分区存储,具体怎么存储,感觉还是个业务导向的事,google spanner 号称 global distributed, 而且不是最终一致性,没用过,不清楚跨 region 对业务有什么限制,直觉上没那么完美
|
12
whileFalse 2018-07-10 19:36:48 +08:00
@est #3 cloudflare worker 是基于 v8 做的隔离而不是 lambda 的容器,酷。
|
13
rio 2018-07-10 19:43:05 +08:00 1
就是 Edge Computing。目前还没有这么完美的产品,但有些部分可以体验了,比如 Cloudflare Workers 和 AWS Lambda 都提供了 serverless 的体验,不用关心服务器的配置、位置等细节,计费也比较简单;又比如 Hyper.sh 提供了直接从 Dockerfile 部署到运行环境的体验,加个钩子到 GitHub 也不难实现 push 后直接部署。
|
14
JohnSmith 2018-07-10 20:35:31 +08:00 via Android
是不是说的边缘计算
|
15
Cbdy 2018-07-10 20:38:36 +08:00 via Android
这不是函数计算吗?
|
16
Tink 2018-07-10 20:53:14 +08:00 via iPhone
雾计算和这个类似
|
17
Kilerd 2018-07-10 21:43:15 +08:00
如果抛开 docker 的话。serverless 最符合你的这个情况了。
|
18
wtbhk 2018-07-11 00:01:49 +08:00
主要还是 DB 放在哪,如果要追求分布式就一定要牺牲一致性
|
19
scnace 2018-07-11 00:40:31 +08:00 via Android
开个脑洞 如果数据分 Region 要考虑到分布式一致性很难(甚至没法做到完全实时)的话 那么是不是可以考虑有那么一种数据压缩技术 可以把数据碎片化之后存到每台接入 Distribute Network 的设备上呢(当然是考虑了 Region 的概念的) 那么是不是可以把每个地方(物理)都当成一个 db 集群了啊 然后随着用户的移动(物理) 再把用户的数据进行一次重新分发(感觉这个剧本哪里看过来着)
|
20
est 2018-07-11 10:15:25 +08:00 via Android
|
21
noonempz 2018-07-11 12:11:16 +08:00
怎样衡量距离用户最近?哪个用户,哪些用户。
|
22
night98 2018-07-11 14:24:12 +08:00
我的想法是未来云服务商会出现自有语言或自有 sdk,按照指定方式编程即可完成分布式事务,分布式文件,分布式事务等一系列操作,而只需要和普通单机一样编程即可,并且不再需要管理数据库等,只需要指定需要的字段,按照服务商提供的 key 就可直接连接数据库进行操作。
部署时只需要打包发送并点击部署按钮即可,会自动进行部署,也可以选择高级部署方案,选择部署的国家或地区机房,无需选择资源,包括 cdn 等方案均自动完成,只需要按月进行后付费即可。 |
23
Sliverburger 2018-07-13 05:13:52 +08:00
楼上的都说 serverless,这东西没办法满足“部署到世界各地距离用户最近的数据中心”的要求把?
当然通过 Cloudformation 启动多个 lambda 倒是可以考虑 |