知识卡片
规模复杂度的本质是量变引起质变
内容
系统的”复杂”很多时候不是因高性能高可用可扩展性要求高,而单纯是规模:功能点多、数据量大。假设功能两两相关,复杂度≈功能数+连接数,连接数按组合数指数增长——功能从3到8个,复杂度从6跳到36。数据规模同理:MySQL单表5000万行内良好,到10亿行后加索引、改表结构都成高风险操作,逼着分库分表,又引入新复杂度。发散:功能越多,内部关联增长远比看起来更快,是判断”要不要拆系统”的直观依据。
参考来源
- 位置:《从0开始学架构》第9章《07|复杂度来源:低成本、安全、规模》"规模复杂度"一节(源文件:_epub-src/OEBPS/Text/part0008_split_004.html)
- 结论依据:原文给出模型"系统的复杂度=功能数量+功能之间的连接数量",并明确"具备8个功能的系统的复杂度不是比具备3个功能的系统的复杂度多5,而是多了30,基本是指数级增长的";数据规模方面"MySQL单表……一般推荐在5000万行左右。如果因为业务的发展,单表数据达到了10亿行,就会产生很多问题"。
- 原始内容:系统的复杂度=功能数量+功能之间的连接数量……具备8个功能的系统的复杂度不是比具备3个功能的系统的复杂度多5,而是多了30,基本是指数级增长的……MySQL单表的数据……一般推荐在5000万行左右。如果因为业务的发展,单表数据达到了10亿行,就会产生很多问题。