系统设计-秒杀系统|青训营笔记

46 阅读3分钟

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

定义

在软件工程中系统设计也是在软件周期的第二个阶段,详细设计重要的一个部分。

系统设计是根据系统分析的结果,运用系统科学的思想和方法,设计出能最大限度满足所要求的目标 (或目的) 的新系统的过程。系统设计内容,包括确定系统功能、设计方针和方法,产生理想系统并作出草案,通过收集信息对草案作出修正产生可选设计方案,将系统分解为若干子系统,进行子系统和总系统的详细设计并进行评价,对系统方案进行论证并作出性能效果预测。

WHY

为什么要做系统设计呢,从个人而言,技术的提升、面试的生化、扩展自己的视野。从工作而言为了业务驱动、系统重构、突破和创新。

系统设计最重要的是提高了团队的工作效率,个自己的工作效率,将一个大模块给系统化,分成很多的子系统,逐步的解决的小系统的问题,自然就提高了工作效率。

HOW

如何做系统设计呢?这里是有个流程的。可以按照场景分析、存储设计、服务设计、可扩展性。这样来设计系统。、

  • 场景分析也就是对于自己的软件应用于什么系统、或者说对于软件要具备什么功能的分析。
  • 存储设计也就是数据库的设计,建立每个表之间的联系。
  • 服务设计也就是业务逻辑代码,可以这样通俗的理解。
  • 可扩展性就是为了满足以后软件使用方的各个需求来进行业务逻辑的扩展,或者说是对于接口功能的扩展等。

电商秒杀业务

电商简要的用例图介绍

  • 人:消费则,可以进行登录,crud数据等操作。
  • 场景:线上,线下,提供交易的环境,进行一些服务的转发操作。
  • 货物:商家,商品等属性,以及具备的功能。

秒杀业务的特点

瞬时流量高、读多写少、实时性要求极高、高并发、、、

高并发的挑战

高性能、资源成本、防止超卖、扩展性、流量管控、反欺诈、等等

具体实现的系统设计

在场景上:功能的考虑,和并发的处理

在存储上:设置中间件缓存redis、和本地缓存Localcache,自己的数据库mysql

服务:用户服务、活动服务等

扩展性:流量隔离、数据库扩展、redis扩展、缓存优化等。

系统架构

用户层:web iOS、android

接入层:Nginx

应用层:id生成器、MQ组件等cache组件

基础层:redis、mysql、RocketMQ等

总结

笔者简要概括了一下系统设计的要点以及用电商业务来进行了举例仅供参考

引用

百度百科

青训营