一:背景
如何实现短链系统?
如何实现轨道交通系统?
如何实现实时弹幕系统?
二:分析思路
【分层架构】数据层、决策层、执行层、视图层等(总分结构、一对多结构。。)
数据层:数据怎么获取,数据怎么存储(索引加快查询速度、ES等,内存优化压缩、安全性加密等等)
处理层:数据层的组装部分,组装不同的数据进行处理。可能为组装、过滤、排序、映射等。
执行&决策层:接受视图层的数据,分析数据的来源,编排如何处理。
视图层:用户看到的真实数据。用户的需求,例如看到商品、点击商品、加购等等。
【业务分析】画出E-R图,抽象出系统程序流程。自上而下或者自下而上bfs思考业务整体的过程。
【稳定性】实时监控、支持水平垂直扩容、熔断降级、风控、日志、兜底、下游失败告警等
【效率和性能】支持多线程并发、异步、缓存、索引、CDN、RPC/HTTP协议优化、分片和批量调用下游。。。
三:提高系统性能的方式
1.批量
2.下沉
3.同步改异步
4.并行请求
5.分片
四:漏斗效率&提升CPU效率、资源
1.下沉,把过滤地方统一放到一处
2.重复计算的地方放到一个通用缓存
3.升级版本
4.先截断后填充物料,而不是先填充物料后截断。
5.走离线方案
五:项目设计题思路
基本上设计选型mq redis解决
技术优化就是异步、缓存、读写分离、索引等
一些坑点:一致性、
六:稳定性考虑
兜底、降级、监控、限流
七:一致性解决方案
分步骤的最终一致性:rocketmq、版本号
参考:
https://www.bilibili.com/video/BV1CP4y1V7dn/?spm_id_from=333.999.0.0&vd_source=282955649f92cc8793739db9b1769bef
https://www.bilibili.com/video/BV1Fr4y1v7NU/?spm_id_from=333.999.0.0
完整一致性:加锁、分布式事务
参考:https://www.bilibili.com/video/BV1rT4y117sw/?spm_id_from=333.999.0.0&vd_source=282955649f92cc8793739db9b1769bef
八:提高水位的方法
1.放开自动扩缩容限制
2.线程池调参