这些年来,程序架构和系统发生了不少变化。大部分情况下,这些变化都跟它们依托的硬件密切相关。软件架构到底是从何处起源,众说纷纭,而且对构架的实际构成部分也有各种定义。本文将从整体化应用的兴起来展开讨论。
当你的所有资源都在单机上时,把所有的代码存在一个地方很合理,而且是软件设计的黄金标准。这种模式一直持续到 j2ee 时代,整体化应用容器的出现。j2ee 的设计初衷就是为了能充分利用摩尔定律,因为这是变得越来越庞大的单核 cpu 系统的最佳设计方法。
摩尔定律指的是一个观察发现:在计算机硬件发展史上,密集的集成电路上的晶体管数量大概每两年就会翻一倍。
这种构架作为黄金标准持续了几十年,因为如果我们要衡量一个系统,就会往它身上“堆”更多硬件。添加更快的 cpu 和更多内存来提高应用程序的速度。这就是摩尔定律所说的应用程序。
就在几年前,cpu 制造商开始在 cpu 设计和速度方面遭遇瓶颈。他们怎么都没办法给单核 cpu 提速了。为了解决这个问题,芯片制造商开始“尽情发挥”,在一个芯片上加了好几个核,以便获得更多加速的能力。这意味着过去那种给 j2ee 应用程序添加一个时钟速度更高的 cpu 来提速的老方法行不通了。如果 cpu 无法再提速,应用程序如何通过新一代的多核处理器来扩大规模呢?必须改变现有的应用程序设计和运行方式,才能保持竞争力。
lightbend 公司(前身是 typesafe)发布了响应式宣言,以记录未来软件设计时需求的变化,以及当代多核 cpu 在未来世界的扩展性。这种范式转变太过巨大,因此很难简单说清两种构架风格之间的真正不同,就如同拿苹果跟橙子做对比一样。这种转变在行业内带来了一些混乱,而且还会持续下去,直到完成过渡,找到让多核 cpu 充分发挥潜力的方法。
该宣言列出了构架系统时应该着重考虑的四条原则,以便新系统能够满足所需的处理水平。其中有两个概念直接适用于解决 java 企业应用程序的问题,就是非阻塞 i/o 和非同步处理。如果两项都做好了,应用程序可以占用更少的 cpu 和内存需求,完成更多任务,从而在任何一个系统、同样的硬件基础上,获得比 java 企业应用程序更好的处理效果。下图展示了这种并行处理的好处。
这种新的软件架构新方法带来了更短的处理时间和更高的硬件利用率,从而降低了运营成本。现在运行的很多大型系统都是基于响应式宣言及其原则打造的。linkedin、twitter、facebook 等很多企业使用的系统都是基于非同步和非堵塞 i/o 技术架构,因此他们的应用程序得以优化,能够最大化地利用硬件资源。这是打造可扩展型应用程序的新方法,而且正在迅速发展。“响应式方法”并非一时之势——它是编写软件的未来趋势。