高并发问题

问题分类 侧重于“高并发读”的系统 例如如下场景 1. 搜索引擎 2. 电商的商品搜索 3. 电商系统的商品描述、图片和价格 侧重于“高并发读”的系统 例如如下场景 1. 广告扣费系统 同时侧重于“高并发读”和“高并发写”的系统 例如如下场景 1. 电商的库存系统和秒杀系统 2. 支付系统和微信红包 3. IM、微博和朋友圈 高并发读 策略:加缓存 本地缓存或Memcached/Redis集中式缓存 当数据库支持不住的时候,首先想到的就是为其加一层缓存。缓存通常有两种思路:一种是本地缓存,另一种是Memcached/Redis类的集中式缓存 使用缓存时需要考虑一些问题
阅读更多

分布式事务一致性

分布式事务问题 定义:分库架构下无法使用单机数据库的事务能力,需要在多个服务协同操作下保证数据一致性 解决方案:强一致性协议 一个协调者,多个参与者,协同进行分布式事务处理 2PC(两阶段提交) 流程 1. 准备阶段:协调者向各个参与者发起询问,说要执行一个事务,各参与者可能回复YES、NO或超时。 2. 提交阶段:如果所有参与者都回复的是 YES,则事务协调者向所有参与者发起事务提交操作,即Commit操作,所有参与者各自执行事务,然后发送ACK 特点 优点 原理简单,实现方便 缺点 1. 同步阻塞:在阶段1,锁定资源之后,要等所有节点返回,然后才能一起进入阶段2,不能很好地应
阅读更多

高可用和稳定性

多副本 1. 本地缓存多副本 2. Redis多副本 3. MySQL多副本 4. 消息中间件多副本 隔离、限流、熔断和降级 隔离 定义:将系统或资源分割开,在系统发生故障时能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应 1. 数据隔离 2. 机器隔离 3. 线程池隔离:为了某个rpc接口较慢导致线程池打满,为不同的rpc接口提供不同的线程池 4. 信号量隔离:为了解决线程数过多导致上下文切换开销的大问题,共用线程池但是取线程之前需要获得信号量,信号量达到阈值则无法获取线程 限流 定义:系统的处理能力不能应对外部请求的涂增流量时,为了不让系统崩溃(如线程池资源耗
阅读更多