大型分布式系统的特征

SOA是一个对应于大型分布式系统的概念。要理解SOA,必须首先理解大型分布式系统的特性。

首先,大型系统必须面对“遗留资产”的问题。你不太可能一切从头开始设计的时候引入SOA的理念。你不得不面对大多数现在正在使用的系统今后仍将保留这一现实。这也意味着实施SOA并不等于从头开始设计一个新系统,而是改变现有系统的架构,解决旧平台的整合和向后兼容的问题。事实上,实现SOA是为了更好的维护大型系统。

从本质上来说,所有的大型系统都是混杂的。这些系统往往有不同的目的,实施时间,你会发现整个系统架构夹杂着不同的平台,编程语言,编程范式,甚至是中间件。在过去,已经有许多整合的手段试着解决这个扩展性的问题。某些方法确实达到了一定的效果,比如撤掉一些无法再维护的旧平台或旧系统就是一种方案。但实际情况是你的系统无法被完全协调成一致。恰恰在你移掉最后一块不协调的部件前,一次公司合并,或者是其他的改变又将重新打开潘多拉的盒子。

造成这种混杂性的一个原因是大型系统和它们的数据往往有很长的生命周期。在这个生命周期中,由于业务的需求,新的项目会不断的加入到原有系统。完全移除原有系统和数据太过昂贵,同时它们本身还有不少商业价值。所以只能保留原有系统并在维护性上投资。经常的情况是这种投资来的太晚了,也比较昂贵,因为这时候系统基本已经失去控制了。

大型系统同时又是十分复杂的。所以找出修改(扩展)的切入点和判断其效果变的非常困难。

大型系统往往还有另外一个特点:有不同的所有者。不同的团队,部门,或者公司可能在维护这些系统,这也意味会有不同的预算,日程表,视角和利益。由于彼此各自相对独立,你通常没有足够的权利控制整个系统的设计和行为。虽然有协商和合作,但终究由于各自利益的不同而产生问题。

另外一个大型系统的明显特征是不完美性。要想完美几乎是不可能的。他们可能能顺利完成99%的运作,但在另外1%的工作中却出现问题,带来的结果是:更多的人力投入,问题管理方案的引入,或者客户的不满。值得一提的是这里不完美的比例可能各个系统会有所不同。(重要系统往往有一个更好的可靠性,但即使是这些系统消除其一个隐患也要投入大量的人力物力)

同样的,大型系统也具有一定程度的冗余性。尽管有些冗余可能是偶然产生的,但却有另外很大一部分是"故意","有意识"引入的冗余,因为在实践中,基本没有办法让所有的数据都标准化从而使其只存储在一个地方。消除冗余其实是十分困难的,会引入一些严重的运行时问题。对于一个相对简单系统的冗余情况,只要保证业务核心清晰即可(将所有的冗余数据从中剥离).在复杂系统的情况中,会有许多的业务核心,而且这些业务核心并没有被清晰的界定。所以在现实情况下,要保持一致性是非常复杂的。

最后,对于大型系统来说,是不该有瓶颈的,因为这意味着自取灭亡。但这并不意味着它们不会存在,但总体而言,避免瓶颈,保持扩展是一个重要目标。值得一提的是这里的瓶颈并不单单指技术上的瓶颈。在大型系统中,流程和组织架构上的瓶颈同样也会阻碍扩展性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值