AWS Aurora Serverless 使用初体验

AWS Aurora Serverless 使用初体验

早就听说了Aurora Serverless,应该是去年AWS re:Invent 2017 上海站的时候吧。第一次听说这个产品的感受就是它是数据库服务的神器!提供的功能简直太理想了。Serverless无服务, 从此MySQL数据库变成了一个service,再也不用操心数据库服务器的伸缩管理。用多少产生多少费用。不用就放在那里,平常也不会产生什么费用。对于开发和系统管理人员来说,这简直太方便了。

最近AWS Aurora Serverless终于正式发布了,于是就很想尝试使用一下。于是就是这在新的项目上去使用,也做一些测试。结果发现并不像想像中的那么理想。主要是下面几点吧:

最明显的感觉就是AWS Aurora Serverless挺奇怪的。他并不像AWS其他的Serverless的产品那样,比如S3,让用户感觉不到背后的服务架构。
使用的过程中,你能清晰的感觉到背后有很多服务器不停的被创建、使用、销毁。甚至于收费都是根据这些不停被创建、销毁的Aurora Capacity Units (ACUs)进行计算的。理想中的无服务数据库,应该就是像S3那样,给个名字建个服务,然后就可以使用了。就行拿Athena,写个SQL,就能查询S3上的数据一样。感觉现在这个AWS Aurora Serverless还有很长的路要走。

然后就是关于扩展,scaling!AWS Aurora Serverless的scaling感觉就是根据CPU、连接数等条件触发服务器的scale,只不过这个scale的计算单位是ACU。这更像是EC2机器机器的scale方式。在测试中,对使用AWS Aurora Serverless数据库的网站进行压力测试,这个scale的过程很不平滑。对网站应用来说,5分钟的scale up预热时间感觉有点太长。而scale down就更加不灵敏,经常压力测试完了几个小时,服务还停留在峰值的ACU数量上。

最后不敢在生产上使用这个服务的原因时,scale up的时候有时候会失败,报告类似这样的错误The DB cluster failed to scale from 2 capacity units to 4 capacity units for this reason: A scaling point wasn’t found.
就是不能scale up也还好,但是我甚至碰到了scale up失败时服务就不可用了。最后也不能解决,只好废弃不用了,从备份开了一个新的cluster。

当然虽然有这些问题,我想随着产品的不断完善都会逐步提高的。虽然感觉现在AWS Aurora Serverless还不适合用在生产环境中,但是用的做开发的数据库服务器还是很有优势的。当服务在一定时间内没有人访问就会进入休眠状态,产生很少的费用。当再次有访问时,会自动继续服务。只不过,这个过程要几分钟,稍微有点慢。

最后提一下AWS Aurora Serverless能服务的数据库连接数,基本上跟AWS Aurora不同配置数据库连接数一致。压力测试的过程中,我们从网站服务器连接过来的数量高峰时大概能有800。这位姐Jeremy同学更是直接通过实际的AWS Aurora Serverless集群,查找出来了扩展到不同的ACUs时,实际的连接数限制

ACUs Memory (in GB) Max Connections
2 4 90
4 8 135
8 16 1,000
16 32 2,000
32 64 3,000
64 122 4,000
128 244 5,000
256 488 6,000

参考文章:
* https://www.jeremydaly.com/aurora-serverless-the-good-the-bad-and-the-scalable/
* https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html

leon

每天进步一点点
Close Menu