最近在和第三方对接时发现一个词SOA,以前一直认为SOA就是认证中心其中的一个服务,发现理解错误了,严重打脸。所以上网查询资料进行学习下。
概念
SOA 是Service-Oriented Architecture的简称,在《微服务设计》第1.3节中,SOA是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列的功能。一个服务通常以独立的形式存在于操作系统进程中。服务之间通过网络调用,而非采用进行内调用的方法进行通讯。不同的组织机构或个人从不同的层面上对SOA进行了描述和定义,我觉得较为准确的定义分为三类:
我对SOA的认知是,将整个系统按照实际业务,拆分成合适的、能够独立部署的模块,每个模块之间相互独立,但是组合起来又是一个产品。比如在Springcloud中注册中心、网关、配置中心、监控中心等。至于如何拆分,可以使用DDD模式进行设计。
SOA的实施具有鲜明的基本特征,实施SOA的关键目标是提高资源的利用率。如下为SOA的特征:
1. 外部或第三方可能访问
2. 随时可用,保证高可用性
3. 粗粒度的服务接口分级
4. 松散耦合
5. 可重用的服务
6. 服务接口设计管理
7. 标准化的服务接口
8. 支持各种消息模式
9. 精确定义的服务契约
Simple Object Access Protocol,即简单对象访问协议,简称SOAP。SOAP是基于xml在分散或分布式的环境中交换信息的简单协议,用于访问网络服务。可使应用程序在HTTP之上进行信息交换。当SOAP消息真正需要在网络上实际传输的时候,SOAP消息能够与不同的底层传输协议进行绑定,同时SOAP消息可以在很多种消息传输模式中使用。包括文本传输写哟(HTTP)、简单邮件传输协议(SMTP)、多用途互联网邮件协议(MIME)。SOAP主要包括如下四个部分:
SOAP消息基本上是从发送端到接收端的担心传输,但他们常常结合起来执行类似于请求/应答的模式。所有的消息都使用XML进行编码,消息包含三个部分:
Web Service Description Language,即网络服务描述语言,检查WSDL。它是一门基于xml的预研,用于描述Web Service以及如何对它们进行访问。WSDL文档主要使用以下几个部分组成:
它包含了服务实现定义和服务接口定义,如下图所示:
采用抽象接口定义对于提高系统的可扩展性很有帮助。服务接口定义就是一种抽象的、可重用的定义,行业标准组织可以使用这种重新的定义来规定一些标准的服务类型,服务实现制可以根据这些标准来实现具体的服务。
服务实现定义描述了给定服务提供者如何实现特定的服务接口。服务实现定义中包含服务和端口描述。一个服务常常会包含多个服务访问接口,而每个访问入口都会使用一个端口元素来描述,端口描述的是一个服务访问入口的部署细节。
Universal Description,Discovery and Integration,可译为通用描述、发现与集成服务,简称UDDI。
UDDI是一个独立于平台的框架,通过使用Internet来描述服务,发现企业,并对企业服务进行集成。提供了一种服务发布、查询和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。UDDI规范描述了服务的概念,同事也定义了一种编程接口。通过UDDI提供的标准接口,企业可以发布自己的服务提供给其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务上。在UDDI技术规范中,主要包含以下三个部分的内容:
Representational State Transfer,表述性状态转移,简称REST。
REST是一种使用HTTP和xml进行基于Web通信的技术,可降低开发的复杂性、提高系统的可伸缩性。它的简单性和缺少严格配置文件的特性,使它与SOAP很好的隔离开来,REST从根本上来说只支持几个操作(POST、GET、PUT和DELETE),建议只使用POST和GET,原因后面进行说明。这些搓澡适用于所有的小四。REST提出了如下的设计概念和准则:
SOA是一种概念和理想,需要借助于具体的技术和方法来实现它。本质上来看,SOA是用本地计算模型来实现一个分布式的计算应用,也称作“本地化设计,分布式工作”模型。CORBA、DCOM和EJB等都属于这种解决方式,也就是锁SOA最终可以基于这些标准来实现。
web service是一个平台独立的、低耦合的、自包含的、基于可编程的web应用程序,可使用开放的xml标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
web service有三个部分(服务提供者、服务请求者、服务注册中心)组成,分别解答三个问题:
在使用Web Service作为SOA的实现技术时,应用系统大致分为六个层次,如下图:
服务注册表(Service Registry)提供策略执行点,在这个点上,服务可以在SOA上进行注册,而已可以被发现和使用。从理论上来说,任何帮助服务注册、发现和查询服务合约、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。大多数商用服务注册产品支持服务注册、服务位置和服务绑定功能。
Enterprise Service Bus简称ESB,是一种为进行连接服务提供的标准化的通信基础结构,基于开发的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可以帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。
ESB提供了一种基础设施,消除了服务请求者和服务提供者之间的直接连接,是的服务请求者和服务提供者之间进一步解耦。需要具备以下功能:
微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。通俗一点来说,微服务类似于古代著名的发明,活字印刷术,每个服务都是一个组件,通过编排组合的方式来使用,从而真正做到了独立、解耦、组件化、易维护、可复用、可替换、高可用、最终达到提高交付质量、缩短交付周期的效果。
常见的微服务使用的是Springboot。后面针对Springboot会专门说明。
对于框架,我觉得没有好坏之分,合适才是最重要的。
优点如下:
缺点:提升了系统的复杂程度,性能有相应影响
借鉴资料:https://blog.csdn.net/hu19930613/article/details/82749534