这是我参与「第五届青训营 」伴学笔记创作活动的第十四天。今天学习了如何设计系统的课程,老师带我们从零开始分析一个系统如何设计,最后讲解了一个秒杀系统的源码让我们学习了一些秒杀系统的细节。
无论是对于我们个人还是工作,做系统都是我们避不开的一环,我们需要系统来整合和熟悉我们的知识,同时这也是我们的工作。系统设计是为了达到某种目的,通过个体组成整体的过程,这个过程中有哪些流程呐?
- 场景分析:关于什么的系统,有哪些功能,有多大的开发量。
- 存储分析:数据如何组织,sql存储?nosql存储?
- 服务设计:业务功能的具体实现和逻辑整合。
- 可扩展性:考虑如何解决设计缺陷,提高可扩展性。
系统完成之后我们还需要借助火焰图分析、链路追踪和性能测试来发现系统性能的瓶颈。
之后老师带我们分析了一个实际的电商秒杀项目,秒杀系统与别的系统不同的点在于它具有瞬时流量高、读多写少和对实时性要求高的特点,这需要我们在代码层面需要注意这些方面。从之前讲解的流程出发,老师给我们分析了每个流程的具体细节:
- 场景:系统需要的功能有秒杀活动发布、秒杀商品详细、秒杀下单,我们需要考虑到万人参与秒杀的流量能否抗住。
- 存储:在存储方面系统采用MySql->Redis->Localcache三层存储的结构来提高读写的速度。
- 服务:该系统所具有的子服务为用户服务、风控服务、获得服务、订单服务,所依赖的基组件有ID生成器、缓存组件、MQ组件、限流组件。
- 扩展:我们需要考虑流量隔离、CDN、缓存优化等方面的扩展。