为什么SO有意义
开发者和架构师经常问我, “为什么我们需要面向服务?”我的回答很简单 :可伸缩性、维护性、互操作性和灵活性。过去,分布式组件技术像COM紧紧地 把所有的组件绑定到一起。最低限度上,这些分布式技术必须分享公共类型系统 ,并且常常是一个运行时。有了这些依赖,升级和软件升级变得复杂、费时和费 力的。面向服务的应用系统,恰恰相反,不需要相同类型的依赖,因此显示出更 加适合企业精算需求的行为。
版本升级
应用系统的需求会随着时间的变化而变化。这个问题从计算机出现的时候就 一只存在,而且并没有任何迹象表明这个行为会在将来减慢。开发者、架构师和 项目经理已经付出了巨大的努力到软件开发过程的中去,希望能够调节和控制应 用系统变化的数量和步骤。在整个应用系统的声明周期里,开发过程里的一些设 想将会证明是徒劳的。某些情况下,最后集成应用系统的改变将会导致一系列级 联的其它应用系统部分的改变。自治的、边界清晰的、基于契约的面向服务的应 用提供了几层封装来缓冲这些系统部分版本升级带来的影响。在面向服务的应用 系统里,消息发送者和接收者之间的唯一协定就是契约。两者都可以根据自己的 期望自由改变自己的实现,只要保持契约不变。这些同样适用于组件架构,面向 服务契约的普遍自然属性把发送者和接收者从实现中解耦,因此使得版本升级周 期变短。面向服务并没有去掉了一个好的版本化升级过程的需求。
负载均衡
每个应用都有一些瓶颈,优势这些瓶颈可能阻止一个应用为了增加吞吐量需 求而进行的扩展。
图2-4:一个传统的面向组件的应用
在这个场景里,数据检索或许成为性能瓶颈。如果真是这个情况,一种扩展 组件驱动的Web网站的方式如图2-5所示。
图2-5:伸缩一个组件应用
时间: 2024-11-05 14:41:59