我想优化我的系统,以便能够处理大量用户。即使网站永远不会流行,我也想做正确的事情。
无论如何,我目前正在使用 2 个数据库解决方案的组合:
1.) Either SQL (mysql, postgre) via SQLAlchemy OR MongoDB
2.) Redis
我使用 Redis 作为“热”数据库(因为它的速度要快得多,并且可以减轻主数据库解决方案的压力),而不是通过 cron 任务在两个之间同步数据。我使用 Redis 进行会话管理、统计等。但是,如果我的 Redis 服务器崩溃,站点将保持运行(回退到 sql/mongo)。
所以这是我的数据设计。现在我想做正确的连接。
由于 99% 的页面都需要 sql/mongo 和 redis,所以我目前的设计如下:
- When new HTTP request comes in, I connect to all databases
- When page finishes rendering, I disconnect from databases
现在显然我正在做很多连接/断开连接。我已经计算出这个模型可以维持相当数量的访问者,但是我想知道是否有更好的方法来做到这一点。
请求之间的持久连接会提高性能/负载,还是打开连接的数量会阻塞服务器?你会推荐创建一个连接池吗?如果是这样,什么时候应该创建连接池以及模型应该如何访问它(或从中获取连接对象)。
如果这些问题很愚蠢,我很抱歉,但我是新手。