DESIGN
☕ DESIGN 是个人对于软件系统架构的心得和总结。架构之道,在于权衡;权衡之术,在于取舍。
🔁 项目同步维护:Github | Gitee📖 电子书阅读:Github Pages | Gitee Pages
📖 内容
设计步骤
解决方案(Solution),就是针对某些已经体现出的,或者可以预期的问题、不足、缺陷、需求等等,所提出的一个解决整体问题的可行性方案。就软件系统而言,解决方案就是一个可以解决具体业务问题,并且可以落地的软件系统。
解决方案,毫无疑问是顶层系统设计,这需要设计者既懂技术,也懂业务。
第一步:需求分析
把所有需要的东西聚集在一起,审视问题。不停的提问,以至于我们可以明确使用场景和约束。讨论假设。
- What:系统的作用是什么?系统的目标是什么?
- Who:系统的用户群体是谁?
- How:用户希望怎样使用系统?系统如何为用户提供服务?
- How many:有多少用户?日活/月活有多少?——用户体量会极大的影响系统的性能要求,从而影响系统的规模和复杂度。
- 容量:系统需要处理多少数据?
- 并发量、吞吐量:系统需要每秒钟处理多少请求?
- 读写比率:系统的读写比率是多少?——读多写少或写多读少决定了不同的架构方案。
- How much:系统的预算是多少(包括物料、人力成本等)?
- 输入输出:系统的输入输出分别是什么?
第二步:顶层设计
使用所有重要的组件来描绘出一个高层级的设计。
- 画出主要的组件和连接
- 证明你的想法
第三步:组件设计
对每一个核心组件进行详细深入的分析。
第四步:扩展设计
确认和处理瓶颈以及一些限制。举例来说就是你需要下面的这些来完成扩展性的议题吗?
- 负载均衡
- 水平扩展
- 缓存
- 数据库分片
设计
架构
综合
微服务
安全
设计模式
创建型模式
创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。
- 简单工厂模式 (Simple Factory)
- 工厂方法模式 (Factory Method)
- 抽象工厂模式 (Abstract Factory)
- 建造者模式 (Builder)
- 原型模式 (Prototype)
- 单例模式 (Singleton)
结构型模式
结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
- 适配器模式 (Adapter)
- 桥接模式 (Bridge)
- 组合模式 (Composite)
- 装饰模式 (Decorator)
- 外观模式 (Facade)
- 享元模式 (Flyweight)
- 代理模式 (Proxy)
行为型模式
行为模式负责对象间的高效沟通和职责委派。
- 模板方法模式 (Template Method)
- 命令模式 (Command)
- 迭代器模式 (Iterator)
- 观察者模式 (Observer)
- 解释器模式 (Interpreter)
- 中介者模式 (Mediator)
- 职责链模式 (Chain of Responsibility)
- 备忘录模式 (Memento)
- 策略模式 (Strategy)
- 访问者模式 (Visitor)
- 状态模式 (State)
重构
UML
📚 资料
- 书籍
- 《大型网站技术架构:核心原理与案例分析》 - 浅显易懂的将解大型网站架构演进之路;简介了大型系统所面临的挑战以及核心技术点。
- 《亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统》
- 大型网站系统与 Java 中间件实践
- 企业 IT 架构转型之道:阿里巴巴中台战略思想与架构实战 - 阐述阿里巴巴中台系统发展,更多的是讲解应用场景和能力,没有讲解技术细节。
- 逆流而上:阿里巴巴技术成长之路 - 主要以运维的视角阐述系统运维中遇到的困难,定位思路以及解决方法。
- 《Head First 设计模式》
- 《大话设计模式》
- 《重构——改善既有代码的设计》
- 教程
🚪 传送
你可能会感兴趣:
- Java 教程
📚 - JavaCore 教程
📚 - JavaTech 教程
📚 - Spring 教程
📚 - Spring Boot 教程
📚 - 数据库教程
📚 - 数据结构和算法教程
📚 - Linux 教程
📚 - Nginx 教程
📚