您当前的位置:首页 > 美文分享

SOA是什么(SOA主要的开发方法和工具分析)

时间:2023-02-11 16:18:14

SOA是什么(SOA主要的开发方法和工具分析)

前言面向服务的架构soa以其独特的优势越来越受到企业的重视。它可以根据需要通过网络分发、组合和使用松散耦合的粗粒度应用组件。服务层是SOA的基础,可以被应用程序直接调用,从而有效控制系统中与软件代理交互的人为依赖。一般Soa的开发方式主要有开源的dubbo,dubbox,mule,wso2、cxf,以及付费的oracle soa和ibm soa。

什么是SOA SOA SOA是一种粗粒度、松耦合的服务架构,其中服务通过简单精确定义的接口进行通信,不涉及底层编程接口和通信模型。SOA可以看作是B/S模式、XML(标准通用标记语言的子集)/Web服务技术的自然延伸。

SOA将帮助软件工程师从新的高度理解企业架构中各种组件的开发和部署形式,它将帮助企业系统架构师更加快速、可靠和可重用地构建整个业务系统。与过去相比,基于SOA的系统可以更从容地面对业务的快速变化。

SOA的实现有几个明显的基本特征。实现SOA的关键目标是最大化企业IT资产的作用。为了实现这一目标,在实现SOA的过程中应该记住以下特征:

可从企业外部访问

随时可用

粗粒度服务接口分类

松耦合

可重用服务

服务界面设计管理

标准化服务接口

支持多种消息模式。

准确定义的服务合同

SOA有一个自描述的XML文档。WSDL (Web服务描述语言)是描述服务的标准语言。

SOA服务与消息通信,消息通常由XML模式定义(也称为XSD,XML模式定义)。在提供者未知的环境中,经常可以看到与消费者提供者的通信,或者消费者和服务之间的通信。服务之间的通信也可以视为企业内部处理的关键业务文档。

在企业内部,SOA服务是通过一个注册中心来维护的,该注册中心扮演着目录列表的角色。应用程序在注册表中查找并调用服务。UDDI(通用描述、定义和集成)是服务注册的标准。

每个SOA服务都有一个相关的服务质量(QoS)。QoS的一些关键要素是安全性要求(如身份验证和授权)和可靠的通信(注意:可靠的消息是指确保消息被发送只有且只有一次,以便过滤重复信息。),以及谁可以调用该服务的政策。

随着全球信息化的浪潮,信息化产业不断发展和延伸,已经渗透到许多企业和个人。SOA体系架构的出现将给信息化带来一场新的革命。

纵观信息化建设和应用的历史,虽然出现过XML(标准通用标记语言的子集)、Unicode、UML等多种信息标准。很多异构系统的数据源仍然使用各自独立的数据格式、元数据和元模型,这是信息产品提供商一直以来形成的习惯。相对独立的源数据的整合往往是通过构建一定的数据采集和计算程序来实现的,这需要大量的工作。大量信息孤岛的存在大大降低了信息建设的投资回报率,ETL成为集中这些异构数据的有效工具。ETL通常用于从源系统中提取数据,将数据转换成与目标系统兼容的格式,然后将其加载到目标系统中。数据采集、转换、加载后,要产生应用价值,还需要另一种数据呈现工具来实现。如此复杂的数据申请流程,必然导致申请成本高昂。

结构化数据管理可以通过上述方法进行集成。就非结构化内容而言,这些具有挑战性的问题令人望而生畏。内容管理的应用方案基于不同的信息应用系统,且大多以组织部门为纵向界限。在内容管理市场中,不同供应商的产品通常用于提供这些解决方案。即使是同一制造商的产品也经常相互重叠的功能,不能集成。

随着信息化建设的深入,不同应用系统之间的功能界限已经变得模糊。同时,企业资源计划系统和协同商务系统需要商业智能的分析和呈现数据为用户提供依据操作。

在激烈的竞争和多变的市场环境中,企业的管理模式难以固化。在应用传统的信息软件时,企业在做出一些改变时不得不面临巨大的挑战。

2000年Web服务出现后,SOA被誉为下一代Web服务的基本框架,成为计算机信息领域新的发展方向。

