`
WildFly
  • 浏览: 62992 次
社区版块
存档分类
最新评论

小谈应用服务器的未来发展

阅读更多

InfoQ中国站发表了一篇卫滨张兄的文章“Java应用服务器前途堪忧”,链接为http://www.infoq.com/cn/news/2014/05/application-servers-are-dead。仔细看进去,Eberhard Wolff的演示稿写的很好,有针对性的分析了目前应用服务器当前的状态和存在的一些问题,提出微服务和持久交付会对应用服务器市场产生冲击,这个技术趋势我非常赞同,但是演示稿的确有标题党和片面下结论之嫌。接下来我就从应用服务器的历史发展,需求由来和互联网浪潮对其促进变化谈谈个人的观点,在一些地方辅以技术说明。

早期一些计算机教科书里写软件可以分为两大类,科学计算和业务管理,我认为是很有道理的,这种分类很好的匹配了现代计算机体系的两大主要部件:CPU和内存,一个负责计算,另一个负责存放状态数据。向后推导,进一步产生面向函数和面向对象的编程语言;软件体系架构选择聚焦在海量数据并发访问,还是选择企业应用系统事务为先。在设计一个软件之前,仔细想想这个软件是给什么人用,同时有多少人用,它的需求或者说要完成什么功能,对事务的要求高么,中间环境需要人为干预么,要积累多少业务数据,用户怎么使用最方便。这些问题一旦有了答案,软件的架构基本上就呼之欲出了。

软件的发展离不开和同期硬件能力的匹配,原先CPU是单个,需要分时分配给不同任务使用,内存更是宝贵的资源。在这种环境限制下,再加上专心做一件事的天性使然,程序员在编写程序时,会非常自然的按照时序来书写程序,所以在当代程序员的开发基因中,本能的排斥各种加锁,各种干扰程序正常流程的操作。就和我们去银行办业务,你会抱怨别的顾客插队打岔,柜员中途离开,或者你被要求到外面先填单子等一样。我们的软件框架及容器为了让开发者更快捷的编程,从各种非业务技术难点中解脱出来,会充分利用语言能力和编译/部署手段。

上世纪90年代互联网开始普及,分布式计算技术开始迅速发展,过去针对单机编写的应用程序需要移植部署在互联网上。但无论是科学计算还是业务管理应用软件,适应互联网都是一个“缓慢”的过程。在经典的企业软件设计书籍里,比如 Martin Flowler 的“企业应用架构模式”里建议慎重使用分布对象,Rod Johnson的经典“J2EE development without EJB”更是通篇对早期远程EJB进行鞭挞,而如今互联网应用中完全贯彻SOA思想,几乎全部的接口都是无状态的分布式设计方案,目前Spring社区也在主推 MicroServices 分布协作。是不是感到困惑?是大师们偏颇还是当前的架构出了问题?其实站在各自目标应用立场上,放在当时的技术背景下,都是对的。绝大多数的企业应用都不需要分布,或者说在单一领域根操作时应避免分布;而互联网网站面向海量用户,需要成千上万的机器来保障服务,天生需要分布。

那么对JavaEE中的代表EJB规范,究竟该怎么评点呢?不能以单纯好坏论之,我的观点是EJB承担了太多的责任。1.线程安全的对象。前面说过容器试图解脱程序员,开发EJB对象,是不需要考虑并发的,反而要限制你不能创建线程(3.1之前)。同时非共享成员变量也带来状态的安全,这个重要知识点并没有在程序员中深入人心;2.AOP模式的实现,可以做到让开发者聚焦业务逻辑,事务,安全等上下文信息通过容器隐式传递;3.分布式对象实现。远程EJB设计没有太大问题,关键缺憾是基于Corba相关协议和技术过时。另外对异步式支持不足,无论是异步接口还是MDB的定义,规范定义都不到位。4.还有Timer,StatefulSessionBean等内容,早期甚至还有EntityBean。
剖析EJB,其实就是在分析应用服务器,它们都面临同样的问题:太过于庞大,开发者在经验不足时很难全面把握,从而产生厌恶感。我们知道所谓规范是多个软件大厂商妥协的产物,有太多的非实用主义掺杂在里面。但还是由市场驱动的,是知识经验的凝聚。过去这几年中,除了其他语言方案,就是Java自己内部,各种技术框架就层出不穷。但我们看到无论是Spring还是OSGi,目前都不得不适应JavaEE很多子规范,比如Servlet, JPA等等。因为这些规范更好更全面的揭示了软件开发的内在原则。

Servlet是Java适配HTTP协议而设计的规范,简单好用,关键之处在于,其中的基础接口揭示了面向网络编程最重要的内容:包含消息内容的Request/Response,传递上下文的Context,状态传递的Session,拦截逻辑的Filter,各种Listener接收事件,当然还有软件执行点Servlet,和谐而稳定的构造出一个框架。同样的,JPA是Java适配关系数据库和SQL查询而设计的规范,它试图把持久介质上的关系图谱映射到内存中,使得开发人员即便面对很复杂的关系数据表格和业务逻辑,也能找到线索来理清纷繁头绪。大多数优良的JavaEE规范都是按照这个逻辑思路设计的,所以我建议涉足企业应用开发的程序员,都应该全面系统的学习JavaEE知识,相信会收益非浅。

技术和工具,只有最合适自己的才是最好的,而应用服务器在过去就承载了太多的技术期望。传统的软件采购中,中间件是其中金额很小的一块,但不光要承担应用容器载体职责,还有软件开发,架构设计,部署,监控,升级,安全之种种。面对这么多技术内容,非IT基础架构的企业是不可能,也没有能力能够全部玩转的。他们希望有一个方案,软件供应商可以通过培训让他们的技术员工能掌握部署,管理运维和部分开发定制,系统的整体一致和组件标准化是他们考量的一个重要因素。软件是由程序员开发的,其中的价值和知识凝聚在代码,文档,图示中,甚至更多在程序员的头脑里。最好的软件精华部分,就和一本好书,一支好曲子,一座百年大桥的主要设计方案一样,是由一个人或者少数人组成的团队掌控者。但软件是需要传播的,使用软件的企业也希望用的东西透明公开,可以不去了解细节,但不愿意毫无知情权。这个也是开源运动成功的关键所在。就和我们去吃庆丰包子,透明的玻璃窗后能看到包子的整个制作流程,其实客户并不关心这个包子如何做,只是这种公开透明让人产生信任,从而愿意花钱买包子而节省自己的时间。应用服务器就是帮助企业用户来节省时间,屏蔽复杂度,减少技术理解鸿沟的产品。

现在是互联网时代,别的不说,人人看得见一种鲜明对比:互联网的如日中天和企业软件厂商的不景气。互联网公司有软件平台和自己的盈利模式,它们需要构建自己的技术平台来满足自己的业务需求,开发人力是最宝贵的资源。它们可以投入大量的人力物力来打磨每一个技术细节,不为别的,就为了更好的满足自己需求。但问题是,对于非技术企业来说,它们的方案适合么?有同样的技术能力保障么?能获得后续的商业支持么?为什么说开源好,有标准好,就是因为绝大多数软件项目,即使做的再好,围绕其工作的人都是有限的,那么开放的标准的技术会有更多的人书写博客,制作文档,贡献代码,测试功能性能,不断打磨使之成熟。越来越多的互联网企业也看到这一点,尤其一些国外的互联网巨头,对开源做出了巨大的贡献。对一般企业来说,建议选择开源技术,并且选择软件产商来获得专业服务支持。

还有一个变革是Linux作为基础服务器和云计算的普及。Linux是开源而成熟的操作系统,如今已成为整个互联网的基础之一,越来越多工程师掌握了Linux知识和可以对其进行定制裁剪。软件应用最终要找一个载体,在原来Windows如日中天的微软时代,Java虚拟机作为一个可以跨越操作系统的平台,是最好的选择。如今Linux也可以做到以进程为单位,操作系统为容器,加上资源隔离,微服务等技术方式,一个和应用服务器竞争的方案产生了。我个人非常看好这个趋势,尤其认为改良后的PAAS是应用服务器的发展方向,因为可以更和谐的满足开发和部署业务程序的需要。但这有一个过程,还有面对一开始就提出的问题,是什么业务场景,客户IT应用水平等因素都需要考量。在国内,多数企业还是以windows平台为主,那么微服务这个技术推行还需以时日,即便在互联网等企业中,同样也有企业应用如财务系统,HR系统等需求,这些应用还是由JavaEE的子规范技术开发占主导地位。

所以软件应用架构没有银弹,必须根据业务的特点和自身的技术实力来选择最好的技术方案。

 

1
0
分享到:
评论

相关推荐

    云计算安全 中国民族企业的责任

    从几十年前的大型主机到终端模式,到后来的PC分散模式,这是一个集中分散的过程,终端分散而后台集中,这其实就是云计算谈的一个核心,也是未来应用发展的需求。从云计算的意义上看,这是产业格局发生变化的一个节点...

    浅谈大数据技术.docx

    国际知名咨询机构IDC(International Data Corporation)的研究报告预测,未来十年全球大数据将增加50倍,管理数据仓库的服务器的数据将增加10倍。 浅谈大数据技术全文共4页,当前为第1页。 2.数据类型多样(Variety...

    浅谈以系统实用化为中间件的未来

    中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络...而在政府领域及中小企业领域,信息系统的发展相对滞

    通信与网络中的浅谈以系统实用化为中间件的未来

    中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。...而在政府领域及中小企业领域,信息系统的发展相

    云计算服务模式.doc

    浅谈云计算服务模式 摘 要:云计算作为一种全新的基于互联网的超级计算模式,主要原理是要计算通过分布在 大量的分布式计算机上,并不是以前的计算机或者远程服务器上,这样就更好的为用户 提供更为广阔的服务。...

    building_storage_networks_chsSAN存储区域网络 .rar

    企业存储系统能够支持多个应用、服务器和操作系统,是一个完备的信息管理解决方案,代表了未来10年支持公司需求的有效方案。SAN满足公司的信息传输需求,提供了网络时代理想的存储与管理方案。 译者序 前言 引言 第...

    大数据前景展望.pdf

    信息系统工程 2018.9.20 25 REGION INFO 数字地方 一、引言 在全球经济发展的新形势下,计算机技术和互联网技术在 世界上的各个领域的应用越来越广泛。高速发展的社会,科学 技术发达,信息资源流通,人们的交流变得...

    C#微软培训资料

    未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点...

    Java虚拟机

    1.5 展望Java技术的未来 1.5.1 模块化 1.5.2 混合语言 1.5.3 多核并行 1.5.4 进一步丰富语法 1.5.5 64位虚拟机 1.6 实战:自己编译JDK 1.6.1 获取JDK源码 1.6.2 系统需求 1.6.3 构建编译环境 1.6.4 进行...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    前 言 致 谢 第一部分 走近Java 第1章 走近Java / 2 1.1 概述 / 2 1.2 Java技术体系 / 3 1.3 Java发展史 / 5 1.4 展望Java技术的未来 / 9 1.4.1 模块化 / 9 1.4.2 混合语言 / 9 1.4.3 多核并行 / 11 ...

    ASP.NET编程之道.part1.rar

    感悟06 未来IT发展趋势 第2章 编程经验谈6则 经验01 培养编程的兴趣 经验02 编程学习经验谈 经验03 代码规范经验谈 经验04 数据库设计经验谈 经验05 项目实战经验谈 第2篇 陷阱或谬误篇 第3章 不可忽视的30个技术...

    2020微软在线技术峰会PPT汇总(48份).zip

    '企业上云现代化的历程.pdf', '企业内部风险与合规管理.pdf', '企业级低代码开发平台的市场趋势与PowerApps中国市场策略.pdf', '使业务跟上发展的步伐——加速应用程序现代化.pdf', '使用 Azure IoT Plug and Play ...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    看了云风的研发历程,我觉得就是一部中国的游戏程序史,从最早的 Z80 , 6502 , PC8088 , 286 , 386…DOS ,保护模式, Assembler 到 C++ 的整个发展轨迹。这本书可以说横跨了游戏程序的过去、现在和未来。 书...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    看了云风的研发历程,我觉得就是一部中国的游戏程序史,从最早的 Z80 , 6502 , PC8088 , 286 , 386…DOS ,保护模式, Assembler 到 C++ 的整个发展轨迹。这本书可以说横跨了游戏程序的过去、现在和未来。 书...

    JAVA自学之路

    等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。 曾经有一个故事,说得是产能和产量的关系。 一个人喜欢读书,读了一辈子,无所不通,这时候要做任何...

    2010 SD2.0大会演讲实录.doc

    今天我们觉得在目前整个全球市场上看到一个非常重要的趋势,这使得第九城市在今年年初的时候成立了无线互联网事业部,希望能够把我们未来事业的发展以及整个公司的运营方向,朝着一个更前进的方向发展……>>更多 ...

    什么是VLAN

    新出台的标准进一步完善了VLAN的体系结构,统一了Frame-Tagging方式中不同厂商的标签格式,并制定了VLAN标准在未来一段时间内的发展方向,形成的802.1Q的标准在业界获得了广泛的推广。它成为VLAN史上的一块里程碑。...

Global site tag (gtag.js) - Google Analytics