- 本质是一个操作 , 无论执行多少次 , 执行结果总是一致的
- 幂等核心是全局唯一 ID , 链路依据全局 ID 做幂等 , 依据业务复杂度可以选取多种实现方式
- 数据库自增长 ID
- 本地生成 uuid
- Redis 生产 id
- Twitter 开源算法 Snowflake
- HTTP 幂等性 , 除 POST 外 , HEAD , GET , OPTIONS , DELETE , PUT 均满足幂等
1、分布式缓存
缓存更新模式
- Cache Aside , 常用模式 , 应用要维护缓存的失效 , 命中 , 更新等动作
- Read/Write Through , 缓存代理更新数据库操作 , 应用视角只有一份存储
- Write Behind Cache , IO 加速方式之一 , 更新操作只在内测完成 , 异步进行批量更新数据库
- Push 模型 , 中心调度 , 复杂度高
- Pull 模型 , 无中心调度 , 复杂度底
- Push+Pull 模型
数据库分片
- 垂直分片
- 字段拆分 , 将变化频率不同的字段拆分到不同表
- 水平分片
- 哈希算法来分 , 数据离散度高 , 降低热点可能性
- 通过时间范围分片 , 保证数据连续性
- 分片设计要点
- 分片要预留足够空间 , 避免重新分片
- 分片聚合要并行去做
- 业务尽可能不去做跨分片的事务
1、系统可用性
- MTTF, Mean Time To Failure , 系统平均运行多长时间才发生故障 , 越长越好
- MTTR,Mean Time To Recover, 故障平均修复时间 , 越短越好
- 可用性计算公式 ,Availability= MTTF /(MTTF+MTTR)
- 降低一致性
- 强一致性 , 将所有的同步一致性 , 切换为最终一致性 , 提高吞吐量
- 弱一致性 , 必要时候牺牲一致性换取服务整体可靠性
- 关闭次要服务
- 不同应用 , 关闭次要应用 , 释放物理资源
- 相同应用 , 关闭应用次要功能 , 更多资源给到核心功能
- 简化服务功能
- 如简化业务流程 , 减少通讯数据等
1)限流目的
①SLA 保证方式之一
②应对突发峰刺流量 , 一定程度节约容量规划成本
③租户隔离策略之一 , 避免某些用户占用其它用户的资源 , 导致服务大范围不可用
2)限流方式
①服务降级
②服务拒绝
3)解决方案
①服务权重划分 , 多租户环境将资源按权重划分 , 保证重要客户的资源
推荐阅读
- 浦峰|冬奥纪实8k超高清试验频道开播,冬奥结束后转入常态化运转
- 年轻人|人生缺少的不是运气,而是少了这些高质量订阅号
- 精度|将建模速率提升10倍,消费级3D扫描仪Magic Swift在2021高交会大显“身手”
- Tesla|最高涨幅21088元:特斯拉Model 3/Y入门车型价格调整
- 新机|快准稳,捕捉每个高光瞬间! 刘衡分享EOS R5拍摄体验
- Apple|苹果高管解读AirPods 3代技术细节 暗示蓝牙带宽可能成为瓶颈
- 人工智能|聚焦车载人工智能计算芯片研究 推进汽车产业高质量发展
- 凝胶|高交会刮起 “专精特新”风 “小巨人”撑起大视野
- Tesla|特斯拉新款Model S电池体积小能量密度高 外媒揭秘三大关键技术
- 养殖|科创信达冠名!第二届智慧养殖高峰论坛帷幕:推动畜牧行业新升级