文章目录
- 横向对比
- SOA
- 设计原则
- 主要技术
- UDDI 统一描述发现集成
- SOAP 简单对象访问协议
- WSDL web服务描述语言
- BPEL 业务过程执行语言
- REST 表述性状态转移
- 实现方法
- WebService
- ESB
- 服务注册表
- 主要问题
横向对比
单体架构 | SOA架构 | 微服务架构 | |
---|---|---|---|
特点 | 复杂性高、技术债务逐渐上升、部署速度越来越慢、扩展能力受限、阻碍技术创新 | ||
组件大小 | 单体,大 | 按服务分割成大块的逻辑 | 小块业务逻辑 |
耦合 | 紧耦合 | 较松耦合 | 松耦合 |
公司架构 | 单体 | 小型、功能交叉的团队 | |
管理 | 着重中央管理 | 分散管理 | |
目标 | 确保应用交互 | 新功能快速拓展 | |
SOA
一种粗粒度、松耦合的服务架构,每个功能被封装为独立的服务,服务间通过定义精确良好的接口进行通信,客户端可以按一定顺序调用这些服务形成业务逻辑。服务间交互不必关注各自的实现细节,和部署的操作系统环境。SOA中单个服务是基于ODD设计的,但总体上是面向服务的。
设计原则
粗粒度:服务能划分就划分到一起
松耦合:服务间通过接口进行交互,服务实现实现服务接口,
内包含模块化:高度内聚
定义精确稳定:服务的定义要精确,防止错误使用,也要稳定
主要技术
UDDI 统一描述发现集成
服务发布查找规范。定义服务信息注册规范,以便被需要该服务的用户查找并使用。定义服务概念,定义编程接口,用户可根据该接口发布自己的服务,或发现需要的服务以满足业务场景。包括内容:数据模型(描述服务发布查找的相关内容)、API(提供标准的服务发布、服务查找的API接口)、注册服务(注册中心角色,服务请求者和服务提供者的纽带)
SOAP 简单对象访问协议
分布式环境下,基于XML的信息交互协议,定义服务请求者和服务提供者的信息通讯规范。通过XML格式化信息,通过HTTP承载信息,包括:封装(封装一个框架以描述消息发送者、消息提供者、消息具体内容、接收后处理方式)、编码规则(定义序列化机制,用以传输应用间交互的数据类型的实例)、RPC(RPC定义远程过程调用和应答协议)、绑定(绑定底层框架协议,以传输SOAP封装)。SOAP消息内容包括:封装(必选,封装顶层元素)、SOAP头(可选,接收后处理方式等元素)、SOAP体(实际传递消息内容的容器)
WSDL web服务描述语言
描述WEB服务和如何与WEB服务进行通讯的XML语言。描述了三个内容:服务功能、服务数据格式和协议、协议地址端口地址。分为服务接口定义和服务实现定义两种。
BPEL 业务过程执行语言
基于XML的业务过程编程语言,每个业务过程是由WEB服务实现,可以通过排序、组合等自上而下的实现面向服务架构。多个WEB服务可以组合成一个大的组织结构,可以为视为一个WEB服务被使用或参与更大的组织结构。
REST 表述性状态转移
基于HTTP和XML的WEB通讯技术,能够降低开发难度,提高伸缩性。三个关注点分离(资源、资源的表示、资源的操作)。所有的事物都抽象为资源,每个资源都有唯一标志,通过标准统一的操作接口对资源进行操作,对资源操作不会修改资源状态。
实现方法
WebService
分为三个角色,服务提供者(服务所有者,负责定义并实现服务。通过WSDL描述服务特征,通过UDDI将服务发布到注册中心,以便被查找使用)、服务请求者(服务使用则,通过UDDI在注册中心查找相应服务,或直接通过WSDL查找服务特征,然后通过SOAP绑定服务进行调用。可以是服务或浏览器)、服务注册中心(服务提供者和服务发现者的纽带,服务提供者发布,服务请求者查找,可选角色,当静态绑定时,可以没有注册中心)
ESB
传统中间件技术和XML、WEB服务等结合的产物,主要支持异构系统集成,具备复杂数据的传输能力,支持基于内容的路由和增强,并提供统一的一致的接口。
服务注册表
主要用于SOA设计,通过策略执行点,完成服务的注册,以便被查找并使用。
主要问题
服务设计和划分粒度、
SOA服务流程组织、
SOA与原系统集成
SOA