假如数据库连接数只有1000,怎么处理100万的并发量呢?不能用负载均衡,有别的办法吗?

十点四十八
  • 317

求大佬们给个思路,这是我上午的面试题。。。

回复
阅读 1.8k
5 个回答
✓ 已被采纳

1、用redis将高频查询数据存储。提高查询速度
2、mysql做主从
3、增删改加队列
4、切表分库
5、swoole解决并发
6、有必要时用grpc做服务治理
7、微服务
8、代码分割
。。。。等等等等

又是一个面试造核弹,上班拧螺丝的过程

首先纠正你一下,负载均衡和你这个问题没有关系。其次是你这个问题也挺有意思的,因为这种场景很难出现。不过,我还是假装你真的遇到了这种极度不平衡的场景。
1.用好redis,将大量请求工具拦截在在redis层
2.引入连接池中间件。连接池和mysql是长连接,你不用担心频繁握手带来的性能问题。程序从连接池中取出一个链接句柄,用完后会迅速放回去。可以抵挡一阵儿。
除此以外,我也不知道还有什么银弹了

空间换时间,把常用的表都缓存到内存中.

数据库的话跟负载均衡真没关系。首先是消息队列,数据库主从架构。只是100万并发我觉得通常讲的是网络访问的事情而不是数据库连接数。100万并发不用负载均衡我还真不知道你单台服务器如何承受这访问量。即使是带宽调的足够大,我觉得用户体验也不会很高。

  1. 缓存,就可以不走数据库
  2. 消息队列,可以限制到数据库的数量,减缓压力
  3. 连接池管理,复用连接,等待管理。
  4. 数据库优化,读写优化,提升数据库的效率。
你知道吗?

宣传栏