SOA的出现给传统的信息产业带来了新的概念,不再是相互独立的,可以很容易地相互连接、组合和共享信息。

重复使用以前的信息软件。基于SOA的协同软件提供应用集成功能,可以集成ERP、CRM、HR等异构系统的数据。

松耦合的方式,只要我们充分了解业务流程,就可以通过流程图实现一套自己的信息系统,而不用写一行代码。就像砖头和水泥已经给你准备好了一样,你只需要搞清楚要建什么样的房子,你就可以轻而易举地建起来。加快开发速度,降低开发和维护成本。软件将所有管理细化为表格和流程,记录管理内容,规定流程流向。

更容易的信息和数据集成。信息整合功能可以方便地将分散在广域网和局域网上的文档、目录和网页进行整合,加强信息的协同性和关联性。与此同时,复杂而昂贵的数据整合变成了简单而低成本的参数设置。一个完全集成的信息应用新领域已经创建。

在具体的功能实现上,SOA协作软件实现的功能包括知识管理、流程管理、人事管理、客户管理、项目管理、应用集成等。从部门来看,涉及行政、后勤、营销、物流、生产等。从应用思想来看,SOA协作软件中的信息管理功能考虑了贯穿整个企业组织的信息软硬件投入。虽然各种IT技术可以用于不同的目的,但是信息管理并没有随意将信息划分为结构化或非结构化的部分,所以ERP等结构化管理系统并不是信息化建设的全部;与此同时,信息管理并没有不要将信息解决方案划分为部门视图,因此构建只有部分边界的软件应用功能的想法可能不会不可动摇。与ERP、CRM等传统应用软件相比,基于SOA的协作软件的关键区别在于,它可以在正确的时间、正确的地点和正当的理由向任何需要的用户提供服务。

SOA架构开发的优势:No.一、更容易维护。

服务提供者和服务消费者之间的松散耦合关系以及开放标准的采用保证了这一特性的实现。基于SOA的信息系统,当需求发生变化时,不需要修改提供业务服务的接口,只需要调整业务服务流程或修改操作,整个应用系统更容易维护。

编号二、可用性更高

这个特性在于服务提供者和服务使用者之间的松散耦合关系。用户不需要知道提供商的细节的实现。

三、号更好的可扩展性

依赖于业务服务的设计、开发和部署中采用的体系结构模型来实现可伸缩性。以便服务提供商能够独立调整以满足新的服务需求。

几种主要的开发方法和工具

一、DubboDUBBO是淘宝的分布式服务框架,致力于提供高性能、透明的RPC远程服务调用方案和SOA服务治理方案。淘宝公司的很多应用都用dubbo,运行稳定成功。现在很多企业使用dubbo开发应用系统。Dubbo是一种简单有效的soa架构,值得采用。

与其他服务框架相比,DUBBO具有以下优势:

透明远程方法调用,就像调用本地方法一样,调用远程方法,配置简单,没有API入侵;

软负载均衡和容错机制可以在内网中替代F5等硬件负载均衡器,降低成本和单点;

自动服务注册和发现。注册中心根据接口名称查询服务提供商的IP地址,可以平滑地添加或删除服务提供商。

其核心部分包括:

长距离通信:它提供了基于长连接的各种NIO框架的抽象封装,包括各种线程模型、序列化和请求-响应信息交换方式。

集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡、故障容错、地址路由、动态配置等集群支持。

自动发现:基于注册表的目录服务,服务消费者可以动态找到服务提供者,地址透明,服务提供者可以平滑增减机器。

Dubbo具有以下功能:

透明的远程方法调用,就像调用本地方法一样,只需要简单的配置,不需要任何API的介入。

软负载均衡和容错机制可以替代F5等内网硬件负载均衡器,降低成本和单点。

自动服务注册和发现,不再需要写服务提供者的地址,注册中心可以根据接口名称查询服务提供者的IP地址,可以平滑地添加或删除服务提供者。

Dubbo基本原则-分布式服务框架

快速启动

Dubbo采用全Spring配置模式,透明访问应用,对应用没有API入侵。用Spring加载Dubbo 的配置,Dubbo负载基于Spring 的架构扩展。

服务提供者:定义服务接口。

