《架构设计2.0大型分布式系统架构方法论与实践》三高笔记
目录
- 前言
- 高并发
- 高并发读
- 动静分离与CDN加速
- 缓存
- 并发读与Pipeline
- 重写轻读
- 读写分离
- 批量
- 高并发写
- 数据分片
- 任务分片
- 异步化
- 批量
- 高可靠
- 七板斧
- 高可用
- 高可用架构几个核心问题
前言
- 因为本人没多少
三高
的实战经验,所以对《架构设计2.0大型分布式系统架构方法论与实践》这本书的三高
比较感兴趣,在此做个记录,并加入一点自己的理解(如果有错误的地方请批评指出,感激不尽)。 - 何为
三高
?高并发
:高并发是为了让系统变得更有效率。高可靠
:为了让系统变得更靠谱,尽可能减少故障发生次数。高可用
:为了故障发生后,故障恢复时间尽可能的短。
高并发
高并发
:高并发是为了让系统变得更有效率。高并发又可以分为几种侧重类型:高并发读
、高并发写
、高并发读写
。
高并发读
动静分离与CDN加速
- 静态内容常用的处理策略就是
CDN
。
缓存
本地缓存
或集中式缓存(如Redis/Memcached)
。
并发读与Pipeline
并发读:串行改并行,可以使用
FutureTask
、CompleteService
、CompletableFuture
实现,FutureTask
使用具体可参考拙作使用FutureTask优化业务代码。Pipeline:多个Get操作一个个发出去,不等等返回结果,就像流入一个管道一样,结果从另一个管道流出。这块很像
HTTP Pipeline
。
重写轻读
- 书中举例微博Feeds流,要查询用户Feeds流时,要先查询关注的用户列表,不利于高并发查询,所以为每个用户准备一个收件箱。某人发了条微博后,给粉丝的信箱都投递一条数据。这样把计算逻辑从“读”的一端移到了“写”的一端。
- 宽表:其实就是冗余字段。
读写分离
- 例如MySQL可以做集群,
读写分离
,读的节点可以多一些。
批量
- 可以参考拙作高并发场景下请求合并(批量)。
高并发写
数据分片
- 例如MySQL
分库分表
。
任务分片
- 任务分片:例如把生产汽车的过程分成多道工序。虽然对每辆汽车来说依旧是串行的,但工序之间是并行的。对应代码与
FutureTask
的含义有所关联,FutureTask
使用具体可参考拙作使用FutureTask优化业务代码。
异步化
- 书中举例短信验证码的例子:请求发送验证码加入到消息队列,由另一个程序消费。
批量
- 书中提到了广告计费系统的合并扣费,把用户分组,多个扣款的请求合并成一个,也就是说只需要调用一次数据库,减少了数据库压力,也提高了执行效率。虽然这是高并发写,但同样可以参考拙作高并发场景下请求合并(批量)。
高可靠
高可靠
:为了让系统变得更靠谱,尽可能减少故障发生次数。总结下面7个有效措施。
七板斧
- 1、限流
- 2、降级
- 3、熔断
- 4、超时与重试
- 5、隔离
- 6、灰度发布、滚动发布、备份、回滚
- 7、监控体系和日志报警
高可用
高可用
:为了故障发生后,故障恢复时间尽可能的短。要想快速恢复,要避免单点。
高可用架构几个核心问题
- 故障探测。
- 脑裂问题。
- 数据一致性。
- 对客户端透明。
- 高可用依赖的连环套问题。
《架构设计2.0大型分布式系统架构方法论与实践》三高笔记相关推荐
- 【大型分布式网站】抗住千万流量的大型分布式系统架构设计
一.大型分布式网站架构技术 1.1 大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费 ...
- 系统架构设计:程序员向架构师转型之路-张勇-专题视频课程
系统架构设计:程序员向架构师转型之路-247人已学习 课程介绍 本课程首先围绕普通开发人员如何向架构师转型这一课题,从架构师的角色以及转型过程中会遇到的困难及其解决方法切入展开讨论,总 ...
- 《系统架构设计》-01-架构和架构师概述
文章目录 1. 架构的基本定义 1.1 架构组成理论 1.1.1 系统元素 1)概念 2)静态结构和动态结构 1.1.2 基本系统属性 1.1.3 设计和发展原则 1.2 架构的决策理论 1.2.1 ...
- 深入解读 MySQL 架构设计原理,剖析存储架构选型核心
孙玄,江湖人称"玄姐",前58集团技术委员会主席,前转转二手交易平台首席架构师.今天想跟你聊点儿企业里那些年薪百万的架构师,他们的架构设计思维是如何升级的,以及他们是如何玩转 My ...
- 互联网架构设计漫谈 (6)-90%的架构师都知道的工作流原理
互联网架构设计漫谈 (6)-90%的架构师都知道的工作流原理 工作流是互联网中常见的应用场景,目前国内有很多厂商提供各种各样的工作流引擎.在国际也有一些知名的工作流引擎,比如:jBPM 和 Activ ...
- 架构系列一:大型项目架构演进过程
架构系列一:大型项目架构演进过程 作为一名程序员,单单只会Coding是远远不够的,想要走的更高更完,还必需懂Coding之外的其他东西,如架构设计,系统分析等,今天就架构这块,谈谈自己的理解 一.单 ...
- 架构设计(1)-谈谈架构
架构设计学习思维导图: 架构设计系列主要的ADM(架构开发方法)主要基于TOGAF9或者TOGAF9.1来论述.这是个人学习实践和总结笔记,专注并不断积累和更新,努力精进自己.个人拙见,仅供参考. 1 ...
- 架构设计三部曲之如何做架构设计
架构设计不是架构师的专属工作,对非技术人员甚至是开发人员来说,从实实在在的需求到高神莫测的架构设计仿佛是一个神秘的过程,只有具有架构师头衔的人才能掌握各中玄妙,这篇文章就是从最基本的事物关系来回答如何 ...
- 干货丨千万流量大型分布式系统架构设计实战
- 前言 - 本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部分是个人经验总结 ...
最新文章
- Unity创建在线多人游戏视频教程
- jquery实现层级显示 效果图_php运用无限级分类实现评论及回复功能
- Mansory算法分析
- dirty_background_ration 与 /proc/sys/vm/dirty_ratio
- MySQL-主从复制监控
- 2021春季每日一题【week5 未完结】
- React 学习第一天-2018-07-21
- HDU 1294 Rooted Trees Problem
- python蟒蛇绘制实例分析_011 实例2-Python蟒蛇绘制
- android+notepad教程,Android Sample学习——NotePad
- ddm模型公式_两阶段增长模型
- iconfont图标使用方法
- js生成java uuid_JS生成UUID
- 计算机技术比武优秀获奖感言,教学大赛获奖感言4篇
- rust发射台主楼_各专业分类词库(完全).doc
- 海丽宾雅水疗服务App技术支持
- hive sql系列(七)——查询前20%时间的订单信息
- mongodb重置密码
- 驱动开发思路以及应用程序与驱动程序的区别
- C++中的面向对象(四大基本特征与五大原则)