论SOA技术的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/topofyou/article/details/78937198

论SOA技术的应用

摘要:

        2015年初,我所在的公司承担了某集团公司的移动信息化开放平台的建设工作。我在该项目中担任系统架构设计师的职务,主要负责设计平台系统架构和安全体系架构。该平台以移动信息化发展为契机,采用”平台+应用”的模式解决现有应用的集中移动化需求。平台整体的逻辑复杂,对系统的集成能力提出了较高的要求。

本文以应用服务集成子系统为例,讨论了SOA技术的应用。在应用服务集成子系统中,我通过定义WSDL文档实现了接口应用服务标准化,通过引入ESB技术实现了各应用的服务集成和编排,将原有分散的应用功能整合成了有机的整体。平台整体研发耗时10个月,目前,系统已稳定运行了近两年时间,实践证明,我所采用的这些SOA应用技术的对面向应用的服务集成系统的开发和运行中发挥了重要作用。

正文:

        随着移动信息化技术的迅猛发展,我所在的某集团公司的在信息化建设中发现,随着业务系统移动化的需求越来越多,内部移动应用的数量也随之激增,使用起来十分繁琐。为了解决这一问题,集团制定了移动信息化发展战略,根据这一战略要求,移动信息化开放平台应运而生。2015年初,我所在的分公司承担了集团移动信息化开放平台(以下简称MIOP)的建设工作,我有幸参与了项目前期的一些工作,担任系统架构设计师的职务,主要负责设计平台系统架构和安全体系架构。MIOP采用”平台+应用”的模式,立足于集团总部管理域各应用,覆盖全国各省分应用,实现移动应用的统一入口、统一认证、统一鉴权、统一管理,将总部与省分的各种有移动化需要的应用进行有效整合,降低了集团内部移动应用的使用难度,使用户可以无感知的在多个应用间进行切换使用。平台的主要用户是集团全国40多万管理域员工,其中首要保障的是集团领导和省分领导对移动应用的使用,其中涉及公文管理、合同管理、财务报账、ERP和CRM等多个复杂系统,业务流程复杂,系统可靠度和可扩展性要求较高,影响的范围比较广。在部署模式上,MIOP采用集团统一私有云集中部署,各省分系统与MIOP做网络对接,是一个典型的跨城际系统。在系统认证上采用既有4A系统结合自建应用商店作为权限入口,对使用者的权限进行划分。

        作为集团唯一的移动信息化门户,其”平台+应用”的特点决定了系统的主要业务是集团内部应用的分布式集成。经过调研发现,各内部应用的运行环境不尽相同、开发语言差异较大、开发人员水平参差不齐、采用的数据库系统种类繁多,这些问题为应用的集成带来了很大的难度。同时,平台除了在移动端展示应用的信息外,还需要将部分应用的业务功能抽取出来进行重新整合,集中在移动端进行业务处理,以简化移动端的处理流程、提高办事效率。这就要求平台应该具有面向应用的服务集成能力,并且要能够对应用的服务进行灵活的封装整合,为了完成平台的服务集成需要,通过调查分析和交流学习,我最终为平台设计了应用服务集成子系统,并为其应用了具有分布式、松散耦合、高复用程度、开发和维护简单等特点的面向服务的体系结构(SOA)。

        在应用服务集成子系统的设计过程中,需要面对的第一件事情就是服务的提取。对服务的提取主要是建立在流程的划分的基础上进行的。根据移动端展示和操作的需要,我们首先以业务流的整合为切入点,首先对流程进行划分整理,找出现有各应用中无法满足移动端业务需要的流程缺失,如OA办公自动化系统中可以在集团内部流转部分公文进行办公,但是无法将需要审批的内容对应到必须的财务系统功能和资产管理功能等。再根据这部分缺失流程,将现有流程进行优化,继而得出这些移动信息化集成需要集中处理的功能。通过流程的梳理,将各应用系统在移动端使用时的目标进行了划分,明确了服务集成的切入点。在对移动端需要办理的业务流程梳理之后,接下来的任务就是服务的提取,这包括了服务的识别、筛选以及对服务粒度的确认。我们在流程的划分的基础上,对流程的各个涉及的功能模块进行识别,在识别的过程中,尽量保证模块的可复用性,然后将功能模块抽象为接口,再根据接口需要完成服务的WSDL文档,最后将WSDL分发到各涉及改造的应用开发组,由应用开发组分别实现各自的服务。因为SOA具有松耦合的特点,平台侧无需关心各应用服务的具体运行环境和开发语言,而这一特性又使得各开发团队在实现服务时可以选用自己擅长的开发语言,降低了实现难度,加快了开发进度。

        在各应用开发团队完成服务实现之后,下一步的任务就是实现应用服务的编排。在之前梳理的业务流程中,一个流程涉及到了多个服务的调用,要实现这一需要,有两种方式选择。一种是通过依次调用的方式将流程的所需要的应用数据逐个获取,另一种方式是通过服务编排手段实现业务流程,再将结果整体交付。第一种方式因为需要多次与应用服务交互数据,会降低系统整体性能,用户体验不佳,而第二种方式减少了服务交互,同时提供了更好的封装,显然,对于有着较高用户体验要求的移动信息化平台,第二种方式比较好。为了实现服务的编排,我引入了ESB企业服务总线的技术。ESB为分散在各应用中的服务提供了统一的管理,应用只需要将服务注册到ESB中就可以完成服务的发布,服务消费者可以通过统一的形式获取各服务信息并调用。ESB还可以提供透明的服务调用能力,服务消费者对于服务的使用无需了解服务的具体部署情况和实现情况。ESB同时还能提供服务的编排能力,可以通过定义和描述将不同的既有服务组织成新的服务以对外发布。借由ESB的这些特点,我们将之前提取到的各应用服务逐个注册到了ESB中,然后将其中部分可以通过复用和编排方式实现的服务拆解,改由通过编排方式实现,最后根据已经梳理得到的移动端业务流程,对一系列的相关服务进行编排,最终为每一个业务流程的都实现了一个统一对外发布接口。

        通过上述的SOA技术,我所设计的这种架构得到了集团领导的认可和采纳, 2015年末,MIOP正式上线运行,至今已稳定运行了接近2年时间,已经接入了上百个集团内部应用。我所采用的WSDL文档方式服务接口定义、引入ESB实现服务管理和编排等SOA技术,在系统的开发和运行中都发挥了重要的作用,获得了领导和同事的好评。但是在系统运行过程中,我也发现了一些应用SOA技术时需要注意的问题。首先是服务的粒度划分不容易掌握,太细可以增加灵活性,但是降低了效率,太粗虽然提高了效率,但是难以适应需求变化。其次是业务流程的划分的和服务的提取范围的问题,这两方面都涉及到应用侧的配合,需要注意保证沟通的顺畅。这些问题都将是今后我进行架构设计时需要注意的地方。

猜你喜欢

转载自blog.csdn.net/topofyou/article/details/78937198
SOA