系统设计|青训营笔记

92 阅读2分钟

这是我参与【第五届青训营】伴学笔记创作活动的第10天,

系统设计方法论

为什么要做系统设计:工作方面业务驱动、系统重构、突破和创新,为了解决问题

评估一个系统:可用性、安全性、性能等方面

系统设计定义:系统是一个关联的个体,按照规则运作组成工作的整体,系统设计就是为了达到某种目的,通过个体组成整体的过程

系统设计标准流程:

1.场景分析

2.存储设计

3.服务设计

4.可扩展性

发现系统的瓶颈:火焰图分析、链路追踪、性能测试

电商秒杀业务介绍

电商三要素:人、货、场

商品:具有交易价值和属性的信息载体

秒杀业务的特点:

  • 瞬时流量高

  • 读多写少(查看商品)

  • 实时性要求高

秒杀的挑战:资源成本、高性能、扩展性、反欺诈、流量管控等

如何设计秒杀系统

1.场景

  • 秒杀活动发布
  • 商品详情
  • 秒杀下单

以及并发量

2.存储

三级存储:底层MySQL;中层Redis;高层Localcache

3.服务

  • 子服务

  • 基础组件:ID生成器、缓存组件、MQ组件、限流组件

4.扩展

流量隔离、CDN、缓存优化、流量管控、数据库扩展等

系统架构图

用户层:WEB、IOS、Android

接入层:Nginx

应该层:组件和场景

基础层:存储

课程实践

代码实践

课程总结

对高性能高并发系统提炼的核心点:

1.服务无状态:横向扩展

无状态:就是当前的应用不存储状态

2.批量写入(降低系统压力非常有效的一个方式,在非常大的Mysql写入都用到了批量写入)

3.最终一致性:用Redis做缓存等都会产生新的副本,在过程中数据可能会有短暂的不一致,但是最终都会达到一致性