架构真经
2018-08-06 本文已影响0人
老生住长亭
几天看了架构真经,摘抄书中主要的关键点,按照章节画的思维导图
架构真经.png文字描述
架构真经
谋定而后动
性能
前端
页面cache
后端
多节点
常用不用成cache
底层(DB)
分库分表
数据库cache
表理论关联,物理不关联
扩展新
水平扩展
横向添加节点
垂直扩展
功能单一拆分,链路调用
可用性
功能简单,单一,复制性强
意犹未尽
扩展不依赖第三方解决方案
分类处理负载,使其不影响整体功能
完善监控
有问题
问题来源,背景
什么问题
异步通信
尽可能的异步请求通信,尤其不重要的通信
调用外API和第三方服务
改变易出错,复杂的系统
长时间后台运行的进程
没有时间约束的服务或者数据
有备无患
设立故障隔离带-泳道隔离区
泳道隔离区不进行数据层访问
泳道区之间不进行同步调用,限制同步调用,必要时异步通信
拒绝单点故障
避免系统串联
启用和禁用功能设计
实现控制功能上线和下线切换
重中之重
业务和产品系统分开
正确使用数据锁
明锁
数据库用户执行事务时执行DML时产生
暗锁
数据库用户在数据库内部实体交互产生
行锁
页锁
区间锁
操作很多页面,通常扩展数据库空间时产生
数据库锁
禁止使用分阶段提交
阻塞其他任务处理事务
前车之鉴
主动发现错误, 不靠QA
借鉴A/B方式
实现回滚设计
缓存之王
设置缓存过期时间
设置前端请求头Ajax缓存
Last-modified
Expires
Cache-Control
创建对象缓存,持久化对象,在数据库和应用层之间
分而治之
水平扩展(X轴扩展)
需要解决数据同步问题
创建在查询数据库之前添加缓存
数据库复制
主从复制之间是异步,存在延迟数据问题
Y轴扩展-服务或资源拆分
沿用动词按动作拆分,名词按资源拆分,其核心:拆分尽可能独立的系统
分片治理-Z轴拆分
针对大数据集,按照特定维度或者字段分块拆分,进而达到区分服务的目的
大道至简
避免过度设计
1.设计实际够用的即可
2.以复杂的方式或者方法去完成
设计考虑扩展
设计20倍的容量,实施3倍的容量, 部署1.5倍的容量
三次简化方案
简化方案范围
帕累托原则(2/8原则)
简化方案设计
消除无关紧要的设计
简化方案实施