这是我参与「第五届青训营 」笔记创作活动的第9天。 该日笔记整理分两大部分。
系统设计:
评估系统设计的方法:安全性,易用性,扩展性,耦合性等。
定义:为了达成某种目的,由个体组成为整体的过程。 一个比较惯例的流程如下:
- 场景分析(Scenario)
- 存储设计(Storage)
- 服务设计(Service)
- 可扩展性(Scale)
发现系统瓶颈的方法:火焰图分析,链路追踪和性能测试。
保证可用性和稳定性的方法为如下几点:
- 链路梳理(核心链路,流量漏斗,强弱依赖)
- 可观测性(链路追踪,核心监控,链路报警)
- 全链路测试(压力测试,负载测试,容量测试)
- 稳定性控制(系统限流,。。。。。。)
- 容灾演练(混沌工程&应急手册等)
例子:电商秒杀系统设计:
分析:要求实时,处理速度快,瞬时流量高,并发性高等。
设计存储:
graph TD
MySQL --> Redis
Redis --> Localcache
设计服务: 用户,风控,订单,活动。需要ID生成器,缓存组件等。
为保证性能设计扩展:流量隔离,CDN,流量管控,缓存优化等。
可以得到一个架构:
以及最终的秒杀流程图:
黑灰产监控防御:
国内一些常见的黑产如诈骗,薅羊毛,黄牛,木马等。 黑色产业链规模随着互联网的壮大而不断壮大,因此对其监控与防御十分重要。黑产团伙的发展趋势:规模化,组织化,平台化。
常见的黑产技术流程分析如下: 如某银行的业务流程,其中的一些识别部分,黑产中进行人脸识别对抗与地理位置识别对抗。
安全防护体系的建设:
- 事前:情报监控,SDLC,漏洞扫描
- 事中:渗透测试,安全感知,风控&安全策略。
- 事后:威胁建模,攻击溯源
有安全SDK,WAF,IDS,DLP等方式。
这两节课都是实践性比较强的设计与问题分析课,在这个过程中本人学到一些开发过程中处理实际问题的能力。