什么是构建一个可维护和可扩展的系统的意义?
在早期,一个系统的形态,只是满足用户和服务器资源之间的通道,唯一要扩展和维护的是系统后面的资源,保证资源的可用和够用,而系统本身的压力并不大。
系统设计跟我们生活中大多数事情一样,都需要花时间提前规划,能够让我们的服务长时间在线。所以,我们了解和总结一些大型系统背后的思考和权衡,能够帮助我们在系统早期做出一些明智和靠谱的决策。
如今,开源组件已经成为构建一些企业系统的基石,伴随着行业的发展,最佳实践和围绕这些系统架构的指导原则也逐渐显现出来了,在什么时候该用什么样的技术,需要考虑到哪些方面,各路牛人早有撰文总结。
本文简单回顾一下,我们在设计一些分布式系统的时候需要考虑的一些关键因素,我们称之为 分布式系统设计原则。
我们将这些在构建系统需要考虑的因素称之为分布式架构设计原则,如下图所示,有六个部分,右边是我们设计系统要达到的基本要求,包括可用、可靠以及性能,这也是 一个可维护和可扩展系统最大的意义
,而左边是系统设计和开发期间要考虑的三个部分,包括扩展性、维护性和成本控制。
我把原则分为俩个大的方面,目标原则 和 实践原则,
站在用户和公司的角度,要求我们设计的系统都必须要满足以下几个原则,特别是互联网性质的系统,这三个原则都是非常重要的。
满足以上目标原则,我们要考虑系统的实现,如何来满足以上的目标原则,我把他称为 实现原则,能够在不同的阶段,让系统都能够适应需求的变化,并在提高成本的情况下,持续满足以上几个目标原则。
扩展性,当今但凡谈到分布式系统,扩展性是首要考虑的一个方面,Google在这方面表现的尤为激进,可以让系统做到无限扩展,例如Spanner,用空间换效率,用规模覆盖算法的次优选。所以,扩展系统的各个部分,几乎是达到可用性、可靠性和性能要求的主要手段。
扩展性涉及系统的方方面面,通常是俩个纬度,scale up 和 scale out,当然,在《The Art Of Scalability》中,提到的Scale Cube,是从三个不同纬度来扩展系统,也是扩展的一种方法,稍后单开一篇介绍,这里就不展开了;
这些原则作为在分布式系统架构设计的基本决策的原则,并不是绝对真理,在实践当中,有时候会发生冲突和矛盾,需要做出一些牺牲和平衡,例如,在实践扩展性的时候,会增加维护和开销成本,甚至会影响可靠性。
不管怎么说,在设计分布式系统的时候,关注这些原则是非常重要的,即使有时候需要做出一些牺牲和平衡,但,这就是技术,这也是生活。
原文:https://www.cnblogs.com/xguo/p/10549030.html