彻底解决的策略 方案1. 业务妥协,从主库读 方案2. 同步写入缓存redis,修改完成5分钟内都直接从redis读。 其他让延迟变好的策略 1.并行复制 2.降低并发,增加机器 2023.1.16 更新思维导图 思维导图 1.常见的主从架构 随着日益增长的访问量,单台数据库的能力已经捉襟见肘。因此采用主库写数据,从库读数据这种将读写分离开的主从架构便随之衍生了出来 More
解法 步骤1 python --version 确认系统安装python的版本号 步骤2 查找对应版本的官方文档,获取 https://docs.python.org/release/2.7.16/installing/index.html?highlight=pip 步骤3 根据文档,执行命令 sudo python -m ensurepip --default-pip 搞定
https://www.bilibili.com/video/BV1L4411y7mn?p=24 1.如何保证高可用 2.消息丢失怎么办,重复消费问题,消息顺序如何保证 3.消息一致性,A成功传给BCD D挂了,如何一致 1.基本消息例子 默认是负载均衡模式,还有一个广播模式 P24.张三:创建订单,扣减库存,付款订单,完成订单 Broker默认会把消息依次放入多个队列 消费者多线程的同时消费多个消 More
https://www.bilibili.com/video/BV1jJ411M78w 四种方式 垂直分库,水平分库,垂直分表,水平分表 垂直分表 常用的一个表,不常用的一个表,例子:商品数据,名称价格一个表,详情说明另一个表 好处:避免IO争抢,比如修改商品描述行锁,减少锁表概念 2.充分发挥热门数据操作效率 为什么大字段IO效率低 数据量本身大,需要更长读取时间 跨页,页是数据库 More
结尾有总结: 第一部分:分布式事务的需求来源 传统本地事务的ACID原则 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency)事务前后数据的完整性必须保持一致。比如A有500B有500,A转账给B 500 最终两人金额总和依然为1000才对 隔离性(Isolation)事务的隔离性是多个用户并发访问数 More
完美测试地址 https://www.cs.usfca.edu/~galles/visualization/RedBlack.html 插入四种情况。默认新插入都是红色 1.Z是根节点 Z变色为黑色 2.Z的叔叔是红色 Z的父亲,祖父,叔叔 变色, 完美测试5,3,7,6 3.Z的叔叔是黑色,并局部呈现直线 3.1 旋转祖父,直线向右,向左旋,反过来向右 3.2 Z原来的父亲和祖父 More
1.索引的本质是什么 2.MYSQL为何多数用B+Tree,而不是其他 3. BTree的特点 4. B+Tree的特点 4.1 为何B+Tree叶子节点多了一个指针 4.2 为什么B+Tree上层节点不存储数据 5. 两种不同的索引分别存储文件什么样 6. Innodb索引实现原理 6.1 为什么innodb表必须有主键,并推荐【整型自增】 6.2 为什么非主键索引结构叶子节点存储的是主键 More
MQ消息队列三个典型的应用场景 异步处理 使用前:注册--->发邮件--->发短信 如果连续处理,每个动作为50ms,那么一共花费150ms 使用后:注册--->MQ队列 MQ队列-->发邮件 (异步) MQ队列--->发短信 (异步) 用MQ队列服务缩短为55ms,注册50ms,写入MQ 5ms 应用解耦 使用前:订单系统--->库存系统 下单后减去库存,订单系统会依赖库存系统稳定性 使 More
1. 详情页的需求 1.多模板 2.商品详情页 a1.时效性低的数据 标题,图片,属性,商品介绍,规格参数 a2.时效性高的数据 价格,促销,库存,广告词 2. 访问特点 1.离散访问,热点数据少 2.活动时期流量暴增 商品设计思路图 触发路径 商品管理员修改一个商品的详情 商品服务把这个信息发送给MQ队列 监听MQ队列的数据缓存服务,更新这个商品的详情缓 More
整理完毕的笔记,收获很大 视频 https://www.bilibili.com/video/av667586995/ 提交订单 1. Redis里查库存-库存充足-扣减成功-更新库存 并发测试三单,从50变成49(其实为47),库存会超卖 2. synchroinzed(productID) 上锁 单机可以,多机器就拉倒了 synchroinzed JVM级别的锁 3. 分布式锁 锁标记productID,多方机器共享锁标记 More