第二十二章 高并发业务(2019-2-25 21:49:29)
互联网架构(图)
架构可参考:https://blog.csdn.net/weixin_42526793/article/details/80792413
负载均衡器:
①业务请求分析 :NGINX,Apache 反向代理服务器
②路由算法
③限流
有效请求/无效请求:①加验证码②短信服务
一个账号多次请求请求
多个账号一个人(提高账户等级,多个账号合一)
RPC(远程过程调用协议)
分布式系统分担压力:
①水平分法(按业务)②垂直分法(平均分)③两者 结合
数据库设计:①分表 (时间) ②分库(路由算法)
行锁定:使用主键更新。 表锁定:会锁表影响并发
用连接替代子查询(拒绝not in not exist)
读/写分离
动静分离技术
CDN(内容分发网络)静态数据
锁和高并发:
加锁会影响并发 ,并发不保证数据一致性。
(事务注解@Transactionl 读写提交的隔离级别 propagation.required)
要考虑数据一致性和性能问题:高并发的超发问题,新问题。
悲观锁:
使用 for update 当前线程占用,其他线程等待,经历频繁挂起操作,线程阻塞,浪费资源。
乐观锁:
CAS 进入先保留就值,再与库里数据对比,相同则可以更新。
引发ABA问题(业务逻辑存在回退可能性)
解决方法:添加版本号,改变则加一。
乐观锁重入机制:时间戳,次数。
redis 实现高并发:Lua脚本的原子性。消除数据的不一致性。