开发者社区> 问答> 正文

问几个高并发方面的解决方案

  1. Memcache 失效产生的雪崩问题。

问题描述:Memcache在Mysql前做了一级缓存,每次去MySQL查询的话大约耗时3秒,而每秒钟大约有100秒请求进来,这时,如果恰好memcache缓存过了有效期,那么其中一个请求肯定要穿透到Mysql去查询,而这时候的请求去查memcache的时候也是查不到的,于是这些请求也去Mysql查了,这样造成了短时间内的大量MySql查询。

  1. MySQL 主从复制迟延,导致数据同步问题。

问题描述: MySQL 部署了主从复制,并且应用了读写分离特性,写到主库,从库读取。有个逻辑是从数据库中查询最大值,加1后写到主库里,而因为从库的迟延问题,查到的数据是旧的,加1后应该也是旧的,因此INSERT到主库的数据也是旧的,可能发生值重复插入问题。

  1. MySQL 分表问题

问题描述:有个千万级以上的用户表,记录了Email值、用户名,要完成用户登录动作,用户可以输入用户名或者Email都能完成登录动作。因为用户数量较多,查询时比较慢,所以想分表,此时如果按着用户名规则分表,那么email就会无序的分布在其他表中,这样就加重了email的查询,反之亦然。

展开
收起
小旋风柴进 2016-03-11 14:39:41 2491 0
1 条回答
写回答
取消 提交回答
  • 1:我感觉对于第一问题还是当数据不存在时,全部查询落到了数据库,那么其实你可以返回一个Null,把这个值缓存,并且考虑好过期时间

    2:读写分离 其实起不到什么作用,因为从断还负责着同步数据问题,所以也存在写,如果只读从那么肯定会有延迟问题,对于敏感及时问题,是否可以这样,当写数据和读数据一起,就同时访问主,如果只读,那么就请求从,前提是你允许有延迟问题。

    3:是否可以把email 用户名 分成两个表,对两个表进行不同的hash查询

    2019-07-17 18:59:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
徐雷-Java为王,互联网高并发架构设计与选型之路6.0 立即下载
Redis 的高并发实战:抢购系统 立即下载
MySQL高并发场景实战 立即下载