定义服务接口:(这个接口需要单独打包,在服务提供者和消费者之间共享)

在服务提供者处实现接口。

在服务提供者处实现接口:(对服务消费者隐藏实现)

用Spring配置声明公开服务

负载弹簧配置

服务消费者:

加载Spring配置并调用远程服务:(也可以使用IoC注入)

Zookeeper注册表安装

建议使用dubbo-2.3.3或以上版本的zookeeper注册表客户端。

Zookeeper是Apache Hadoop的子项目,实力比较好。建议生产环境使用此注册表。

杜博没有不要对Zookeeper服务器做任何侵入性的修改,只需安装原生的Zookeeper服务器,当调用Zookeeper客户端时,注册表的所有逻辑适配就完成了。

开源URL:

http://alibaba.github.io/dubbo-doc-static/Home-zh.htm

动物园管理员下载地址:

http://zookeeper.apache.org/releases.html

Zookeeper注册表安装:

Installation-zh.htm http://alibaba.github.io/dubbo-doc-static/Zookeeper登记处

二、MuleMule是一个以Java为核心的轻量级消息框架和集成平台,基于EIP (Enterprise Integer Patterns,Hohpe和Woolf写的一本书)实现。Mule的核心组件是UMO(UniversalMessage Objects,从Mule2.0开始UMO的概念已经被componense组件所取代),UMO实现了集成逻辑。UMO可以是POJO,JavaBean等等。它支持30多种传输协议(文件、FTP、UDP、TCP、电子邮件、HTTP、SOAP、JMS等。)并集成了很多流行的开源项目,如Spring、ActiveMQ、CXF、Axis、Drools等。

Mule Studio是一个强大且用户友好的基于Eclipse的开发工具。用户可以在几分钟内轻松创建、编辑和测试Mule ESB流程,而无需深入理解Mule的XML配置语法。Mule Studio基于Eclipse技术,由三个主要组件组成:项目结构树、工具箱和画布。项目结构树包含整个项目的目录结构。

Mule是一个企业服务总线(ESB)消息框架。其主要特点包括:

1.基于J2EE1.4的企业消息总线和消息代理

2.可插拔连接:如Jms、jdbc、tcp、udp、组播、http、servlet、smtp、pop3、file、xmpp等。

3.在任何传输上支持异步、同步和请求响应事件处理机制。

4.支持Axis或Glue的Web服务。

5.灵活的部署结构[[拓扑]]包括客户机/服务器、P2P、ESB和企业服务网络。

6.与Spring框架的集成:可以作为ESB容器,也可以轻松嵌入到Spring应用中。

7.使用基于SEDA处理模型的高度可扩展的企业服务器。

8.基于EIP模式的强事件路由机制等。

三、wso2WSO2ESB是在ApacheV2.0许可下发布的一款快速、轻量、灵活的企业服务总线产品。ESB用于通过基于HTTP、HTTPS、JMS、mail等协议的业务系统过滤、转换、路由和处理SOAP、二进制、纯XML和文本消息。

WSO2ESB是一个完全成熟的企业ESB。WSO2ESB基于Apache Synapse项目。Apache Synapse使用Apache Axis2创建。

应用程序向ESB发送一条消息,由ESB传输获取该消息。

传输通过消息管道发送消息。像安全可靠的消息传递这样的信息质量由这个管道负责。这个管道内部是轴2的流入和流出。ESB可以有以下两种操作:

消息:使用单个管道

代理服务:使用独立的管道传输到不同的代理服务。

消息转换和消息路由可以视为一个独立的单元。如图所示,消息转换组件和路由组件之间没有明显的分离。WSO2ESB调用这个中介框架。有些转换发生在路由决策之前,有些转换发生在路由决策之后。这部分由Synapse执行。

然后根据目的地将消息注入到单独的管道中。这里再次确定了消息服务的质量。

传输层负责ESB所需的传输协议的转换。

该图显示了如何通过ESB的体系结构将请求传递给实际的端点。响应与此操作相反。

所有这些组件都可以通过WSO2ESB管理控制台进行管理和检测。

ESB组件

运送

