手把手教你做系统设计 | 青训营笔记

137 阅读3分钟

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

一、课程主要内容

  1. 系统设计方法论;
  2. 电商秒杀业务介绍:秒杀业务是电商的一项重要的业务,先要进行了解;
  3. 课程实践;
  4. 课程总结

二、详细知识罗列

  • 为什么要做系统设计:对个人来说最直接的就是为了面试,同时也是直接提升个人能力和拓展技术视野的方式;对工作来说业务的要求让我们去设计系统,系统重构和突破创新,例如直播电商就是对传统电商的创新。
  • 如何去评估一个系统:可用性、安全性、扩展性、易用性、可维护性、性能等,有一个直观的印象;
  • 系统设计有标准的流程吗:肯定是有的包括(1)场景分析:做什么系统,需要哪些功能,多大的并发量;(2)存储设计:数据如何组织;(3)服务设计:业务功能实现和逻辑整合;(4)可扩展性:解决设计缺陷,提高鲁棒性和可扩展性。
  • 电商秒杀业务的特点:限时流量高,比如双十一零点很多人等着抢货;读多写少;实时性要求高,下了单的人要很快看到订单;
  • 秒杀的挑战:资源成本有限,很好理解;反欺诈,例如黄牛奸商的扰乱;防止超卖,限量的商品不能买超最基本的;流量管控,要对无用的流量进行过滤;扩展性和鲁棒性;
  • 如何设计秒杀系统?场景功能:秒杀活动发布功能;秒杀商品详情;秒杀下单功能;场景并发:几万人参与,很高的读操作;要用三级存储:MySQL->redis->cache;流量隔离、CDN离得近的节点更快、服务水平扩展垂直扩展; QQ图片20230205104212.jpg
  • 课程实践部分老师带领具体去学习秒杀业务的代码:spu、sku,乐观锁机制保证不超卖、为了提高性能,讲商品的详情缓存到redis里面、下单业务中,把用户登录后的信息转化成一个model传到业务层进行操作、db性能差,行锁、get+decrease不是原子操作不可以,decrease也不可以,要拉脚本扣库存、比较重要的是线程数,要通过压测具体配置、分布式锁每个锁得uid都不一样,防止误删、
  • 服务无状态、批量写入、最终一致性

三、总结

2023.2.5学习打卡,本次实践课带领我们学习了电商系统的原理,具体实现的方法,带我们用实例进行测试,学到很多东西的,特别是之前只参与这些秒杀活动,当把这些用作工程开发后,才知道这个是如何实现的。

四、参考引用

「【实践课】手把手教你做系统设计」第五届字节跳动青训营 - 后端专场