各大服务商提供的云数据库和 serverless 数据库有什么比较大的区别呢,虽然说文档上讲得天花乱坠,不过本质上,难道不是都一样,连接然后,读写数据吗
那对于 serverless 应用来说,每次执行一个函数都需要建立一个数据库连接,这样只要并发数稍微多一点,数据库就承受不了吧,所以 serverless 的数据库是有对这种情况做什么优化吗
但是单纯从介绍和提供的文档来看没看出特别的不同
1
shot 2021-08-15 11:29:42 +08:00
https://www.jeremydaly.com/aurora-serverless-the-good-the-bad-and-the-scalable/
Max Connections A major limitation of relational databases in serverless architectures is the maximum number of concurrent connections allowed by the database engine. While FaaS services like Lambda may scale infinitely (in theory anyway), massive spikes in volume can quickly saturate the number of available connections to the underlying database. There are ways to manage connections in serverless environments (also see Managing MySQL at Serverless Scale), but even with Aurora Serverless, this still appears to be a possible limiting factor. AWS uses the following formula for generating the max_connections value for Aurora instances: log( ( <Instance Memory> * 1073741824) / 8187281408 ) * 1000 = <Default Max Connections> A db.r4.xlarge instance with 30.5 GB of memory for example would have a default max_connections value of 2,000. log( (30.5 * 1073741824) / 8187281408 ) * 1000 = 2000 |
2
whileFalse 2021-08-15 12:00:30 +08:00
我觉得你口中的 Serverless 数据库可能有两种。以下全部以 AWS 的服务举例。
1. 为 Serverless 型应用优化的数据库,在应用程序不使用连接池而是一次性连接时也能很好的工作。例如 DynamoDB 和 RDS Data API,前者是原生使用 HTTP 协议,后者是在标准的 MySQL 等数据库前面加上了 HTTP 层代理。 2. 数据库本身以 Serverless 形式驱动,不用管理数据库实例,可以无缝伸缩,例如 DynamoDB 和 Aurora Serverless 。前者本身是 NoSQL,从设计上就是完全无缝伸缩的;后者则是分别在两个层面实现伸缩:Aurora 本身实现了存储层面的无缝伸缩; Aurora Serverless 通过预先准备计算资源池,进一步在计算层面实现无缝伸缩,因而实现了完整的无缝伸缩。 |