这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
系统设计
-
为什么要做系统设计
- 人们需要进行系统设计,以便制定一个全面的计划,以确定系统应该如何工作。这个计划对于确保系统正常运行并满足预期用户的需求至关重要。要考虑系统的所有方面,如界面、架构和安全措施,以便创建一个有效的设计。还要考虑系统的可伸缩性和灵活性,以确保系统能够随着需要而发展和适应。一个经过深思熟虑的计划将有助于确保系统高效、可靠和经济有效。
- 工作上需要系统设计,它可以帮助企业更好地实现自身的业务目标和发展战略。系统设计可以极大地提高企业的工作效率,帮助企业更有效地利用资源,更好地满足客户的需求,更加紧密地结合企业的战略和目标,从而更快地实现企业的发展目标。此外,系统设计还可以帮助企业更好地控制风险,提高企业的综合素质,提升企业的核心竞争力,帮助企业实现长期可持续发展。
-
系统设计是创建系统组织和功能计划的过程。它涉及决定系统应该做什么,如何做,以及如何与其他系统交互。
-
如何做系统设计
- 场景分析:什么系统,需要什么功能,多大的并发量
- 存储设计:数据如何组织,SQL存储/no-SQL存储
- 服务设计:业务功能实现和逻辑整合
- 可扩展性:解决设计缺陷,提高鲁棒性,扩展性
-
如何分析系统瓶颈和优化
- 火焰图分析
- 链路分析
- 全链路压测
-
如何验证系统的可用性和稳定性
- 链路梳理是一种非常有用的技术,可以帮助我们更好地理解复杂网络中的系统、运行状态以及可能出现的问题。它可以帮助我们梳理整个网络的拓扑结构,从而使我们能够更好地定位故障,快速定位故障源,并迅速采取有效措施进行网络修复和维护。此外,链路梳理还可以帮助我们优化网络,使网络的效率得到提升,网络的可靠性和安全性也能得到更大的程度的保障。
- 可观测性是指一个系统的能力,以便通过对它的监测和测量来获取、理解和确定它的行为或状态。它主要是通过手段来获取信息,这些手段包括链路追踪,核心监控等,从而使系统行为或状态变得有规律可循。可观测性也是实施某种控制或监控系统的核心要素,它可以确保系统的可靠性,并使用户能够更好地了解系统的状态和行为,以便采取更有效的行动。
- 全链路测试是一种全面而有效的测试方式,它包括压力测试、负载测试和容量测试,这些测试方法可以检测应用程序的性能表现,确定系统能否承受更大的压力,以及改进应用程序的整体性能。这些测试都可以帮助开发者和管理者更好地理解系统的状态,以及在不同情况下系统的表现,从而更好地优化系统,达到最佳性能。
- 稳定性控制,应该采取一些措施来保障系统的稳定性,比如系统限流,增加容错能力,以及业务兜底,最后可以考虑采用熔断降级的方式。这样可以有效的降低系统的压力,从而避免出现不可控的情况,保障系统的稳定性。
- 容灾演练是一种极具挑战性的混沌工程,它需要全面考虑各种可能性,提供有效和可行的应急手册,以及容灾预案,以确保在灾难发生时,能够及时采取有效措施,降低损失降低风险。
电商和秒杀
基本概念
- Spu:标准产品单元。SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。
- Sku:存货单元。SKU即库存进出计量的单位(买家购买、商家进货、供应商备货、工厂生产都是依据SKU进行的),在服装、鞋类商品中使用最多最普遍。 例如纺织品中一个SKU通常表示:规格、颜色、款式。 SKU是物理上不可分割的最小存货单元。也就是说一款商品,可以根据SKU来确定具体的货物存量。
- 秒杀业务的特点:瞬时流量高,读多写少,实时性能要求高
秒杀的挑战
- 资源有限性
- 反欺诈
- 高性能
- 防止超卖
- 流量管控
- 扩展性
- 鲁棒性
设计秒杀系统
4S分析
- 场景
- 存储
- 功能
- 扩展