本周系统设计复习:
- 工程师必读的 9 大博客
- 6 个将代码转换为精美图表的工具
- 什么是 DevSecOps?
- 系统设计中的前 5 个权衡
- 前 8 个缓存淘汰策略
6 个图表工具
1. Diagrams
Python 库,用于绘制云系统架构。
2. Go Diagrams
Go 语言的图表库。
3. Mermaid
JavaScript 库,用于在 Web 上创建图表和可视化。
4. PlantUML
基于文本的 UML 图表工具。
5. ASCII 图表
使用 ASCII 字符创建简单图表。
6. Markmap
Markdown 思维导图工具。
DevSecOps
DevSecOps 作为 DevOps 实践的自然演变出现,专注于将安全集成到软件开发和部署过程中。术语”DevSecOps”代表开发(Dev)、安全(Sec)和运维(Ops)实践的融合,强调在整个软件开发生命周期中安全的重要性。
下图显示了 DevSecOps 中的重要概念。
DevSecOps 关键概念
- 自动化安全检查
- 持续监控
- CI/CD 自动化
- 基础设施即代码(IaC)
- 容器安全
- 密钥管理
- 威胁建模
- 质量保证(QA)集成
- 协作与沟通
- 漏洞管理
系统设计中的权衡
一切皆是权衡。 一切皆是妥协。 没有正确或错误的设计。
下图显示了一些最重要的权衡。
5 大权衡
- 成本 vs. 性能
- 可靠性 vs. 可扩展性
- 性能 vs. 一致性
- 安全 vs. 灵活性
- 开发速度 vs. 质量
缓存淘汰策略
1. LRU(最近最少使用)
LRU 淘汰策略首先移除最近最少访问的项目。这种方法基于最近访问的项目在不久的将来更可能被再次访问的原则。
2. MRU(最近最多使用)
与 LRU 相反,MRU 算法首先移除最近使用的项目。这种策略在场景中很有用,其中最近访问的项目不太可能很快再次被访问。
3. SLRU(分段 LRU)
SLRU 将缓存分为两个段:试用段和保护段。新项目最初放置在试用段中。如果试用段中的项目再次被访问,它被提升到保护段。
4. LFU(最少频率使用)
LFU 算法淘汰访问频率最低的项目。
5. FIFO(先进先出)
FIFO 是最简单的缓存策略之一,其中缓存行为像队列,首先淘汰最旧的项目,无论它们的访问模式或频率如何。
6. TTL(生存时间)
虽然不是严格的淘汰算法,TTL 是一种策略,其中每个缓存项目被赋予特定的生命周期。
7. 两层缓存
在两层缓存策略中,我们使用内存缓存作为第一层,分布式缓存作为第二层。
8. RR(随机替换)
随机替换算法随机选择一个缓存项目并淘汰它以为新项目腾出空间。这种方法实现简单,不需要跟踪访问模式或频率。
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP109: Top 6 Tools to Turn Code into Beautiful Diagrams。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。