soa 订阅
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。 展开全文
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
信息
外文名
Service-Oriented Architecture
本    质
SOA
中文名
面向服务的结构
SOA定义介绍
面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。SOA系统是一种企业通用性架构。
收起全文
精华内容
下载资源
问答
  • SOA

    2016-03-09 10:47:48
    1、SOA-面向服务的架构,可以说是一种架构风格,一种IT系统咨询和建设的方法论,也可以说是一种新的商业模式,SOA核心从SOA定义可以看到包括两个方面内容,一个是抽象出服务,这些服务满足离散,松耦合,可复用,...


    描述:
    1、SOA-面向服务的架构,可以说是一种架构风格,一种IT系统咨询和建设的方法论,也可以说是一种新的商业模式,SOA核心从SOA定义可以看到包括两个方面内容,一个是抽象出服务,这些服务满足离散,松耦合,可复用,自治,无状态等基本特征,一个是服务可以灵活的组装和编排,满足流程整合和业务变化的需要。所以SOA是一个很宽泛的概念,只要满足上面两条,实施思路是符合上面两条都是SOA的思路。

    2、ESB-企业服务总线,是SOA技术架构落地的一个基本部件,现在我们说的SOA集成平台基本都需要有ESB组件,ESB最基本功能即是实现点对点集成到总线式集成的转换,在这个过程中实现了消息协议的转换和适配,数据传输,数据转换和映射,路由等基本功能。ESB发展从原有的EAI以消息中间件为核心转化到现在的以服务为核心,但是仍然支持消息转换和接入。

    3、Web-Service是一种技术方面的标准,真正的跨语言,跨平台,提供了标准的服务定义,服务注册,服务接入和访问的方式。在讲SOA时候我们会谈到需要实现操作方法和操作数据的解耦,web service可以比较好的做到这一点,包括我们用wsdl进行方法层面的定义,用xsd进行传输数据的定义 。但是Web-Service和SOA架构风格没有直接关系,Web-Service只是一种实现方法,不用Web-Service也可以实现SOA架构风格,这一点必须明确。否则一谈到SOA就简单理解为web service就犯大错误了。

    4、xfire,cxf,axis是webservice的具体实现框架,可以直接使用。直接部署到应用服务器上即可(tomcat、weblogic、webpherer、jetty等------>基础就是servlet容器)

    Axis2框架和CXF框架,不管是服务提供方还是服务消费方,都建议选择CXF框架,axis框架不管是老版本,还是最新的版本,总是存在兼容性方面的各种问题,这个我们在实践中遇到过很多,现在已经只推荐使用CXF框架。

    5、rest:直接实现了SOA,它基于HTTP协议,是一种明确构建在客户端/服务端体系结构上的一种风格。特征如下:
    1)、网络上的资源都被抽象为资源,这些资源都具有唯一的统一资源标识符(URI:Uniform Resource Identiter),这些资        源都是自我们描述的。这些资源使用HTTP内容标头类型指定。如:XML、JSON、HTML、PNG等。
    2)、服务的使用者通过HTTP协议的标准动作(Get、Put、Post、Delete)通过统一的接口对资源进行操作。
    3)、对资源进行的操作不会改变它的URI。
    4)、客户端、服务端之间的交互是没有状态的。由于这种无状态行,服务端不需要为每个客户端维护Context

    rest与webservice的区别:

    1、REST风格下的,只有一种协议,那就是HTTP。webservice就和多种协议了。如:TCP、HTTP、MSMQ等多种协议

    2、使用方式上的不同。REST只要客户端能够模拟HTTP请求,通过标准的HTTP动作,都可以进行访问。它使用的    是HTTPChannel管道,而webservice使用的管道有HTTPChannel、TcpChannel、RPC等多种。

    3、REST寄宿时,虽然可以选择多种寄宿方式,但必须有应用服务器的支持。



    soa是服务对服务的,web service是服务对客户端的. 

    都提供服务。 
    服务接口都是基于开发的。 
    服务接口和服务的具体实现都是分离的。 
    Web Service服务接口需要绑定具体实现服务的服务组件来实现服务,它对具体的服务实现完成了封装,实现了服务的透明化,客户端不需要知道服务是如何实现的,但是Web Service组件本身是知道服务是如何实现的, 

    另外客户端调用Web Service组件时,需要知道Web Service的具体位置和传输协议,这些都会造成一定的不灵活性,它只是实现了一定程度上的抽象。 
    SOA架构只和服务接口进行绑定,对服务接口实现了封装,实现了服务接口的透明化,服务位置的透明化,服务传输协议的透明化。SOA本身也不知道服务具体是如何实现的。当客户端通过SOA调用服务时,不需要知道真正的服务提供者是谁,具体的服务位置在哪里和具体的传输协议是什么。SOA实现了最高程度上的抽象化,为实现具有最高灵活性的服务建立了架构基础。 
    SOA架构的要点: 
    SOA架构所提供的服务之间是松散耦合的。 
    SOA架构应该按更接近于实际业务本身的粗粒度的角度来对服务进行划分,发布服务接口方法。这就要求设计和开发人员直接从业务的角度来构建SOA所提供的服务,而不仅仅从模块和技术的角度来构建SOA服务。 
    SOA架构中的所有服务的具体实现、位置和传输协议对调用者来说都是透明的。

    先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构,既然说是一种架构的话,所以一般认为 SOA 是包含了运行环境,编程模型,架构风格和相关方法论等在内的一整套新的分布式软件系统构造方法和环境,涵盖服务的整个生命周期。而在 SOA 的架构风格中,服务是最核心的抽象手段。SOA 中的服务是构建在一些列基于开放标准的基础之上的,

    Web 服务定义了如何在异构系统之间实现通信的标准化方法,从而就使得 Web 服务可以跨越运行平台和实现语言,同时也使得 Web 服务成为了实现 SOA 中服务的主要技术。 

    基于SOA的解决方案,努力使经营目标而建立企业的质量体系。SOA架构是五层水平:

        1.  用户界面层–这些GUI的最终用户或应用程序访问的应用程序/服务接口。
        2.  业务流程 层–这些精心设计的代表在应用方面的业务用例服务。
        3.  服务层–服务合并在一起,为整个企业提供实时服务。
        4.  服务组件 –用来建造服务的组件,如功能库和技术库,技术接口等。
        5.  操作系统–这层包含数据模型,企业数据仓库,技术平台等。

     

    维基百科解释:SOA:面向服务的软件架构(Service Oriented Architecture),是一种计算机软件的设计模式,主要应用于不通应用组件中通过某种协议来互操作,例如典型的通过网络协议。因此SOA是独立于任何厂商、产品与技术的。

    SOA作为一种架构依赖于服务的方向,它的基本设计原理是:服务提供了一个简单的接口,抽象了底层的复杂性,然后用户可以访问独立的服务,而不需要去了解服务底层平台实现。

    正因为SOA架构实现不依赖于技术,因此能够被各种不同的技术实现。

    例如:
    SOAPRPC
    REST
    DCOM
    CORBA
    OPC-UA
    Web services
    DDS
    Java RMI
    WCF (Microsoft's implementation of web services now forms a part of WCF)
    Apache Thrift
    SORCER
    因此REST、SOAP、RPC、RMI、DCOM等都是SOA的一种实现而已。

     


       
    展开全文
  • soa

    2006-11-05 15:52:00
    从今天开始, 学习soa. 向CSDN证书迈进 呵呵
    从今天开始, 学习soa.  向CSDN证书迈进  呵呵
    展开全文
  • SOA/软件架构设计---面向服务的架构(SOA详细解释)

    万次阅读 多人点赞 2019-03-06 16:53:53
    迄今为止,对于面向服务的架构(Service-Oriented Architecture,SOA)还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述,较为典型的有以下三个: (1)W3C 的定义:SOA 是一种应用程序...

    文章比较多,但干货慢慢,请耐心阅读

    目录

    面向服务的架构 

    1 SOA 概述 

        1. 服务的基本结构

        2.SOA 设计原则 

        3. 服务构件与传统构件

    2 SOA 的关键技术

        1. UDDI 

        2.WSDL 

        3.SOAP 

        4.REST 

    3 SOA 的实现方法

        1.Web Service 

        2. 服务注册表

        3. 企业服务总线

    4 微服务 

        1.微服务的优势 

        2. 微服务面临的挑战

        3.微服务与 SOA


    面向服务的架构 

        迄今为止,对于面向服务的架构(Service-Oriented Architecture,SOA)还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述,较为典型的有以下三个:

        (1)W3C 的定义:SOA 是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。

        (2)Service-architecture.com 的定义:服务是精确定义、封装完善、独立于其他服务所处环境和状态的函数。SOA 本质上是服务的集合,服务之间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务之间需要某些方法进行连接。

        (3)Gartner 的定义:SOA 是一种 C/S 架构的软件设计方法,应用由服务和服务使用者组成,SOA 与大多数通用的 C/S 架构模型不同之处,在于它着重强调构件的松散耦合,并使用独立的标准接口。

    1 SOA 概述 

        SOA 是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。 SOA 并不是一个新鲜事物,而只是面向对象模型的一种替代。虽然基于 SOA 的系统并不排除使用 OOD 来构建单个服务,但是其整体设计却是面向服务的。由于 SOA 考虑到了系统内的对象,所以虽然SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。

        SOA 系统原型的一个典型例子是 CORBA,它已经出现很长时间,其定义的概念与 SOA 相似。SOA 建立在 XML 等新技术的基础上,通过使用基于 XML 的语言来描述接口,服务已经转到更动态且更灵活的接口系统中,CORBA 中的 IDL 无法与之相比。图 9-13 描述了一个完整的 SOA 模型。

        在 SOA 模型中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务通过服务总线或流程管理器来连接。这种松散耦合的架构使得各服务在交互过程中无需考虑双方的内部实现细节,以及部署在什么平台上。

        1. 服务的基本结构

        一个独立的服务基本结构如图 9-14 所示。

        由图 9-14 可以看出,服务模型的表示层从逻辑层分离出来,中间增加了服务对外的接口层。通过服务接口的标准化描述,使得服务可以提供给在任何异构平台和任何用户接口使用。这允许并支持基于服务的系统成为松散耦合、面向构件和跨技术实现,服务请求者很可能根本不知道服务在哪里运行、是由哪种语言编写的,以及消息的传输路径,而是只需要提出服务请求,然后就会得到答案。

        2.SOA 设计原则 

        在 SOA 架构中,继承了来自对象和构件设计的各种原则,例如,封装和自我包含等。那些保证服务的灵活性、松散耦合和复用能力的设计原则,对 SOA 架构来说同样是非常重要的。关于服务,一些常见的设计原则如下:

        (1)明确定义的接口。服务请求者依赖于服务规约来调用服务,因此,服务定义必须长时间稳定,一旦公布,不能随意更改;服务的定义应尽可能明确,减少请求者的不适当使用;不要让请求者看到服务内部的私有数据。

        (2)自包含和模块化。服务封装了那些在业务上稳定、重复出现的活动和构件,实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。

        (3)粗粒度。服务数量不应该太多,依靠消息交互而不是远程过程调用,通常消息量比较大,但是服务之间的交互频度较低。

        (4)松耦合。服务请求者可见的是服务的接口,其位置、实现技术、当前状态和私有数据等,对服务请求者而言是不可见的。

        (5)互操作性、兼容和策略声明。为了确保服务规约的全面和明确,策略成为一个越来越重要的方面。这可以是技术相关的内容,例如,一个服务对安全性方面的要求;也可以是与业务有关的语义方面的内容,例如,需要满足的费用或者服务级别方面的要求,这些策略对于服务在交互时是非常重要的。

        3. 服务构件与传统构件

        服务构件架构(Service Component Architecture,SCA)是基于 SOA 的思想描述服务之间组合和协作的规范,它描述用于使用 SOA 构建应用程序和系统的模型。它可简化使用 SOA 进行的应用程序开发和实现工作。SCA 提供了构建粗粒度构件的机制,这些粗粒度构件由细粒度构件组装而成。SCA 将传统中间件编程从业务逻辑分离出来,从而使程序员免受其复杂性的困扰。它允许开发人员集中精力编写业务逻辑,而不必将大量的时间花费在更为底层的技术实现上。

        SCA 服务构件与传统构件的主要区别在于,服务构件往往是粗粒度的,而传统构件以细粒度居多;服务构件的接口是标准的,主要是服务描述语言接口,而传统构件常以具体 API 形式出现;服务构件的实现与语言是无关的,而传统构件常绑定某种特定的语言;服务构件可以通过构件容器提供 QoS 的服务,而传统构件完全由程序代码直接控制。

    2 SOA 的关键技术

        SOA 伴随着无处不在的标准,为企业的现有资产或投资带来了更好的复用性。SOA 能够在最新的和现有的系统之上创建应用,借助现有的应用产生新的服务,为企业提供更好的灵活性来构建系统和业务流程。SOA 是一种全新的架构,为了支持其各种特性,相关的技术规范不断推出。与 SOA 紧密相关的技术主要有 UDDI、WSDL、SOAP 和 REST 等,而这些技术都是以 XML 为基础而发展起来的。

        1. UDDI 

        UDDI(Universal DescriptionDiscovery and Integration,统一描述、发现和集成)提供了一种服务发布、查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。UDDI 规范描述了服务的概念,同时也定义了一种编程接口。通过 UDDI 提供的标准接口,企业可以发布自己的服务供其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务上。

        在 UDDI 技术规范中,主要包含以下三个部分的内容:

        (1)数据模型。UDDI 数据模型是一个用于描述业务组织和服务的 XML Schema。

        (2)API。UDDI API 是一组用于查找或发布 UDDI 数据的方法,UDDI API 基于 SOAP。

        (3)注册服务。UDDI 注册服务是 SOA 中的一种基础设施,对应着服务注册中心的角色。 

        2.WSDL 

        WSDL(Web ServiceDescription Language,Web 服务描述语言)是对服务进行描述的语言,它有一套基于 XML 的语法定义。WSDL 描述的重点是服务,它包含服务实现定义和服务接口定义,如图 9-15 所示。

        采用抽象接口定义对于提高系统的扩展性很有帮助。服务接口定义就是一种抽象的、可重用的定义,行业标准组织可以使用这种抽象的定义来规定一些标准的服务类型,服务实现者可以根据这些标准定义来实现具体的服务。

        服务实现定义描述了给定服务提供者如何实现特定的服务接口。服务实现定义中包含服务和端口描述。一个服务往往会包含多个服务访问入口,而每个访问入口都会使用一个端口元素来描述,端口描述的是一个服务访问入口的部署细节,例如,通过哪个地址来访问,应当使用怎样的消息调用模式来访问等。

        3.SOAP 

        SOAP(Simple ObjectAccess Protocol,简单对象访问协议)定义了服务请求者和服务提供者之间的消息传输规范。SOAP 用 XML 来格式化消息,用 HTTP 来承载消息。通过 SOAP,应用程序可以在网络中进行数据交换和远程过程调用(Remote Procedure Call, RPC)。SOAP 主要包括以下四个部分:

        (1)封装。SOAP 封装定义了一个整体框架,用来表示消息中包含什么内容,谁来处理这些内容,以及这些内容是可选的还是必需的。

        (2)编码规则。SOAP 编码规则定义了一种序列化的机制,用于交换系统所定义的数据类型的实例。

        (3)RPC 表示。SOAP RPC 表示定义了一个用来表示远程过程调用和应答的协议。

        (4)绑定。SOAP 绑定定义了一个使用底层传输协议来完成在节点之间交换 SOAP 封装的约定。

        SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求/应答的模式。所有的 SOAP 消息都使用 XML 进行编码。SOAP 消息包括以下三个部分:

        (1)封装(信封)。封装的元素名是 Envelope,在表示消息的 XML 文档中,封装是顶层元素,在 SOAP 消息中必须出现。

        (2)SOAP 头。SOAP 头的元素名是 Header,提供了向 SOAP 消息中添加关于这条 SOAP 消息的某些要素的机制。SOAP 定义了少量的属性用来表明这项要素是否可选以及由谁来处理。SOAP 头在 SOAP 消息中可能出现,也可能不出现。如果出现的话,必须是 SOAP 封装元素的第一个直接子元素。

        (3)SOAP 体。SOAP 体的元素名是 Body,是包含消息的最终接收者想要的信息的容器。SOAP 体在 SOAP 消息中必须出现且必须是 SOAP 封装元素的直接子元素。如果有头元素,则SOAP 体必须直接跟在 SOAP 头元素之后;如果没有头元素,则 SOAP 体必须是 SOAP 封装元素的第一个直接子元素。

        4.REST 

        REST(RepresentationalState Transfer,表述性状态转移)是一种只使用 HTTP 和 XML 进行基于 Web 通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。它的简单性和缺少严格配置文件的特性,使它与 SOAP 很好地隔离开来,REST 从根本上来说只支持几个操作(POST、GET、PUT 和 DELETE),这些操作适用于所有的消息。REST 提出了如下一些设计概念和准则:

        (1)网络上的所有事物都被抽象为资源。

        (2)每个资源对应一个唯一的资源标识。

        (3)通过通用的连接件接口对资源进行操作。

        (4)对资源的各种操作不会改变资源标识。

        (5)所有的操作都是无状态的。

    3 SOA 的实现方法

        SOA 只是一种概念和思想,需要借助于具体的技术和方法来实现它。从本质上来看, SOA 是用本地计算模型来实现一个分布式的计算应用,也有人称这种方法为“本地化设计,分布式工作”模型。CORBA、DCOM 和 EJB 等都属于这种解决方式,也就是说,SOA 最终可以基于这些标准来实现。有关这些标准的知识,已经在 13.1.1 节中详细介绍。另外,这些标准分别使用的 ORB、RPC 和 RMI(Remote Method Invocation,远程方法调用)等技术,将在 17.1.2 节中介绍,此处不再赘述。

        从逻辑上和高层抽象来看,目前,实现 SOA 的方法也比较多,其中主流方式有 Web Service、企业服务总线和服务注册表。

        1.Web Service 

        在 Web Service(Web 服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必需的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了 SOA 的一种实现架构,如图 9-16 所示。

        (1)服务提供者。服务提供者是服务的所有者,该角色负责定义并实现服务,使用 WSDL 对服务进行详细、准确、规范地描述,并将该描述发布到服务注册中心,供服务请求者查找并绑定使用。

        (2)服务请求者。服务请求者是服务的使用者,虽然服务面向的是程序,但程序的最终使用者仍然是用户。从架构的角度看,服务请求者是查找、绑定并调用服务,或与服务进行交互的应用程序。服务请求者角色可以由浏览器来担当,由人或程序(例如,另外一个服务)来控制。

        (3)服务注册中心。服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,而服务请求者在服务注册中心查找他们需要的服务。不过,在某些情况下,服务注册中心是整个模型中的可选角色。例如,如果使用静态绑定的服务,服务提供者则可以把描述直接发送给服务请求者。

        Web Service 模型中的操作包括发布、查找和绑定,这些操作可以单次或反复出现。

        (1)发布。为了使用户能够访问服务,服务提供者需要发布服务描述,以便服务请求者可以查找它。

        (2)查找。在查找操作中,服务请求者直接检索服务描述或在服务注册中心查询所要求的服务类型。对服务请求者而言,可能会在生命周期的两个不同阶段中涉及查找操作,首先是在设计阶段,为了程序开发而查找服务的接口描述;其次是在运行阶段,为了调用而查找服务的位置描述。

        (3)绑定。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系并调用服务,从而在运行时与服务进行交互。绑定可以分为动态绑定和静态绑定。在动态绑定中,服务请求者通过服务注册中心查找服务描述,并动态地与服务交互;在静态绑定中,服务请求者已经与服务提供者达成默契,通过本地文件或其他方式直接与服务进行绑定。

        在采用 Web Service 作为 SOA 的实现技术时,应用系统大致可以分为六个层次,分别是底层传输层、服务通信协议层、服务描述层、 服务层、业务流程层和服务注册层。

        (1)底层传输层。底层传输层主要负责消息的传输机制,HTTP、JMS(Java Messaging Service,Java 消息服务)和 SMTP 都可以作为服务的消息传输协议,其中 HTTP 使用最广。

        (2)服务通信协议层。服务通信协议层的主要功能是描述并定义服务之间进行消息传递所需的技术标准,常用的标准是 SOAP 和 REST 协议。

        (3)服务描述层。服务描述层主要以一种统一的方式描述服务的接口与消息交换方式,相关的标准是 WSDL。

        (4)服务层。服务层的主要功能是将遗留系统进行包装,并通过发布的 WSDL 接口描述被定位和调用。

        (5)业务流程层。业务流程层的主要功能是支持服务发现,服务调用和点到点的服务调用,并将业务流程从服务的底层调用抽象出来。

        (6)服务注册层的主要功能是使服务提供者能够通过 WSDL 发布服务定义,并支持服务请求者查找所需的服务信息。相关的标准是 UDDI。

        2. 服务注册表

        服务注册表(service registry)虽然也具有运行时的功能,但主要在 SOA设计时使用。它提供一个策略执行点(Policy Enforcement Point,PEP),在这个点上,服务可以在 SOA 中注册,从而可以被发现和使用。服务注册表可以包括有关服务和相关构件的配置、依从性和约束文件。从理论上来说,任何帮助服务注册、发现和查找服务合约、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。大多数商用服务注册产品支持服务注册、服务位置和服务绑定功能。

        (1)服务注册。服务注册是指服务提供者向服务注册表发布服务的功能(服务合约),包括服务身份、位置、方法、绑定、配置、方案和策略等描述性属性。使用服务注册表实现 SOA 时,要限制哪些新服务可以向注册表发布、由谁发布以及谁批准和根据什么条件批准等,以便使服务能够有序的注册。

        (2)服务位置。服务位置是指服务使用者,帮助它们查询已注册的服务,寻找符合自身要求的服务。这种查找主要是通过检索服务合约来实现的,在使用服务注册表实现 SOA 时,需要规定哪些用户可以访问服务注册表,以及哪些服务属性可以通过服务注册表进行暴露等,以便服务能得到有效的、经过授权的使用。

        (3)服务绑定。服务使用者利用查找到的服务合约来开发代码,开发的代码将与注册的服务进行绑定,调用注册的服务,以及与它们实现互动。可以利用集成的开发环境自动将新开发的服务与不同的新协议、方案和程序间通信所需的其他接口绑定在一起。

        3. 企业服务总线

        ESB 的概念是从 SOA 发展而来的,它是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。

         在一个复杂的企业计算环境中,如果服务提供者和服务请求者之间采用直接的端到端的交互,那么随着企业信息系统的增加和复杂度的提高,系统之间的关联会逐渐变得非常复杂,形成一个网状结构,这将带来昂贵的系统维护费用,同时也使得 IT 基础设施的复用变得困难重重。ESB 提供了一种基础设施,消除了服务请求者与服务提供者之间的直接连接,使得服务请求者与服务提供者之间进一步解耦。

        ESB 是由中间件技术实现并支持 SOA的一组基础架构,是传统中间件技术与 XML、 Web Service 等技术结合的产物,是在整个企业集成架构下的面向服务的企业应用集成机制。具体来说,ESB 具有以下功能:

        (1)支持异构环境中的服务、消息和基于事件的交互,并且具有适当的服务级别和可管理性。

        (2)通过使用 ESB,可以在几乎不更改代码的情况下,以一种无缝的非侵入方式使现有系统具有全新的服务接口,并能够在部署环境中支持任何标准。

        (3)充当缓冲器的 ESB(负责在诸多服务之间转换业务逻辑和数据格式)与服务逻辑相分离,从而使不同的系统可以同时使用同一个服务,不用在系统或数据发生变化时,改动服务代码。

        (4)在更高的层次,ESB 还提供诸如服务代理和协议转换等功能。允许在多种形式下通过像HTTP、SOAP 和 JMS 总线的多种传输方式,主要是以网络服务的形式,为发表、注册、发现和使用企业服务或界面提供基础设施。

        (5)提供可配置的消息转换翻译机制和基于消息内容的消息路由服务,传输消息到不同的目的地。

        (6)提供安全和拥有者机制,以保证消息和服务使用的认证、授权和完整性。

        在企业应用集成方面,与现存的、专有的集成解决方案相比,ESB 具有以下优势:

        (1)扩展的、基于标准的连接。ESB 形成一个基于标准的信息骨架,使得在系统内部和整个价值链中可以容易地进行异步或同步数据交换。ESB 通过使用 XML、SOAP 和其他标准,提供了更强大的系统连接性。

        (2)灵活的、服务导向的应用组合。基于 SOA,ESB 使复杂的分布式系统(包括跨多个应用、系统和防火墙的集成方案)能够由以前开发测试过的服务组合而成,使系统具有高度可扩展性。

        (3)提高复用率,降低成本。按照 SOA 方法构建应用,提高了复用率,简化了维护工作,进而减少了系统总体成本。

        (4)减少市场反应时间,提高生产率。ESB 通过构件和服务复用,按照 SOA 的思想简化应用组合,基于标准的通信、转换和连接来实现这些优点。

    4 微服务 

         微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。通俗一点来说,微服务类似于古代著名的发明,活字印刷术,每个服务都是一个组件,通过编排组合的方式来使用,从而真正做到了独立、解耦、组件化、易维护、可复用、可替换、高可用、最终达到提高交付质量、缩短交付周期的效果。

        从专业的角度来看,微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP  协议的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

        所以总结起来,微服务的核心特点为:小, 且专注于做⼀件事情、轻量级的通信机制、松耦合、独立部署。

        1.微服务的优势 

        微服务之所以能盛行,必然是有它独特优势的,下面我们来分析微服务有哪些方面的优势。

        (1)技术异构性 

        在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术来实现。如,要开发一个社交平台,此时,我们可能使用文档型数据库来存储帖 子的内容,使用图数据来存储朋友圈的这些关系等,这样可以把每一块的性能都充分发挥 出来。

        同时,在应用新技术时,微服务架构也提供了更好的试验场。因为对于单块的系统而 言,采用一个新的语言、数据库或者框架都会对整个系统产生巨大的影响,这样导致我们 想尝试新技术时,望而却步。但微服务不同,我们完全可以只在一个微服务中采用新技术, 待技术使用熟练之后,再推广到其他服务。

        (2)弹性 

         弹性主要讲的是系统中一部分出现故障会引起多大问题。在单块系统中,一个部分出现问题,可能导致整体系统的问题。而微服务架构中,每个服务可以内置可用性的解决方 案与功能降级方案,所以比单块系统强。

        (3)扩展 

         单块系统中,我们要做扩展,往往是整体进行扩展。而在微服务架构中,可以针对单个服务进行扩展。

        (4)简化部署 

        在大型单块系统中,即使修改一行代码,也需要重新部署整个应用系统。这种部署的影响很大、风险很高,因此不敢轻易地重新部署。而微服务架构中,每个服务的部署都是 独立的,这样就可以更快地对特定部分的代码进行部署。

        (5)与结织结构相匹配 

        我们都知道,团队越大越难管理,同时团队越大也代表系统规模越大代码库越大,这样容易引起一系列的问题。且当团队是分布式的时候,问题更严重。微服务架构就能很好地解决这个问题,微服务架构可以将架构与组织结构相匹配,避免出现过大的代码库,从而获得理想的团队大小及生产力。服务的所有权也可以在团队之 间迁移,从而避免异地团队的出现。

        (6)可组合性 

        在微服务架构中,系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构建应用,而整体化应用程序只能提供一个非常粗粒度的接口供外部使用。

        (7)对可替代性的优化 

        在单块系统中如果删除系统中的上百行代码,也许不知道会发生什么,引起什么样的问题,因为单块系统中关联性很强。但在微服务架构中,我们可以在需要时轻易地重写服务,或者删除不再使用的服务。

        2. 微服务面临的挑战

        软件开发业内有一句名言“软件开发没有银弹”,虽然前面介绍了微服务很多方面的优势,但微服务并不能解决所有问题。下面我们来分析在使用微服务架构时可能面临的一些挑战。

        (1)分布式系统的复杂度

        使用微服务实现分布式系统的复杂度要比单块系统高。这表现在多个方面,如:性能方面微服务是拆分成多个服务进行部署,服务间的通信都是通过网络,此时的性能会受影响。同时可靠性也会受影响。数据一致性也需要严格控制,其成本也比单块系统高。

        (2)运维成本

        相比传统的单块架构应用,微服务将系统分成多个独立的部分,每个部分都是可以独立部署的业务单元。这就意味着,原来适用于单块架构的集中式的部署、配置、监控或者日志收集等方式,在微服务架构下,随着服务数量的增多,每个服务都需要独立的配置、部署、监控、日志收集等,因此成本呈指数级增长。

        (3)部署自动化

        传统单块系统部署往往是以月、周为单位,部署频度很低,在这种情况下,手动部署是可以满足需求的。而对于微服务架构而言,每个服务都是一个独立可部署的业务单元,每个服务的修改都需要独立部署。这样部署的成本是比较高的,如亚马逊,每天都要执行数十次、甚至上百次的部署,此时仍用人工部署是行不通的,要使用自动化部署。如何有效地构建自动化部署流水线,降低部署成本、提高部署频率,是微服务架构下需要面临的一个挑战。

        (4)DevOps 与组织结构

        传统单块架构中,团队通常是按技能划分,如开发部、测试部、运维部,并通过项目的方式协作,完成系统交付。而在微服务架构的实施过程中,除了如上所述的交付、运维上存在的挑战,在组织或者团队层面,如何传递 DevOps 文化的价值,让团队理解 DevOps 文化的价值,并构建全功能团队,也是一个不小的挑战。

        微服务不仅表现出一种架构模型,同样也表现出一种组织模型。这种新型的组织模型意味着开发人员和运维的角色发生了变化,开发者将承担起服务整个生命周期的责任,包括部署和监控,而运维也越来越多地表现出一种顾问式的角色,尽早考虑服务如何部署。因此,如何在微服务的实施中,按需调整组织架构,构建全功能的团队,是一个不小的挑战。

        (5)服务间依赖测试

        由于微服务架构是把系统拆分为若干个可独立部署的服务,所以需要进行服务间的依赖测试。在服务数量较多的情况下,如何有效地保证服务之间能有效按照接口的约定正常工作,成为微服务实施过程中必须面临的巨大挑战。

        (6)服务间依赖管理

        传统的单块系统,功能实现比较集中,大部分功能都运行在同一个应用中,同其他系统依赖较少。而微服务架构则不同,在将系统功能拆分成相互协作的独立服务之后,随着微服务个数的增多,如何清晰有效地展示服务之间的依赖关系,成为了一个挑战。

        3.微服务与 SOA

        微服务可以讲是 SOA 的一种,但仔细分析与推敲,我们又能发现他们的一些差异。这种差异表现在多个方面,具体如表 9-8 所示。

        这些差异自然影响到其实现,在实现方面的主要差异如表 9-9 所示。


    --------------------- 
    作者:hu19930613 
    来源:CSDN 
    原文:https://blog.csdn.net/hu19930613/article/details/82749534 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • SOA算法的简单实现,基于matlab的SOA算法
  • SOA-源码

    2021-03-18 00:21:40
    SOA
  • SOA_SOAALGORITHM_SOA_SOA算法.zip
  • SOASOA Prj-源码

    2021-02-21 00:43:10
    SOASOA Prj
  • SOA_SOAALGORITHM_SOA_SOA算法_源码.zip
  • SOA案例研究:SOA设计

    2021-02-27 11:40:49
    火龙果软件工程技术中心 本文内容包括:帐户开立项目的挑战SOA设计场景的帐户开立计划将SOA场景模式应用于该案例研究总结参考资料本文是面向服务的体系结构(SOA)系列之一,主要通过名为JKHLEnterprises(JKHLE)的...
  • SOA分布式学习资料
  • 精通SOA

    2021-03-03 01:12:42
    第1部分:构建服务组合作者:DanHynes和SalilPradhan尽管面向服务的体系结构或SOA仍然是新生事物,但许多公司正逐步认识到需要采用SOA方法作为执行满足业务需求的解决方案的方法。采用这种方法的一个关键步骤是构建...
  • 火龙果软件工程技术中心 SOA成熟度模型(SOAMaturityModel)可以为IT和业务用户提供一种框架,使其能够正确地评估SOA在企业中的适用性和收益。在过去的10年中,面向服务的架构(SOA)已经成为应用设计、开发和实施...
  • SOA 介绍

    千次阅读 2016-03-26 11:34:07
    soa

    一、SOA介绍

        面向服务的体系结构(英语:service-oriented architecture)是构造分布式计算的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。它采用开放标准、与软件资源进行交互并采用表示的标准方式。

        企业系统的架构师认为SOA能够帮助业务迅速和高效地响应变化的市场条件。 服务导向的架构在宏观(服务)上,而不是在微观上(对象)因此提高了重复使用性。同时,服务导向的架构可以简化与传统系统的互连和使用。

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


    二、SOA的原则

        以下指导原则是开发,维护和使用SOA的基本原则:

    • 可重复使用, 粒度, 模组性, 可组合型, 物件化原件, 构件化以及具交互操作性。
    • 符合开放标准(通用的或行业的)。
    • 服务的识别和分类,提供和发布,监控和跟踪。

    下面是一些特定的体系架构原则:

    • 服务封装
    • 服务松耦合(Loosely coupled) - 服务之间的关系最小化,只是互相知道。
    • 服务契约 - 服务按照服务描述文档所定义的服务契约行事。
    • 服务抽象 - 除了服务契约中所描述的内容,服务将对外部隐藏逻辑。
    • 服务的重用性 - 将逻辑分布在不同的服务中,以提高服务的重用性。
    • 服务的可组合性 - 一组服务可以协调工作并组合起来形成一个组合服务。
    • 服务自治 – 服务对所封装的逻辑具有控制权
    • 服务无状态 – 服务将一个活动所需保存的资讯最小化。
    • 服务的可被发现性 – 服务需要对外部提供描述资讯,这样可以通过现有的发现机制发现并访问这些服务。[4]

          除此以外,在定义一个SOA实现时,还需要考虑以下因素:

    • 生命周期管理
    • 有效使用系统资源
    • 服务成熟度和性能

    三、服务导向的架构和Web服务协议

    • XML - 一种标记语言,用于以文档格式描述消息中的数据。
    • HTTP(或HTTPS) - 客户端和服务端之间用于传送信息而发送请求/回复的协议。
    • 在计算机网络上交换基于XML的消息的协议,通常是用HTTP。
    • WSDL(Web Services Description Language,Web服务描述语言) - 基于XML的描述语言,用于描述与服务交互所需的服务的公共接口,协议绑定,消息格式。
    • UDDI(Universal Description, Discovery, and Integration,是统一描述、发现和集成) - 基于XML的注册协议,用于发布WSDL并允许第三方发现这些服务。

          注意,一个系统要成为服务导向的系统并不需要这些协议,比如一些服务导向的系统可以通过CORBA实现。


    四、使用WEB服务的方式

          WEB服务实际上是一组工具,并有多种不同的方法调用之。三种最普遍的手段是:远程过程调用(RPC),服务导向架构(SOA)以及表述性状态转移(REST)。

    1. 远程过程调用:WEB服务提供一个分布式函数或方法接口供用户调用,这是一种比较传统的方式。通常,在WSDL中对RPC接口进行定义(类似于早期的XML-RPC)。

    2. 服务导向架构:现在,业界比较关注的是遵从服务导向架构(Service-oriented architecture,SOA)概念来构筑WEB服务。在服务导向架构中,通讯由消息驱动,而不再是某个动作(方法调用)。这种WEB服务也被称作面向消息的服务。SOA式WEB服务得到了大部分主要软件供应商以及业界专家的支持和肯定。作为与RPC方式的最大差别,SOA方式更加关注如何去连接服务而不是去特定某个实现的细节。WSDL定义了联络服务的必要内容。

    3. 表述性状态转移:表述性状态转移式(Representational state transfer,REST)WEB服务类似于HTTP或其他类似协议,它们把接口限定在一组广为人知的标准动作中(比如HTTP的GET、PUT、DELETE)以供调用。此类WEB服务关注与那些稳定的资源的互动,而不是消息或动作。


    五、类似方式

          无论是在WEB服务出现以前,还是现在,一直不断有各种同类技术问世。比如,RMI作为这样一种中间件系统就得到了广泛部署。CORBA和DCOM则更加雄心壮志,两者都尝试将作用域波及到分布式对象,这一点也为WEB服务所模仿。这些类似方式往往借助于XML-RPC和HTTP本身,而不依靠SOAP封装参数。


    六、松耦合的系统

          具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。与之相反,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。

    展开全文
  • SOA SOA项目的回购
  • 初探 SOA

    2020-10-30 03:17:52
    SOA服务具有平台独立的自我描述XML文档。Web服务描述语言(WSDL, Web Services Description Language)是用于描述服务的标准语言。
  • SOA架构, 面向服务的架构。 通过了解SOA,能好的学习微服务架构。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,248
精华内容 43,699
关键字:

soa