每天学一点!系统架构设计师之面向服务的架构(三)

tech2022-09-13  100

一、SOA主要技术和标准 web服务作为实现SOA中服务的最主要手段,那我们先了解下web service 相关的标准,最基本的协议包括UDDI、WSDL和SOAP。 1.UDDI协议 中文解释为:统一描述、发现和集成协议,它是的商业实体能够彼此发现,定义他们怎么在互联网上进行互相作用,并可以在全球注册体系机构中共享信息。算是一种基础的系统构筑模块。同时它包含了服务描述和发现的标准规范。 2.WSDL规范 中文解释:Web服务描述语言,web服务的接口定义语言。用来描述web服务如何与web服务通信的xml语言。包括:服务做什么;如何访问服务;服务位于何处。 WSDL文档以端口集合的形式来描述web服务。分为两种类型:服务接口和服务实现,基本元素有 types(定义服务使用的所有数据类型集合);message(通信消息数据结构的抽象类型化定义);operation(描述一个访问入口的请求或响应消息对);portType(某个访问点类型所支持操作的抽象集合);binding(将抽象接口portType转为具体表示的细节);port(访问地址);service(服务访问点的集合)。 3.SOAP协议 定义:分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。包括四个部分:封装、编码规则、RPC、绑定。主要的设计目标就是简单性和可扩展性。

二、SOA特性 1.文档标准化(xml文档) 2.通信协议标准(XML Schema来定义) 3.应用程序统一登记与集成; 4.服务品质(Qos):包括可靠性;安全性;策略性;控制性;管理性 三、SOA作用 在一个企业内部可能存在不同的应用系统,相对其他系统来说都是孤立的,也就是我们常说的“信息孤岛”。让每个应用系统重新建立一个新的基础环境是不可能的,但是为了和客户与供应商提供新的互动渠道,就必须引入SOA的框架。SOA框架凭借其松耦合的特性,是的企业可以按照模块的方式来添加新服务或者更新现有服务。最为核心的思路:把应用和资源转换成服务,并把这些服务变成标准的服务,形成资源的共享。 严格来说SOA不仅仅是一个技术,而是一个软件架构。我们在调用时只需要关注所需数据即可,不再关注其底层架构。 四、SOA设计原则 大致来讲,分为以下几条: 1.无状态。以避免服务请求者依赖于服务提供者的状态 2.单一实例。避免功能冗余 3.明确定义的接口 4.自包含和模块化。服务的功能实体是完全独立的 5.粒度大。服务数量不应过多 6.服务之间的松耦合性。只关心接口 7.重用能力 8.互操作性、兼容和策略声明。 五、SOA的设计模式 1.服务注册表模式 提供主控制点,使服务可以在SOA中注册和被发现。注册表包括有关服务和相关软件组件的配置、遵从性和约束配置文件。在服务注册产品中一般包括服务注册(服务提供者,向主持表发布他们的功能);服务位置(查询注册服务);服务绑定(将开发代码与注册的服务绑定)。 2.企业服务总线模式 为解决点对点集成方式管理性差和复用度差等问题的背景下产生的,其思想是提供一种标准的软件底层架构。各种程序组件能够以服务单元的方式“插入”到该平台上运行,而且组件之间能够以标准的消息通信方式来进行交互。实现方式通常是由中间件技术支持面向服务架构的基础软件平台,支持异构环境下的服务以基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。这种概念性的东西是在太难懂了,我们用白话说就是,各种程序组件暴露统一的接口到总线,还要使用统一格式的消息进行交互。当请求者需要调用组件的时候,先在总线目录中查找接口地址,然后将消息发送给对应的组件,最后把组件处理后的信息转到请求者。 六、构建SOA架构时应该注意的问题 1.原有系统架构中的集成需求 当我们想基于SOA来构建一个企业级的系统架构时,一定要注意对原有系统架构中的集成需求进行细致的分析和整理。通常基于SOA的企业系统架构都是在现有系统架构基础上发展起来的,因此最优先考虑的是如何重用现有的系统代码。 在分析原有系统中集成需求是,需要考虑的宽泛一些。包括:应用程序集成的需求、终端用户界面集成的需求、流程集成的需求以及现有系统消息集成。 2.服务粒度的控制以及无状态服务的设计 在SOA系统中服务的构建有两点需要注意的地方,一个是服务粒度的控制,还有一个就是无状态服务的设计。 通常来说对于暴露在整个系统外部的服务推荐使用粗粒度的接口。我们都知道细粒度的接口能为服务请求者提供更加细化和更多的灵活性,但是同时也意味着引入较难控制的交互模式易变性。而粗粒度服务接口保证了服务请求者将以一直的方式使用这个服务。 SOA系统架构中的具体服务应该是独立的,实现服务的时候不需要前一个请求的状态,无需依赖其他服务。 七、业务流程分析 1.建立服务模型 自顶向下分解法:从业务着手分析,逐层分解。业务组件模型将业务细分为业务领域、业务执行层次和业务组件。 业务目标分析法:通过关键性能指标分析来验证已有服务候选者以及发现遗漏的服务候选者。 自底向上分析法:利用已有资源来实现服务。可复用思想 2.建立业务流程 建立业务对象:是对数据进行检索和处理的组件,通常位于中间层或者业务逻辑层。 建立服务接口:最好提供无状态接口,方便重用。 建立业务流程:

最新回复(0)