手把手教你做系统设计初探

前言: \textcolor{Green}{前言:} 前言:

💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营
💞从这个专栏里面可以迅速获得Go的知识

今天的目标是为了如何进行系统设计,我们进行系统设计的时候需要有很多的考量。同时我们还要通过各种方式来进行我们的系统设计,通过这次的学习明白系统设计的重要性。

1.系统设计方法论

系统设计的问题:

  • 为什么要做系统设计
  • 系统设计的定义是什么
  • 怎么做系统设计,如何落地一个系统
  • 系统功能实现之后,如何分析瓶颈并优化
  • 如何验证系统的可用性和稳定性

为什么要做系统设计

  • 对于个人来说
    • 可以克服面试
    • 个人能力提升
    • 拓展技术视野
  • 对于工作来说
    • 业务驱动
    • 系统重构
    • 突破和创新

目标就是解决这些问题

如何评估一个系统

我们可以通过以下几个方面来评估一个系统

  • 可用性
  • 安全性
  • 扩展性
  • 易用性
  • 性能
  • 耦合性
  • 可维护性
  • 伸缩性

系统设计的定义

  • 系统
    • 关联的个体
    • 规则运作
    • 组成工作的整体
  • 设计
    • 设想和计划
    • 目的
    • 过程安排

定义:为了达成某种目的,通过个体组成整体的过程。

如何做系统设计

俗称 4s:分别为场景、存储、服务、扩展

  • 场景分析(Scenario):什么是系统,需要哪些功能,多大的并发量
  • 存储设计(Storage):数据如何组织,Sql存储,NoSql存储
  • 服务设计(Service):业务功能实现和逻辑整合
  • 可扩展性(Scale):解决设计缺陷,提高鲁棒性、扩展性

如何发现系统的瓶颈

  • 火焰图分析:火焰图(FlameGraph)是 svg 格式的矢量图,是先通过 perf 等工具分析得到结果,并将该结果生成的具有不同层次且支持互动的图片,看起来就像是火焰,这也是它的名字的由来。
  • 链路追踪:链路追踪(tracing)即调用链监控,特点是通过记录多个在请求间跨服务完成的逻辑请求信息,帮助开发人员优化性能和进行问题追踪。链路追踪可以捕获每个请求遇到的异常和错误,以及即时信息和有价值的数据。
  • 性能测试:性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

如何保证可用性和稳定性

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

食用本项目需要明确:

MySQL

安装MySQL,推荐使用MySQL8及以上版本
熟悉ddl,dml等基础语法
了解sql优化

Redis

安装Redis,推荐最新版本
了解Redis的基本数据类型和使用场景
熟悉常用命令
了解Lua脚本的使用
了解Redis分布式锁

RocketMQ

安装RocketMQ,推荐最新版本
了解RocketMQ的基础概念和架构
了解MQ的使用场景
了解生产者如何保证消息的可靠性发送
了解消费者如何保证幂等
了解消费者pull和push模式的区别

OpenResty

安装OpenResty,推荐最新版本
了解Nginx的基础概念和使用
了解Lua脚本的语法

Linux

熟悉常用命令
熟悉进程和线程
了解Linux调优

Java

按照JDK,推荐JDK11
熟悉Java基础语法和lambda表达式
熟悉idea的使用
了解并发编程
了解springboot框架的使用
了解maven的使用

Jmeter

安装Jmeter
了解使用Jmeter压测

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦 羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值