DESIGN DESIGN
  • 架构
  • 设计模式
  • 重构
  • UML
GitHub (opens new window)
  • 架构
  • 设计模式
  • 重构
  • UML
GitHub (opens new window)

Design

Design 是个人对于架构的心得和总结。

star fork build code style

☕ DESIGN 是个人对于软件系统架构的心得和总结。

架构之道,在于权衡;权衡之术,在于取舍。

  • 🔁 项目同步维护:Github (opens new window) | Gitee (opens new window)
  • 📖 电子书阅读:Github Pages (opens new window) | Gitee Pages (opens new window)

# 📖 内容

# 设计步骤

解决方案(Solution),就是针对某些已经体现出的,或者可以预期的问题、不足、缺陷、需求等等,所提出的一个解决整体问题的可行性方案。就软件系统而言,解决方案就是一个可以解决具体业务问题,并且可以落地的软件系统。

解决方案,毫无疑问是顶层系统设计,这需要设计者既懂技术,也懂业务。

# 第一步:需求分析

把所有需要的东西聚集在一起,审视问题。不停的提问,以至于我们可以明确使用场景和约束。讨论假设。

  • What:系统的作用是什么?系统的目标是什么?
  • Who:系统的用户群体是谁?
  • How:用户希望怎样使用系统?系统如何为用户提供服务?
  • How many:有多少用户?日活/月活有多少?——用户体量会极大的影响系统的性能要求,从而影响系统的规模和复杂度。
  • 容量:系统需要处理多少数据?
  • 并发量、吞吐量:系统需要每秒钟处理多少请求?
  • 读写比率:系统的读写比率是多少?——读多写少或写多读少决定了不同的架构方案。
  • How much:系统的预算是多少(包括物料、人力成本等)?
  • 输入输出:系统的输入输出分别是什么?

# 第二步:顶层设计

使用所有重要的组件来描绘出一个高层级的设计。

  • 画出主要的组件和连接
  • 证明你的想法

# 第三步:组件设计

对每一个核心组件进行详细深入的分析。

# 第四步:扩展设计

确认和处理瓶颈以及一些限制。举例来说就是你需要下面的这些来完成扩展性的议题吗?

  • 负载均衡
  • 水平扩展
  • 缓存
  • 数据库分片

# 分布式

# 分布式综合

  • 分布式面试总结

# 分布式理论

  • 分布式理论 - 关键词:拜占庭将军、CAP、BASE、错误的分布式假设
  • 分布式算法 Paxos - 关键词:共识性算法
  • 分布式算法 Raft - 关键词:共识性算法
  • 分布式算法 Gossip - 关键词:数据传播

# 分布式关键技术

  • 集群
  • 复制
  • 分区
  • 选主
# 流量调度
  • 流量控制 - 关键词:限流、熔断、降级、计数器法、时间窗口法、令牌桶法、漏桶法
  • 负载均衡 - 关键词:轮询、随机、最少连接、源地址哈希、一致性哈希、虚拟 hash 槽
  • 服务路由 - 关键词:路由、条件路由、脚本路由、标签路由
  • 服务网关
  • 分布式会话 - 关键词:粘性 Session、Session 复制共享、基于缓存的 session 共享
# 数据调度
  • 数据缓存 - 关键词:进程内缓存、分布式缓存、缓存雪崩、缓存穿透、缓存击穿、缓存更新、缓存预热、缓存降级
  • 读写分离
  • 分库分表 - 关键词:分片、路由、迁移、扩容、双写、聚合
  • 分布式 ID - 关键词:UUID、自增序列、雪花算法、Leaf
  • 分布式事务 - 关键词:2PC、3PC、TCC、本地消息表、MQ 消息、SAGA
  • 分布式锁 - 关键词:数据库、Redis、ZooKeeper、互斥、可重入、死锁、容错、自旋尝试
# 资源调度
  • 弹性伸缩
# 通信
  • 消息队列 - 关键词:重复消费、消息丢失、消息顺序性、消息积压
# 服务治理
  • 服务注册和发现
  • 服务监控
  • 服务链路监控
  • 服务容错
  • 服务编排
  • 服务版本管理
  • 流量调度
    • 流量控制 - 关键词:限流、熔断、降级、计数器法、时间窗口法、令牌桶法、漏桶法
    • 负载均衡 - 关键词:轮询、随机、最少连接、源地址哈希、一致性哈希、虚拟 hash 槽
    • 服务路由 - 关键词:路由、条件路由、脚本路由、标签路由
    • 服务网关

# 📚 资料

  • 书籍
    • 《大型网站技术架构:核心原理与案例分析》 (opens new window) - 浅显易懂的将解大型网站架构演进之路;简介了大型系统所面临的挑战以及核心技术点。
    • 《亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统》 (opens new window)
    • 大型网站系统与 Java 中间件实践 (opens new window)
    • 企业 IT 架构转型之道:阿里巴巴中台战略思想与架构实战 (opens new window) - 阐述阿里巴巴中台系统发展,更多的是讲解应用场景和能力,没有讲解技术细节。
    • 逆流而上:阿里巴巴技术成长之路 (opens new window) - 主要以运维的视角阐述系统运维中遇到的困难,定位思路以及解决方法。
    • 《Head First 设计模式》 (opens new window)
    • 《大话设计模式》 (opens new window)
    • 《重构——改善既有代码的设计》 (opens new window)
  • 教程
    • system-design-primer (opens new window)
    • 从 0 开始学架构 (opens new window)
    • 从 0 开始学微服务 (opens new window)
    • RPC 实战与核心原理 (opens new window)
    • 微服务架构核心 20 讲 (opens new window)
    • DDD 实战课 (opens new window)
    • Sparx UML 教程 (opens new window)
    • UML Tutorial (opens new window)
    • W3Cschool UML 教程 (opens new window)
    • https://sourcemaking.com/refactoring

# 🚪 传送

◾ 🏠 DESIGN 首页 (opens new window) ◾ 🎯 钝悟的博客 (opens new window) ◾

你可能会感兴趣:

  • Java 教程 (opens new window) 📚
  • JavaCore 教程 (opens new window) 📚
  • JavaTech 教程 (opens new window) 📚
  • Spring 教程 (opens new window) 📚
  • Spring Boot 教程 (opens new window) 📚
  • 数据库教程 (opens new window) 📚
  • 数据结构和算法教程 (opens new window) 📚
  • Linux 教程 (opens new window) 📚
  • Nginx 教程 (opens new window) 📚
文章分类
设计 64 架构 24 微服务 3 综合 10 安全 2 解决方案 8 设计模式 27 重构 7 DDD 1 UML 4
热门标签
编程 设计 架构 微服务 安全 认证 授权 OAuth 2.0 解决方案 设计模式 重构 面试 DDD UML 测试 代码的坏味道 分布式 性能 高可用 伸缩性 扩展性
Theme by Vdoing | Copyright © 2019-2024 钝悟(dunwu) | CC-BY-SA-4.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×