论文部分内容阅读
摘要:面向服务的体系结构已经在IT行业得到了广泛认可,人们对如何利用这项技术仍然不知所以。事实上,SOA是一种思想,一种架构策略,它的核心是将企业应用中分散的功能组织起来,形成一种企业内部的标准服务,来满足业务发展的需求,并不是只有当你有了很多的应用的时候,SOA的需求才爆发出来的。作为高性能计算应用领域,如何利用SOA理念来实现资源共享和计算协作是一个与实际应用领域息息相关的事。本文将从下面几个方面来说明这个问题:是从大而全的方面来考虑SOA技术的应用,还是从一个领域,甚至是一个项目的开发来着手SOA理念的实现;SOA理念与中间件技术是否是同样的内涵;如何在高性能计算领域使用SOA技术。最后,通过一个具体的项目架构设计来阐述如何利用SOA理念。
关键词:SOA;高性能计算;架构
中图分类:TP311 文献标识码:A 文章编号:1009-3044(2016)21-0200-03
至今为止,SOA已经成为众多公司架构师口中频繁出现的专业词汇,无论是SUN、HP、IBM还是软件提供商BEA都宣称SOA将是公司今后发展的主要指导思想,在国内,甚至有人声称出现了“软件SOA年”。
高性能计算(HPC)是一个历史悠久的领域,目前它已经从一种单纯的关心并行架构中代码的执行效率的方法,发展成为密切关注整个分布式系统的效率方法。现代HPC与进行复杂、大量计算的计算机相似,非常关心如何快速的访问网络中的计算资源和计算服务。HPC的理想前景就是使用大范围的计算能力能够像电网中无缝传输的电流一样,在网络中得到更加透明、更加高效的利用和传输。
当SOA成为一种流行术语时,希望实现HPC理想的重担就落在它的身上。但是SOA究竟是什么?SOA能为我们做些什么?SOA与中间件技术有什么关系?高性能计算领域如何利用SOA理念?这些都成为困扰应用人员的问题。
1 SOA与高性能计算
SOA是什么?SOA(Service-Oriented Architecture)是一个架构设计理念,是一种策略,它不是软件产品,因此任何人都不可能通过购买来得到SOA。它的主要作用是将企业应用中的分散功能组织成可共享的标准服务,而且机构可以快捷地组合和重用这些服务,来满足业务要求。为达到这个目的,SOA主张开发业务应用时应遵循粗粒度、松耦合、统一标准的基本原则。
从定义来看,SOA是面向服务管理的基础设施,强调软件项目的整体设计与规划,这是不是说使用SOA理念来建设一个项目,只能从顶层设计开始,只能从上而下呢?事实上,SOA的理念就是要人们从架构设计开始关注一个项目的建设,但作为规划者不可能了解具体每一个业务的技术细节,更何况业务部门的需求还是在不停变化的。特别是高性能计算领域,如何针对不同业务局对应用的需求进行数据交换,制定数据传输、存储标准,并和其他应用系统融合,才能最大化效用,提高领域的生产效率。这些问题都是每个业务局必须要考虑的。 因此在这个过程中,高性能计算应用领域的推动力至关重要,他必须了解业务流程,又有全局观,从而形成自下而上的推动力,而架构师可以从一个项目或者一个应用来实现SOA理念。
高性能计算领域最主要的资源是高性能计算机系统,随着集群系统的普及,如何共享这些计算资源和计算服务是高性能计算领域必须解决的问题,于是计算网格应运而生,它主要是利用网格中间件为用户提供透明使用各种计算资源与计算服务的途径,解决应用之间互联互通,应用模块化的问题。从网格中间件的功能以及虚拟化各种计算资源和计算软件的过程来看,网格中间件采用的策略与SOA是一致的。那么,中间件策略与SOA是什么关系呢?中间件主要是在应用级这个层面上整合、构建企业的架构,它是一种基础设施,而SOA的范畴更广,它主要强调对服务的管理,也就是说SOA技术可以在一个容器中一次性取代基本流程、消息传递、多线程、执行环境,使应用开发人员可以把注意力放在编写应用逻辑上。同时SOA技术将使网格计算变得更容易,而网格中间件是成功的SOA技术的一个重要的实现。这有点像BEA的产品Weblogic和AquaLogic之间的关系。不过在具体的应用领域使用SOA技术还得依据领域的实际需求。一个非常有意思的例子就是:高性能计算领域面临的计算任务往往需要运算很长时间,所以计算软件总会设置断点接续的功能,这就需要用户能控制断点信息文件,而SOA技术(网格中间件)强调的是如何整合分散能力并为用户提供资源的透明使用手段,这就需要有个折中,即断点文件不能对用户是透明的。下面将通过一个实际应用领域的架构设计来说明具体的实施方案。
2 领域需求
从本领域的调研发现,目前大多数前期的研究工作都是在个人桌面上完成的,并且每个业务局都希望按照自己的业务流程与特点来开发对应的辅助工具,从已有系统的分析看,大多数的开发工作是重复的。因此,项目首先要提供一种架构,可以按照用户的需求装载不同的工具集并能与已有的工具软件协作完成研究工作,用户只需关注和开发与本身业务相关的处理部分,这样就可以减少“烟囱式”系统的开发与使用,节省开销,提供研究效率。另外,随着业务的进展,业务处理的方法与工具也会发生改变,所以项目应能管理集成环境中的每个功能模块,支持在线更新升级,而这些需求与SOA基本原则相符。总而言之,一线用户需要一个灵活可扩展的应用程序框架来实现这些需求。
其次,无论是个人桌面还是高性能计算节点,用户都需要丰富的应用插件和应用计算服务。这些部件与各局实际业务相关,只有他们自己提供的应用插件与应用服务才是最适合业务流程需要的,这是本项目与业务局合作开发的主要切入点之一,是一种从下至上的架构方式。同时,项目要想提供这些服务与插件,首先必须建立插件与服务的开发标准,所有的开发者在此标准下,可以灵活方便的使用各种不同功能的插件、服务,或自行开发插件、服务。按标准扩展的插件、服务才能很好的同整个相结合,这也是SOA十分看重的。 最后,经过数十年的积累,各业务局具有了提供大量领域综合信息的能力,当领域工作对智能化、工程化提出了更高的要求后,开发与业务特色相关的综合信息资源(多种异构数据库)将是项目与业务局合作开发的另一个切入点。为了将这些综合信息整合在平台下,提供统一数据视图,必须制定统一的数据标准。
3 架构设计
从上面的需求来看,项目的架构设计应包含的主要功能部分为:系统入口,即门户系统;服务的集成开发环境之系统;资源聚合与管理的网格中间件系统;计算资源与数据信息资源。图1是系统功能组成逻辑结构。
其中门户系统它主要为用户提供使用开发网格服务集成工具的手段和使用网格资源的入口,它不仅要遵循行业使用习惯,继承行业长期形成的开发技术、方法和成果,而且还要利用新技术为行业带来更多便利高效的使用方式。门户将作为提供访问权限的机制,并可以与相关信息、应用程序、业务过程和人力资源进行交互,并通过网格中间件位用户透明地提供网格服务。架构设计者必须说明该部分的实现方法和约定、采用的标准。如:门户系统应支持浏览器(支持IE5.0以上版本和Mozilla Firefox 5.0以上版本),与研究领域应用习惯一致;开发者应遵循Web Services for Remote Portlets Specification(WSRP)和 Java Specification Request 168 Portlet Specification(JSR168)两个标准等。至于具体的技术细节则是开发者必须面对的。
集成开发环境应按照SOA理念,为用户提供随需而变的应用架构。基本的功能组成如图2所示。其中最能体现模块化、标准化、松耦合思想的就是为研究领域提供常用的工具插件和用户调用工具插件的接口,它是聚合不同研究领域业务工具的主要手段。为了给用户提供一个灵活可扩展的应用程序框架,首先应将应用程序的实现细节与系统的架构实现分离开,其次在架构与应用程序之间提供标准接口,实现应用程序与架构、应用程序与应用程序之间的互操作。同样道理,架构要对实现做一些限制。如集成开发环境解决方案应以支持开放标准为原则,以Eclipse作为平台开发基础环境,支持富客户端;插件开发者应使用JAVA语言、JFace工具包开发Eclipse标准插件;JFace工具包没有的功能才使用SWT工具包;插件开发标准(接口、交互等)应与Eclipse3.1版一致;如果客户端应用软件没有涉及图形操作,可以使用标准C语言开发相应的软件,但要符合C99标准;输入输出参数格式应与XXX要求一致,并使用JAVA封装代码为Eclipse插件等等。
服务运行与管理(网格中间系统)是聚合计算与数据资源的关键子系统,目前国内已经有成熟的系统平台,根据领域的需求,对中间件系统的要求归结为:
1)作业提交/调度/监控等,支持多种作业类型:如:标准Web服务作业、传统遗留作业、复合服务作业。
2)屏蔽异构的硬/软件环境,为服务提供安全可靠的运行环境,应支持服务的部署(热部署和远程动态部署)、反部署、执行、监控等。
3)收集和发布各类资源的状态信息 ,提供服务注册、发布、查询、匹配和选择等功能。
4)提供用户身份和资源合法性双向认证机制、身份映射管理,服务和资源的访问授权管理,通过消息加密为平台提供安全可靠的消息交换。
5)提供网格监控系统,负责资源级、服务级、作业级、用户级的动态监控,包括资源负载(CPU、磁盘、内存利用率)、服务质量、用户行为的监控信息等。
6)根据当前的实际情况,提供用户管理、跨域访问管理、访问日志记录等。
7)提供灵活的网格数据管理机制,实现网格环境中各类存储资源和文件数据的管理,屏蔽异构的物理存储资源,实现全局的文件数据视图和高效的数据传输,使得用户可透明或非透明访问网格环境上的各种数据文件。如支持用户对断点文件的定位管理。
8)提供面向网格环境的编程模型,用于复杂网格作业的开发。
9)提供不同网格平台之间互操作的机制。
10)提供服务流程定义与服务再造功能。
具体的功能组成如图3所示。
同样架构师需确定开发者应遵循的约定与规范。如:遵循WSRF相关标准(Web服务、XML、Soap、HTTP等);使用通用的作业描述语言JSDL,来实现传统软件的部属与提交管理,并进而实现与其他网格的互操作;使用通用的工作流规范(如:WS-BPEL)以支持工作流定义与重构、WSRF服务调用;提供类似MPI机制的网格应用编程环境等等。
至于应用领域服务与信息系统的开发,架构师必须按照SOA策略完成模块设计标准、数据标准、模块划分方法,除此以外,最重要的一点是必须与服务的开发者共同制定相关约定与方法。
4 结论
要想使用SOA技术关键是遵循它的理念,即遵循SOA的基本原则:粗粒度、松耦合和基于标准的服务,因此要根据高性能计算领域发展的蓝图,设计好整个平台架构。这和以前开发的项目最大的区别在于:以前是一个项目一个部门来实施相关应用,彼此分离,如今的高性能应用计算领域需要在一个统一框架下面实现跨部门跨应用的项目协作与共享,而用户对界面的友好性、智能性,对业务流程的定义与开发工具的关心并不亚于对系统架构的关心。所以实现SOA最理想的方法就是上下夹击。
关键词:SOA;高性能计算;架构
中图分类:TP311 文献标识码:A 文章编号:1009-3044(2016)21-0200-03
至今为止,SOA已经成为众多公司架构师口中频繁出现的专业词汇,无论是SUN、HP、IBM还是软件提供商BEA都宣称SOA将是公司今后发展的主要指导思想,在国内,甚至有人声称出现了“软件SOA年”。
高性能计算(HPC)是一个历史悠久的领域,目前它已经从一种单纯的关心并行架构中代码的执行效率的方法,发展成为密切关注整个分布式系统的效率方法。现代HPC与进行复杂、大量计算的计算机相似,非常关心如何快速的访问网络中的计算资源和计算服务。HPC的理想前景就是使用大范围的计算能力能够像电网中无缝传输的电流一样,在网络中得到更加透明、更加高效的利用和传输。
当SOA成为一种流行术语时,希望实现HPC理想的重担就落在它的身上。但是SOA究竟是什么?SOA能为我们做些什么?SOA与中间件技术有什么关系?高性能计算领域如何利用SOA理念?这些都成为困扰应用人员的问题。
1 SOA与高性能计算
SOA是什么?SOA(Service-Oriented Architecture)是一个架构设计理念,是一种策略,它不是软件产品,因此任何人都不可能通过购买来得到SOA。它的主要作用是将企业应用中的分散功能组织成可共享的标准服务,而且机构可以快捷地组合和重用这些服务,来满足业务要求。为达到这个目的,SOA主张开发业务应用时应遵循粗粒度、松耦合、统一标准的基本原则。
从定义来看,SOA是面向服务管理的基础设施,强调软件项目的整体设计与规划,这是不是说使用SOA理念来建设一个项目,只能从顶层设计开始,只能从上而下呢?事实上,SOA的理念就是要人们从架构设计开始关注一个项目的建设,但作为规划者不可能了解具体每一个业务的技术细节,更何况业务部门的需求还是在不停变化的。特别是高性能计算领域,如何针对不同业务局对应用的需求进行数据交换,制定数据传输、存储标准,并和其他应用系统融合,才能最大化效用,提高领域的生产效率。这些问题都是每个业务局必须要考虑的。 因此在这个过程中,高性能计算应用领域的推动力至关重要,他必须了解业务流程,又有全局观,从而形成自下而上的推动力,而架构师可以从一个项目或者一个应用来实现SOA理念。
高性能计算领域最主要的资源是高性能计算机系统,随着集群系统的普及,如何共享这些计算资源和计算服务是高性能计算领域必须解决的问题,于是计算网格应运而生,它主要是利用网格中间件为用户提供透明使用各种计算资源与计算服务的途径,解决应用之间互联互通,应用模块化的问题。从网格中间件的功能以及虚拟化各种计算资源和计算软件的过程来看,网格中间件采用的策略与SOA是一致的。那么,中间件策略与SOA是什么关系呢?中间件主要是在应用级这个层面上整合、构建企业的架构,它是一种基础设施,而SOA的范畴更广,它主要强调对服务的管理,也就是说SOA技术可以在一个容器中一次性取代基本流程、消息传递、多线程、执行环境,使应用开发人员可以把注意力放在编写应用逻辑上。同时SOA技术将使网格计算变得更容易,而网格中间件是成功的SOA技术的一个重要的实现。这有点像BEA的产品Weblogic和AquaLogic之间的关系。不过在具体的应用领域使用SOA技术还得依据领域的实际需求。一个非常有意思的例子就是:高性能计算领域面临的计算任务往往需要运算很长时间,所以计算软件总会设置断点接续的功能,这就需要用户能控制断点信息文件,而SOA技术(网格中间件)强调的是如何整合分散能力并为用户提供资源的透明使用手段,这就需要有个折中,即断点文件不能对用户是透明的。下面将通过一个实际应用领域的架构设计来说明具体的实施方案。
2 领域需求
从本领域的调研发现,目前大多数前期的研究工作都是在个人桌面上完成的,并且每个业务局都希望按照自己的业务流程与特点来开发对应的辅助工具,从已有系统的分析看,大多数的开发工作是重复的。因此,项目首先要提供一种架构,可以按照用户的需求装载不同的工具集并能与已有的工具软件协作完成研究工作,用户只需关注和开发与本身业务相关的处理部分,这样就可以减少“烟囱式”系统的开发与使用,节省开销,提供研究效率。另外,随着业务的进展,业务处理的方法与工具也会发生改变,所以项目应能管理集成环境中的每个功能模块,支持在线更新升级,而这些需求与SOA基本原则相符。总而言之,一线用户需要一个灵活可扩展的应用程序框架来实现这些需求。
其次,无论是个人桌面还是高性能计算节点,用户都需要丰富的应用插件和应用计算服务。这些部件与各局实际业务相关,只有他们自己提供的应用插件与应用服务才是最适合业务流程需要的,这是本项目与业务局合作开发的主要切入点之一,是一种从下至上的架构方式。同时,项目要想提供这些服务与插件,首先必须建立插件与服务的开发标准,所有的开发者在此标准下,可以灵活方便的使用各种不同功能的插件、服务,或自行开发插件、服务。按标准扩展的插件、服务才能很好的同整个相结合,这也是SOA十分看重的。 最后,经过数十年的积累,各业务局具有了提供大量领域综合信息的能力,当领域工作对智能化、工程化提出了更高的要求后,开发与业务特色相关的综合信息资源(多种异构数据库)将是项目与业务局合作开发的另一个切入点。为了将这些综合信息整合在平台下,提供统一数据视图,必须制定统一的数据标准。
3 架构设计
从上面的需求来看,项目的架构设计应包含的主要功能部分为:系统入口,即门户系统;服务的集成开发环境之系统;资源聚合与管理的网格中间件系统;计算资源与数据信息资源。图1是系统功能组成逻辑结构。
其中门户系统它主要为用户提供使用开发网格服务集成工具的手段和使用网格资源的入口,它不仅要遵循行业使用习惯,继承行业长期形成的开发技术、方法和成果,而且还要利用新技术为行业带来更多便利高效的使用方式。门户将作为提供访问权限的机制,并可以与相关信息、应用程序、业务过程和人力资源进行交互,并通过网格中间件位用户透明地提供网格服务。架构设计者必须说明该部分的实现方法和约定、采用的标准。如:门户系统应支持浏览器(支持IE5.0以上版本和Mozilla Firefox 5.0以上版本),与研究领域应用习惯一致;开发者应遵循Web Services for Remote Portlets Specification(WSRP)和 Java Specification Request 168 Portlet Specification(JSR168)两个标准等。至于具体的技术细节则是开发者必须面对的。
集成开发环境应按照SOA理念,为用户提供随需而变的应用架构。基本的功能组成如图2所示。其中最能体现模块化、标准化、松耦合思想的就是为研究领域提供常用的工具插件和用户调用工具插件的接口,它是聚合不同研究领域业务工具的主要手段。为了给用户提供一个灵活可扩展的应用程序框架,首先应将应用程序的实现细节与系统的架构实现分离开,其次在架构与应用程序之间提供标准接口,实现应用程序与架构、应用程序与应用程序之间的互操作。同样道理,架构要对实现做一些限制。如集成开发环境解决方案应以支持开放标准为原则,以Eclipse作为平台开发基础环境,支持富客户端;插件开发者应使用JAVA语言、JFace工具包开发Eclipse标准插件;JFace工具包没有的功能才使用SWT工具包;插件开发标准(接口、交互等)应与Eclipse3.1版一致;如果客户端应用软件没有涉及图形操作,可以使用标准C语言开发相应的软件,但要符合C99标准;输入输出参数格式应与XXX要求一致,并使用JAVA封装代码为Eclipse插件等等。
服务运行与管理(网格中间系统)是聚合计算与数据资源的关键子系统,目前国内已经有成熟的系统平台,根据领域的需求,对中间件系统的要求归结为:
1)作业提交/调度/监控等,支持多种作业类型:如:标准Web服务作业、传统遗留作业、复合服务作业。
2)屏蔽异构的硬/软件环境,为服务提供安全可靠的运行环境,应支持服务的部署(热部署和远程动态部署)、反部署、执行、监控等。
3)收集和发布各类资源的状态信息 ,提供服务注册、发布、查询、匹配和选择等功能。
4)提供用户身份和资源合法性双向认证机制、身份映射管理,服务和资源的访问授权管理,通过消息加密为平台提供安全可靠的消息交换。
5)提供网格监控系统,负责资源级、服务级、作业级、用户级的动态监控,包括资源负载(CPU、磁盘、内存利用率)、服务质量、用户行为的监控信息等。
6)根据当前的实际情况,提供用户管理、跨域访问管理、访问日志记录等。
7)提供灵活的网格数据管理机制,实现网格环境中各类存储资源和文件数据的管理,屏蔽异构的物理存储资源,实现全局的文件数据视图和高效的数据传输,使得用户可透明或非透明访问网格环境上的各种数据文件。如支持用户对断点文件的定位管理。
8)提供面向网格环境的编程模型,用于复杂网格作业的开发。
9)提供不同网格平台之间互操作的机制。
10)提供服务流程定义与服务再造功能。
具体的功能组成如图3所示。
同样架构师需确定开发者应遵循的约定与规范。如:遵循WSRF相关标准(Web服务、XML、Soap、HTTP等);使用通用的作业描述语言JSDL,来实现传统软件的部属与提交管理,并进而实现与其他网格的互操作;使用通用的工作流规范(如:WS-BPEL)以支持工作流定义与重构、WSRF服务调用;提供类似MPI机制的网格应用编程环境等等。
至于应用领域服务与信息系统的开发,架构师必须按照SOA策略完成模块设计标准、数据标准、模块划分方法,除此以外,最重要的一点是必须与服务的开发者共同制定相关约定与方法。
4 结论
要想使用SOA技术关键是遵循它的理念,即遵循SOA的基本原则:粗粒度、松耦合和基于标准的服务,因此要根据高性能计算领域发展的蓝图,设计好整个平台架构。这和以前开发的项目最大的区别在于:以前是一个项目一个部门来实施相关应用,彼此分离,如今的高性能应用计算领域需要在一个统一框架下面实现跨部门跨应用的项目协作与共享,而用户对界面的友好性、智能性,对业务流程的定义与开发工具的关心并不亚于对系统架构的关心。所以实现SOA最理想的方法就是上下夹击。