摘要:
【IT老齐062】缓存一致性 Cache Aside Pattern 禁止先删缓存,后更新数据库 推荐先更新数据库,在删除缓存 极端情况 延迟双删 阅读全文
摘要:
【IT老齐061】BASE最终一致性 CAP理论下,常用的AP方案的补全手段 Basically Available(基本可用) Soft state(软状态) Eventually consistent(最终一致性) 基本可用就是快速实现用户的基本价值与诉求,“创建订单”后立即返回就是基本可用的体 阅读全文
摘要:
【IT老齐058】Zookeeper解决分布式系统商品库存超卖问题 场景 解决方案 传统的synchronized是无效的,它只针对一个JVM进程内多个线程起到同步作用,对跨进程无效。 利用数据库select ... for update 语句对库存进行锁定,依赖数据库自身特性,遇到跨库(分库分表) 阅读全文
摘要:
【IT老齐057】Raft选举算法 用途 Raft 算法是分布式系统开发首选的共识算法 主要在分布式集群架构下进行领导者 (主节点)的确认。 比如现在流行的组件 Etcd、Consul、Nacos、RocketMQ、Redis Sentinel 底层都是采用Raft算法来确认集群中的主节点,再通过主 阅读全文
摘要:
【IT老齐056】日千万级订单系统的高可用、高性能架构 原始场景 避免丢单 关键逻辑不要使用读写分离的查询方式,避免从库同步延迟造成订单查询异常 关键逻辑也不要使用缓存来进行订单的查询 订单补偿不要粗暴地使用消息队列的方式,避免中间件引发的订单丢失 接收消息处理失败时一定要让消息重试,避免丢失 日万 阅读全文
摘要:
【IT老齐055】Mysql Ngram全文检索技术 场景 select * from article where title like Java% 可能用到索引,看索引选择性 select * from article where titledlike %Java 一定不会用到索引 select 阅读全文
摘要:
【IT老齐054】MongoDB介绍 场景 特点 多形性: 同一个集合中可以包含不同字段(类型)的文档对象 动态性:线上修改数据模式,修改是应用与数据库均无须下线 数据治理:支持使用JSON Schema来规范数据模式。在保证模式灵活动态的前提下,提供数据治理能力 速度优势 数据库引擎只需要在一个存 阅读全文
摘要:
【IT老齐053】动静分离架构抗住超高并发访问 架构三大分离设计 读写分离 动静分离 前后台分离 概念 有效区分页面中的动静数据是优化的关键前提 静态数据是无个性化数据 静态文件: HTML/CSS/JS/图片 低频变动数据: 字典数据/地区数据 /组织架构历史数据 动态数据就是个性化/高频写数据 阅读全文
摘要:
【IT老齐051】动态通知方案Push和Pull 场景 对比 Push模式 Pull模式 实时性 较好,通过网络管道准实时发送 较差,取决于定时轮询时间 服务器状态 有状态,需持久化粉丝动态队列 无状态,根据请求实时查询 风险项 大V动态的并发“写扩散”问题 大量动态队列持久化造成磁盘高 IO 大量 阅读全文
摘要:
【IT老齐050】MySQL服务器选择 CPU MySQL5.6以后版本对多核CPU进行优化 不支持多CPU对同一SQL并发处理 64位的CPU一定要工作在64位的系统下 对于并发比较高的场景CPU的数量比频率重要 对于CPU密集性场景和复杂SQL则频率越高越好 内存 理想的选择是服务器内存大于数据 阅读全文