WSO2ESB支持所有广泛使用的传输协议,包括HTTP/s、JMS、VFS和特定于域的传输,如FIX。使用axis2传输框架可以很容易地将一个新的传输协议添加和插入到ESB中。不同的传输工具给ESB带来了不同的消息内容/负载。

传输内容:

消息生成器:允许使用内容类型来标识消息,并将其转换为普通的XML消息集。因此,每种内容类型都有一个关联的构建器。WSO2ESB包含基于文本的内容信息的构建器和二进制内容的构建器。

消息格式:构建方的对方伙伴。在处理传输协议之前,格式化程序通过指示消息内容的类型将消息转换回原始格式。像transport这样的用户可以使用axis2框架来构造和格式化消息。

请参见运输。

端点(端点)

端点作为具有传输协议的逻辑组件。两组端点地址和WSDL。地址端点可以使用任何可用的传输来调度消息。

请参见端点。

代理服务(代理服务)

在WSO2ESB中,代理服务是一个使用消息接收者的虚拟服务,公开接收消息。可以使用类似于普通web服务地址的url来访问代理服务。代理允许将WSDL发布给程序组以供以前使用。您可以使用任何可用的传输协议从代理服务接收和发送消息。

请参见代理服务示例。

主题(主题)

Topics是恢复消息处理事件的另一个实现,包括订阅和事件。

参见事件

中介机构(中间人)

WSO2ESB s power还是一个综合调整库,提供不同方面的服务。使用中介库实现MEP和EIP的广泛使用。因为WSO2ESB提供了一个健康的框架,所以开发人员编写一个中介器非常容易。中介可以使用各种技术,包括Java、脚本和Spring。

参见调解员

序列(序列)

序列充当介体的配置成分。Sequence允许阻止介体实现流水线和过滤模式。

请参见序列。

任务和命令。

Tasks提供了在WSO2ESB中配置计划工作的工具,并允许执行中介的内部或外部命令。

请参见任务。

QoS组件(QoS组件)

Qos组件实现了可靠的消息传递以及代理服务的两个实现模块Apache Rempart和Sandesha的安全性。

配置,存储库/注册表(配置,存储库/注册表)

配置是ESB架构的架构图。WSO2ESB提供了一个内置的存储库/注册表来存储配置和配置元数据,还提供了使用远程库的工具。

以及管理和配置GUI。

有助于在生产环境中运行WSO2ESB组件可以在组件中找到。这些组件实现了集群、高可用性和负载平衡。

GUI组件用于GUI的集成管理、配置和检测。GUI通过分离前端和后端关注点来实现分层架构。这允许用户使用单个GUI控制台连接到多个后端。

WSO2ESB基于组件的架构增强了使用OSGi的松散耦合特性。所有组件都是作为OSGi软件包构建的。

四、cxfApacheCXF是一个开源服务框架。CXF通过使用前端编程API,如JAX-WS,帮助你构建和开发服务。这些服务可以支持多种协议,如SOAP、XML/HTTP、RESTful HTTP或CORBA,并且可以运行在多种传输协议上,如HTTP、JMS或JBI。CXF大大简化了服务的创建,同时也继承了XFire的传统,所以自然可以和Spring无缝集成。

功能性能

CXF包含大量的功能特性,但主要集中在以下几个方面:

支持web服务标准:CXF支持各种web服务标准,包括SOAP、BasicProfile、WS-Addressing、WS-Policy、WS-ReliableMessaging和WS-Security。前端:CXF支持各种前端编程模型。CXF实现了JAX-WS API(遵循JAX-WS 2.0版TCK),它还包含一个简单前端这允许在没有注释的情况下创建客户端和端点。CXF同时支持WSDL优先开发和Java代码优先开发模式。易于使用:CXF的设计更加直观和易于使用。有很多简单的API可以快速构建代码优先的服务,各种Maven插件也让集成更容易,支持JAX-WS API,支持Spring 2.0 更简化的XML配置,等等。对二进制和遗留协议的支持:CXF被设计成一个可插拔的架构,它可以支持XML和非XML类型的绑定,比如JSON和CORBA。

项目目标

下面列出了来自Apache CXF官方网站的项目目标。

概述

高性能、可扩展性、简单易用,支持多种标准

