【业务设计题】分析思路

一:背景
如何实现短链系统?
如何实现轨道交通系统?
如何实现实时弹幕系统?

二:分析思路
【分层架构】数据层、决策层、执行层、视图层等(总分结构、一对多结构。。)
数据层:数据怎么获取,数据怎么存储(索引加快查询速度、ES等,内存优化压缩、安全性加密等等)
处理层:数据层的组装部分,组装不同的数据进行处理。可能为组装、过滤、排序、映射等。
执行&决策层:接受视图层的数据,分析数据的来源,编排如何处理。
视图层:用户看到的真实数据。用户的需求,例如看到商品、点击商品、加购等等。
【业务分析】画出E-R图,抽象出系统程序流程。自上而下或者自下而上bfs思考业务整体的过程。
【稳定性】实时监控、支持水平垂直扩容、熔断降级、风控、日志、兜底、下游失败告警等
【效率和性能】支持多线程并发、异步、缓存、索引、CDN、RPC/HTTP协议优化、分片和批量调用下游。。。

先分析业务逻辑,按照业务逻辑处理。尽可能分块,此时可能考虑设计模式。
然后考虑性能,哪一块可能是耗时最高的地方?QPS大致多少等?可以从业务层面或者从技术中间件层面优化。
考虑稳定性等等。

三:优化速度
1.批量
2.下沉
3.同步改异步
4.并行请求
5.分片

—冷门技巧–
1.分库分表
2.冷热分离

四:漏斗效率&提升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.线程池调参

九:优化内存
看到底耗内存的地方在哪里,通过计算一下是否符合预期。
一般可以用内存池等。上网查查资料也许是内存分配不均等问题。

十:设计模式
如果有绝大部分代码公用,就用if
如果只有60%代码公用,就用抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值