我想为AWS
设置最正确和最低的延迟基础设施。
我想在Javascript
上为静态CloudFront
文件提供服务,最重要的是--对动态服务器的调用,该调用将返回对Javascript
函数的调用,该调用之前由CloudFront
所提供的文件声明--我发现这是最理想的方法。
但是,动态调用依赖于某个数据库(可能最终会是DynamoDB
),我希望将其分散并复制到多个区域,以尽可能减少延迟。
我的想法是让Lambda
函数分布在世界各地的多个区域,从对应区域的DynamoDB
副本中检索数据,以便为JS函数提供动态参数(是否有办法使Lambda
函数不依赖,并在代码中硬编码DynamoDB
端点)。
除此之外,我希望对每个请求进行广泛的监视,CloudWatch
是最好的方法,还是应该直接存储在MySQL Aurora
数据库或某种DynamoDB
中?监测的最佳选择是什么?
这是以数百万用户为基础的系统、多区域、最低可能的延迟和最可伸缩的方式的最佳基础设施吗?
发布于 2018-01-21 21:00:43
如果您需要Cloudfront中的动态请求,可以使用Lambda@edge。
如果数据访问模式不需要关系,并且设计分区键以避免写入或读取热分区,那么Dynamodb是一个很好的选择。
Dynamodb支持多区域主服务器来控制复制。
Lambda是一种方便的工具,但是当快速扩展时,大约10%的请求就会出现冷启动,因此您的第90百分位延迟将增加10倍。您可能会考虑使用Fargate来运行自动缩放的完整容器,而不是Lambda使用Api的自动缩放功能。
Cloudwatch适用于监视,而不需要大量安装或使用第三方工具。
希望这能帮上忙。
https://serverfault.com/questions/881998
复制相似问题