知识卡片

点对点接口数量随系统数平方增长

普通读书笔记卡 · 2077

内容

如果n个系统两两之间都要直接交换信息,需要的接口数量是n(n-1)/2——3个系统要3个接口,10个系统要45个。系统数量线性增长,接口维护成本却是平方级增长:改一个接口定义就要连带重新设计另外n-1个接口。解法是引入集成hub:每个系统只对接一次hub,统一负责路由、弹性等能力,代价是hub会变成单点故障和可伸缩性瓶颈。发散:这是”该不该引入中间层”这个通用问题在系统集成场景下的具体版本。

参考来源

- 位置:第18章《信息视点》18.3.4节「接口复杂」问题和缺陷(源文件:_epub-src/OEBPS/text00241.html附近) - 结论依据:原文明确给出n个系统需要n(n-1)/2个接口的公式,并说明改一个接口需连带重新设计n-1个接口,随后给出集成hub作为降低风险的措施及其单点故障/可伸缩性瓶颈的代价,直接支持卡片结论。 - 原始内容:"对于三个系统,就需要三个接口;对于四个系统,需要六个。在最坏的情况下,如果你的架构包含n个系统,每个都需要与其他系统交换信息,那么你就需要创建n(n-1)/2个接口……如果n个系统中有一个的接口定义发生了改变,那么你需要对(n-1)个接口进行重新设计、重新编码、测试和部署……当接口需求很复杂的时候,你可以考虑应用叫做集成hub的架构样式……中心hub也有缺点,它们通常会成为单一故障点,可能会是可伸缩性的瓶颈。"