系统设计核心组件选型
一个选错数据库的教训
2023年,我们团队为新项目选型数据库。
开发同学说:"MongoDB 灵活,直接用吧!"
三个月后,系统上线。问题来了:
- 需要强事务的订单场景,MongoDB 不支持
- 需要复杂 JOIN 的报表场景,MongoDB 不支持
- 需要精确全文搜索的场景,MongoDB 全文索引不够用
最后,系统里出现了 MySQL + MongoDB + Elasticsearch 三种数据库,复杂度爆炸。
系统设计的核心能力之一是:正确选择每个组件。
二、数据库选型🔴
2.1 关系型 vs NoSQL
2.2 选型决策
2.3 分库分表策略
三、缓存选型🔴
3.1 缓存对比
3.2 缓存模式
四、消息队列选型🔴
4.1 队列对比
4.2 选型决策
五、搜索引擎选型🟡
5.1 搜索对比
5.2 Elasticsearch 使用场景
六、存储选型总览🟡
6.1 决策框架
6.2 成本估算
【架构权衡】 组件选型的核心原则是合适就好。不要为了一致性牺牲性能,也不要为了性能牺牲可靠性。每个组件都有其适用场景。