Java如何做系统设计| 青训营笔记

89 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 11 天

前言

本文章记录了手把手教你做系统设计的学习的部分内容,记录了今天所学习的部分知识

1.系统设计方法论

1.1系统设计的那些问题

  1. 系统设计的那些问题
  2. 系统设计的定义是什么
  3. 系统设计的定义是什么地一个系统
  4. 系统功能实现之后,如何分析瓶颈并优化
  5. 如何验证系统的可用性和稳定性

1.2为什么要做系统设计

对个人:

  1. FOR面试
  2. 个人能力提升
  3. 拓展技术视野

对工作:

  1. 业务驱动
  2. 系统重构
  3. 突破和创新

1.3如何评估一个系统

  1. 可用性
  2. 易用性
  3. 安全性
  4. 扩展性
  5. 可维护性
  6. 性能
  7. 耦合性
  8. 伸缩性

1.4系统设计的定义

系统:

  1. 关联的个体
  2. 规则的运作
  3. 组成工作的整体

设计:

  1. 设想和计划
  2. 目的
  3. 过程安排

2.操作系统设计标准流程

  1. 场景分析
  2. 存储设计
  3. 服务设计
  4. 可扩展性

3.如何发现系统的瓶颈

  1. 火焰图分析
  2. 链路追踪
  3. 性能测试

4.如何保证可用性和稳定性

  • 链路梳理
  1. 核心链路
  2. 流量漏斗
  3. 强弱依赖
  • 可观测性
  1. 链路追踪
  2. 核心监控
  3. 业务报警
  • 全链路测试
  1. 压力测试
  2. 负载测试
  3. 容量测试
  • 稳定性控制
  1. 系统限流
  2. 业务兜底
  3. 熔断降级
  • 容灾演练
  1. 混沌工程
  2. 应急手册
  3. 容灾预案

5.秒杀业务的特点

  1. 瞬时流量高
  2. 读多写少
  3. 实时性要求高

6.秒杀的挑战

  1. 高性能
  2. 资源成本
  3. 反欺诈
  4. 流量管控
  5. 扩展性
  6. 鲁棒性

引用参考

参考的部分内容来源于以下课程:

  • 【实践课】手把手教你做系统设计