57 有舍才有得

来源:互联网 发布:mac怎么显示图片尺寸 编辑:程序博客网 时间:2024/05/16 15:01

有时,接受某种约束或放弃某个特性,可带来更好的架构,这种架构在构建和上都会更加简单,而且成本更低。假设期望的理想特性有3种,试图定义和构建支持所有这3种特性,则可能一无长处。

一个著名的例子是布鲁尔猜想,也被称为一致性、可用性和分区,即CAP定理。该生理提出,在分布式系统中通常期望的3个特性,即一致性、可用性和分区容错性是无法同时锋利的。试图同时拥有三者,将大幅增加工程费用,显著提高复杂度,也无法真正获得预期效果和实现业务目标。如果数据必须是可用和分散的,强求一致性会不断增加成本,最终将无法达成目标。同样,如果系统必须是分布和一致的,则确保一致性首先将会导致延迟和性能问题,因为系统在各部分未同步之前无法提供服务,它最终是无法使用的。

人们常常认为有某个或多个特性是不容的:数据是不能重复的,所有的写入都必须是事务性的,系统必须100%可用,调用必须是异步的,必须没有单点故障,所有一切必须都是可扩展的,等等。除天真幼稚外,如果将这些特性奉为不容侵犯的教条,你将无法对手阔大的问题开展真正的思考。我们要谈论的是架构设计上的领衔,而不是原则层面上的设计,我们惑于教条主义的统治束缚久矣。相反,我们应该问,为什么必须要持有这些特性?这样做可以锋利什么好处?何时才期望拥有这些我?如何才能打破系统成规以达成更佳的效果?永远不要放弃质疑,因为架构设计的教条往往从根基上削弱了交付能力。这种权衡不可避免。它是软件开发中最难以应对的事情之一,这不只对架构师而言,即使对开发人员和利益相关者也是如此。但是,我们应当珍惜这种权衡,它们远胜毫无限制的可选项,并且接受一些权衡,往往能产生富有创造性和创新性的结果。

原创粉丝点击