可扩展性指系统为了应对将来需求的变化而提供的一种扩展能力,新需求出现时系统不需要或者仅需要少量修改就可以支持,无需整个系统重构或者重建。
面向对象就是为了解决可扩展性,后来的设计模式更是将可扩展性做到了极致。

具备良好扩展性的两个基本条件:正确预测变化、完美封装变化。

预测变化

架构师需要预测,但预测本身就存在不确定性复杂性在于:

  • 不能每个设计点都考虑可扩展性
  • 不能完全不考虑可扩展性
  • 所有的预测都存在出错的可能性

应对变化方案一

将“变化”封装在“变化层”,将不变的部分封装在独立的“稳定层”。

例一:接受数据格式的扩展

例二:数据库类型的扩展

问题:

  1. 对两个层的拆分
  2. 设计两个层间的接口

应对变化方案二

提炼出一个“抽象层”和一个“实现层”

有23种设计模式

【从零开始学架构-李运华】06|复杂地来源:可扩展性相关推荐

  1. 从零开始学架构 01-架构基础【笔记】

    从零开始学架构(李运华) pdf下载地址 https://pan.baidu.com/s/1cZJOR3cfpmS1BDfp6gJaBQ 提取码:u2ou 说明:对从零开始学架构这本书看时所做的记录, ...

  2. 阿里P9李运华:架构到底是指什么?

    你好,我是李运华. 2018 年,我发布了<从 0 开始学架构>这门课程,分享了我之前在电信业务和移动互联网业务方面的经验和感悟. 后来,我转岗去了蚂蚁国际,从事更加复杂的支付业务.为什么 ...

  3. 从零开始学架构5 - 实战篇

    从零开始学架构5 - 实战篇 38 | 架构师应该如何判断技术演进的方向? 潮流派? 保守派? 跟风派? 技术演进的动力 1)对于产品类业务,答案看起来很明显:技术创新推动业务发展! 苹果开发智能手机 ...

  4. 从零开始学架构4 - 可扩展篇

    从零开始学架构4 - 可扩展篇 32 | 可扩展架构的基本思想和模式 今天我们进入架构可扩展模式的学习,这部分内容包括分层架构.SOA 架构.微服务和微内核等,先来聊聊架构的可扩展模式. 可扩展的基本 ...

  5. 从零开始学架构2 - 高性能篇

    从零开始学架构2 - 高性能篇 从0开始学架构.高性能篇 14 | 高性能数据库集群:读写分离 读写分离原理 读写分离的基本原理是将数据库读写操作分散到不同的节点上,下面是其基本架构图. 读写分离的基 ...

  6. 关于新技术的引入原则 ——从零开始学架构

    不以解决实际问题引入的技术都耍流氓. 新技术的引入不是为了证明自己,而是为了解决实际项目中遇到的问题.希望诸位能够控制住自己的心魔. 新技术的引入要求应该是解决的问题大于带来的问题. 再引入新技术,请 ...

  7. 从零开始学架构三 高性能

    从零开始学架构三 高性能 读写分离 读写分离的基本实现是: 数据库服务器搭建主从集群,一主一从.一主多从都可以. 数据库主机负责读写操作,从机只负责读操作. 数据库主机通过复制将数据同步到从机,每台数 ...

  8. 从零开始学架构3 - 高可用篇

    从零开始学架构3 - 高可用篇 从0开始学架构.高可用篇 22 | 想成为架构师,你必须知道CAP理论 CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是 ...

  9. 从零开始学架构——架构基础

    本文章的内容是根据书籍<从零开始学架构>整理的资料,供作者以及读者查阅. 1. 架构的定义 软件架构指软件系统的顶层架构.详细阐述如下: a. "系统由一群关联个体组成" ...

  10. SpringBoot微架构-李兴华-专题视频课程

    SpringBoot微架构-2719人已学习 课程介绍         SpringBoot是Spring推出的一种微架构的开发框架,在现在的项目开发之中使用非常普遍,并且也是现在所有企业开发的基础要 ...

最新文章

  1. 分析PHP中单双引号的误区和双引号小隐患
  2. oracle自动分区maxvalue,分区表中的maxvalue参数设置-Oracle
  3. mysql 未能启用约束_未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。...
  4. Java黑皮书课后题第3章:**3.24(游戏:抽牌)编写程序,模拟从一副52张的牌中抽一张牌,程序应显示牌的大小、花色
  5. tcpdump源码分析——抓包原理
  6. 深入MTK平台bootloader启动分析笔记
  7. python 查询sqlserver 视图_SQL Server查看视图定义总结
  8. php采集器分析功能实现
  9. 有关windows firewall边缘遍历(Edge traversal)的一点信息
  10. 不走寻常嵌入式开发路
  11. ThinkPad SL400 改装Win2003方法以及驱动下载列表(适用于SL500)
  12. 【GIS】开源GIS简介
  13. 「免费 | 重磅」9月19日首届智能决策论坛即将开幕!(附带10+位作者演讲主题及摘要)「中国科学院自动化研究所」...
  14. 人生苦短,你一定要成为你自已想成为的那个人
  15. 华为Android彩蛋,华为手机DIY拨号及彩蛋功能介绍
  16. [论文阅读] (13)英文论文模型设计(Model Design)如何撰写及精句摘抄——以入侵检测系统(IDS)为例
  17. 中文老师经常说的IB课程,到底是什么?
  18. 2020李宏毅深度学习hw1
  19. 纯CSS实现一个三角形加圆角三角形
  20. POJ3322bloxorz

热门文章

  1. 【CodeForces 1260D --- A Game with Traps】二分
  2. php 数组添加键值对,php怎么为数组增加键值对
  3. 安装office2010常见的提示错误解决办法
  4. 【易语言界面开发系列教程之(EX_UI使用系列教程--EX组件(一键换肤))】
  5. 测试用例和缺陷报告模板
  6. Shadow Defender 安装后启动蓝屏、无法启动、不兼容 Win10 解决方案
  7. Win10系统隐藏磁盘
  8. C语言新思路跟未来教育哪个好,计算机等级考试用什么书好 未来教育的书怎么样?貌似网上评价很高...
  9. 数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)
  10. 阿里巴巴代码规范插件