底层逻辑尤其要保证单一,一个能力只提供一种方法。想要更多,通过上层组合、上层封装来实现。千万不要把所有需求都放到底层原子能力上。
核心:底层单一,上层组合
底层逻辑尤其要保证单一,一个能力只提供一种方法。
想要更多,那么通过上层组合、上层封装来实现。
千万不要把所有需求都放到底层原子能力上,虽然有些看起来好改,实际就是埋大坑。
符合设计原则、编程哲学是很重要和长久的。
来一个需求找一个好改的方式,这个评估维度是片面和短视的。
一个例子:网卡带宽
这个带宽控制是从精细化到模糊化管理。
- 从 iaas 的角度,这个管理方式是合理的,能适配多样化产品形态;
- 从产品的角度,需设计好统一的、标准化的控制方法。
nic 是网卡维度的控制; instance_extra 是云主机维度的控制; server.yaml 是全局控制。
看起来合理,实际没有人捋清楚,看代码看很久。每次梳理了就忘。
合理的方式应该是:
- 底层保持单一,容易理解;
- 云主机调整和全局的调整可以通过 api 来实现。
这样比较明确,以后也可以实现大会上说的"功能使用频率统计"。
批量、整体,这类操作,千万不要隐藏在配置或者底层的逻辑中,一定要以功能、api 的方式提供。
这样明确、可量化统计、可观测、可追溯。
小结
- 底层逻辑尤其要保证单一,一个能力只提供一种方法;
- 想要更多,通过上层组合、上层封装来实现;
- 千万不要把所有需求都放到底层原子能力上,那是埋大坑;
- 批量、整体操作,一定要以功能、api 的方式提供;
- 这样明确、可量化统计、可观测、可追溯。