扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年4月26日
关键字:
Java框架灾难就是一个典型的例子。在一个流行的Java应用程序服务器上建立一个应用程序,并在那之上建立无数的框架。Spring、struts、faces与所有其它的Java术语。现在,运行一个无用的功能,如有意引起一个NullPointerException,并检查堆栈轨迹。在作为异常返回前,null值经历了80多个层次。我不是想讨论异常发生的位置,我希望指出的是,处理那个变更需要大量管理费用。在一小段Perl或PHP或Ruby脚本中进行处理,变更在遇到运行时间异常前只运行了几个函数。
这就是为何.NET和Java总不如本地代码快捷的原因:本地代码的编写者很少在OS和应用程序间建立许多层次。这些巨大的框架是如此“心不在焉”,在数据到达目的地前,它们在堆栈中保存50-150份数据。
这段内容有些跑题,但它证明了我的观点。
我们在一个为实现升级、稳健、互用性和未来发展的N层Web应用程序上见到完全相同的处理。我们假设一个客户端请求,在数据库中插入一个新记录:
这实际上是一个省略消息队列等的精简版本。
你现在明白了可升级和稳健是如何侵蚀性能的了。毕竟,插入一个行就发生了8个事务。这与以前的ASP、JSP、PHP或Perl脚本大不相同,它们直接与数据库交互,发生在相同服务器的相同线程的相同进程中,一种占用很小的总体内存、堆栈空间,需要相当小的调用堆栈,不必担心服务器间的通信、网络反应时间等等;而另一种则拥有一个巨大的复杂网络。
可以这样说:如果处理得当,N层应用程序能够在需要的地方增加资源,达到很好的升级,它们运行稳健,并且能够达到99.999%的精确性。但所有这些得以复杂程度显著增加、每个请求需要大量资源为代价。就我所知,市场上存在的另外一个选项是一个大型主机环境,你得把它保存在同一个系统中。请小心做出选择!
文/Justin James
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者