这是我参与「第五届青训营 」伴学笔记创作活动的第11天
重点概览
- 系统设计方法论
- 电商秒杀业务介绍
详细介绍
系统设计
系统设计是指对系统的功能、性能、可靠性、安全性、易用性、可扩展性等特性进行详细设计,并确定各个部分间的接口、协议、通信方式、数据格式等。系统设计是软件工程的一个重要环节,旨在通过对需求进行分析,制定出可行的、经济的、可扩展的、可维护的系统解决方案,为后续的实现提供指导。
-
为什么要做系统设计? 个人 For面试 个人能力提升 拓展技术视野 工作 业务驱动 系统重构 突破和创新带来的系统设计
-
如何评估一个系统? 可用性 安全性 扩展性 易用性 性能 耦合性 可维护性 伸缩性
-
系统设计的定义 系统 关联的个体 规则运作 组成工作的整体 设计 设想和计划 目的 过程安排 定义: 为了达成某种目的, 通过个体组成整体的过程
-
4S分析法:
- Scenario 场景:需要设计哪些功能,设计的质量性能等等需要有什么要求
- Service 服务:大系统拆分成小系统
- Storage 存储:数据如何存储,如何访问
- Scale 升级:优化维护,解决缺陷,处理可能遇到的问题
-
如何分析系统瓶颈和优化
- 火焰图分析
- 链路分析
- 全链路压测
-
如何验证系统的可用性和稳定性
- 链路梳理
- 可观测性
- 全链路测试
- 稳定性控制
- 容灾演练
电商秒杀业务
电商平台业务:电商平台业务是一种在线市场平台,它允许商家在线销售商品和服务,消费者可以在线购买。它们通常提供购物车功能,以及支付和配送管理。常见的电商平台包括亚马逊,天猫,京东等。
秒杀业务特点:
- 限时特价:通常在一定时间内提供限量的商品,以促销的方式吸引顾客购买。
- 快速抢购:顾客必须在规定的时间内购买,否则将无法获得特价商品。
- 高效稳定:电商秒杀业务需要具有高效稳定的技术支持,以应对大量用户的同时访问。
- 实时信息:提供实时的商品信息,如剩余数量和销售情况,以帮助顾客决策。
- 抢购热情:秒杀活动通常能引发顾客的抢购热情,从而提高销售额。
SPU: Standard Product Unit 标准化产品单元
SKU: Stock Keeping Unit 最小存货单位
秒杀挑战:
资源有限性:指系统内部的资源,如内存、带宽、硬盘空间等,是有限的。
反欺诈:指采取措施来防止欺诈行为的发生。
高性能:指系统的运行速度快、效率高。
防止超卖:指防止商品被卖完后,仍有客户购买到该商品。
流量管控:指对系统内部或外部的流量进行管理和控制,以保证系统正常运行。
扩展性:指系统具有较强的可扩展性,可以根据业务需求进行扩展。
鲁棒性:指系统具有较强的鲁棒性,即能够适应各种情况,不容易出错。
系统架构图
流程图
补充
Redis
Nosql 基本概念
为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。
NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。
Nosql 分类
- 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对 优势: 快速查询 劣势: 存储的数据缺少结构化
- 列存储数据库 相关产品:Cassandra, HBase, Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限
- 文档型数据库 相关产品:CouchDB、MongoDB 典型应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型: 一系列键值对 优势:数据结构要求不严格 劣势: 查询性能不高,而且缺乏统一的查询语法
- 图形(Graph)数据库 相关数据库:Neo4J、InfoGrid、Infinite Graph 典型应用:社交网络 数据模型:图结构 优势:利用图结构相关算法。 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
Redis 基本概念
Redis是使用c语言开发的一个高性能键值数据库。Redis可以通过一些键值类型来存储数据。 键值类型: String字符类型 map散列类型 list列表类型 set集合类型 sortedset有序集合类型
RocketMQ
RocketMQ和RabbitMQ的区别?
- 架构:RocketMQ采用分布式架构,而RabbitMQ是一个中心化的消息队列系统。
- 集群支持:RocketMQ支持高可用性和可伸缩性,支持海量消息处理,而RabbitMQ也支持集群,但不如RocketMQ强大。
- 消息存储:RocketMQ支持存储消息,以便确保消息不丢失,而RabbitMQ默认不存储消息,需要开启持久化选项。
- 消息分发:RocketMQ支持消息的广播和点对点模式,支持负载均衡和顺序消息,而RabbitMQ也支持多种消息分发模式。
- 消息投递:RocketMQ支持消息的可靠性投递,而RabbitMQ支持消息的可靠性和异步投递。