持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
-
Rcx推送用户在线状态, 改成用updateTime判断,只有当updateTIme 大于 数据库中的updateTIme时才更新 乐观锁用 synchronized(userid.intern()){}
-
死锁 更新同一个群组表时 ,如果同时操作群组123, 因为是更新同一条记录,数据库会加排他锁 线程A 更新群组表 (lock1) —— 更新群成员表(try lock2) — 等待线程B释放 lock2 线程B 更新群成员表(lock2) —— 更新群组表( try lock1) —- 等待线程A释放lock1
-
并发导致的数据问题 同时操作同一个群组123
线程A 修改群成员别名(系统当前时间为version) T1 更新群成员表的version(rel_group_member) ———sleep———— 更新群组表的version —覆盖更新了version为T1
线程B 修改群成员别名(系统当前时间为version) T2 更新群成员表的version(rel_group_member) ——————— 更新群组表的version —更新了version为T2
- 先查询,后更新的问题
线程A 先查询群成员的count, 再update count -1 ,最终两个更新的结果都是一样的数字 线程B 先查询群成员的count, 再update count -1 ,最终两个更新的结果都是一样的数字
-
redis单线程问题 客户端使用keys * 导致阻塞生产get set命令
-
数据一致性问题 mysql 主从配置读写分离,由于binlog 同步延迟,导致主库更新后,从库未同步,从库读取到老数据
-
线程池未隔离导致服务雪崩
生产上IM对外提供的发送消息接口(接口逻辑主要是将消息写入Rabbitmq),由于Paas平台rabbitmq 在写入消息时,可能由于内存问题导致rabbitmq写入夯住,由于发送消息接口没有单独使用独立的线程池,导致服务OOM