支持JAX-WS、JAX-RS、JSR-181和SAAJ;支持SOAP 1。1、1.2、WS-IBasicProfile、WS-Security、WS-Addressing、WS-RM和WS-Policy。支持wsdl 1.1、2.0;支持MTOM;

多种传输方法、绑定、数据绑定和格式

绑定:SOAP、REST/HTTP;数据绑定:目前支持JAXB 2.0和Aegis,默认为JAXB 2.0。CXF 2.1版将支持XMLBeans、Castor和JiBX数据绑定方法;格式):XML、JSON;传输方式:HTTP、Servlet、JMS和Jabber;可扩展API允许将其他绑定添加到CXF中,以支持其他消息格式,如CSV和固定记录长度。

2Apache CXF特性

灵活部署

轻量级容器:服务;可以部署在Tomcat或基于Spring的容器中;集成JBI:可以作为服务引擎部署在ServiceMix、OpenESB或Petals等JBI容器中。SCA:可以部署在Tuscany等SCA容器中;J2EE集成:服务可以部署在J2EE应用服务器中,如Geronimo、JOnAS、JBoss、WebSphereApplication Server和WebLogic Application Server,以及Jetty和Tomcat。独立的Java客户端/服务器。

支持多种编程语言

全面支持JAX-WS 2.0客户端/服务器编程模式;支持JAX-WS 2.0同步、异步和单向API s;支持JAX-WS 2.0动态调用接口(DII)API;支持包装和非包装样式;XML消息传递API被支持;客户端和服务器端都支持JavaScript和ECMAScript 4 XML(E4X);支持CORBA通过洋子;SCA是通过托斯卡纳支持的;支持JBI;通过ServiceMix

代码生成

Java toWSDLWSDLto Javaxsd to WSDL;WSDLto XMLWSDLto SOAPWSDLto服务;

CXF框架支持环境

CXF框架是一个基于Servlet技术的SOA应用开发框架。为了正常运行基于CXF框架的企业应用,除了CXF框架本身,还需要JDK和Servlet容器。

五、 dubbox Dangdang.com我们根据自己的需要为Dubbox实现了一些新的功能,并命名为Dubbox (DubboeXtensions)。

的主要新功能包括:

支持REST式远程调用(HTTP JSON/XML):基于非常成熟的JBoss RestEasy框架,在dubbo中实现了REST式远程调用(HTTP JSON/XML),显著简化了企业内部的跨语言交互,同时显著简化了Open API、无线API甚至AJAX server的开发。事实上,这个REST调用也使Dubbo能够为今天提供基本的支持it’特别受欢迎。微服务建筑。此外,REST call也取得了很高的性能。基准测试下,HTTP JSON和Dubbo 2.x 的默认RPC协议(即TCP Hessian2二进制序列化)只有1.5倍左右。详见下面的基准测试报告。

支持基于Kryo和FST的Java高效序列化实现:基于众所周知的Kryo和FST高性能序列化库,在Dubbo 的默认RPC协议,并对其序列化系统进行了优化和调整,显著提高了Dubbo RPC的性能。详见下图和文档中的基准测试报告。

支持基于嵌入式tomcat的HTTP remoting系统:dubbo s HTTP remoting系统(dubbo-remoting-http)基于嵌入式Tomcat实现,以逐步取代dubbo中的旧版本嵌入式Jetty,可以显著提升REST等的远程调用性能,并将Servlet API的支持从2.5升级到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTP Invoker等协议都是基于这个HTTP remoting系统)。

升级Spring:将dubbo中的Spring从2.x升级到目前最常用的3.x版本,减少项目中版本冲突带来的麻烦。

升级zookeeper客户端:将dubbo中的ZooKeeper客户端升级到最新版本,修复旧版本中包含的bug。

注意:dubbox和dubbo 2.x兼容,不改变任何dubbo 的现有功能和配置方式(升级版本如Spring除外)。此外,dubbox还严格遵循Apache 2.0许可证的要求。

简而言之,soa架构具有松耦合、高重用、灵活开发和维护、支持多平台多系统、对原系统支持好、消除信息孤岛等诸多优点。以dubbo为代表的开发方法有一百多种,以上五种主要方法值得学习和采用。我相信他们会带来巨大的价值!

标签:服务信息系统

消息

最新文章