第十七章 面向服务
1.什么是微服务
通俗的说微服务就是很小的服务,它是面向服务机构的一种,每个服务都是一个组件,通过编排组合的方式来使用。
2.微服务的优点在哪里
做到了独立,解耦,组件化,易维护,可复用,可替换,高可用;
提高交付质量,缩短交付的周期
1)技术异构性
2)弹性
3)扩展
4)简化部署
5)与组织结构相匹配
6)可组合性
7)可替代化性的优化
3.微服务的特点及面临的挑战
小,且专注做一件事情,轻量级通信机制,松耦合独立部署。
1)分布式系统的复杂度
使用微服务实现分布式系统的复杂度要比单块系统来的高。
微服务是拆分成多个服务进行部署,服务之间的通信是通过网络,此时的性能就会受到影响。
2)部署自动化
每个服务都是一个独立的可部署的业务单元,每个服务的修改都需要独立的部署,这样部署的成本是比较高的。
3)DevOps与组织结构
微服务不仅表现出一种架构模型,同样也表现出一种组织模型。开发者将承担起服务整个生命周期的责任,包括部署和监控,而运维也更多的表现出了一种顾问式的角色。
4)运维成本
每个微服务都需要对其进行独立的配置,部署,监控,日志收集等,因此成本呈指数级增长。
5)服务间依赖测试
把系统拆分成若干个独立部署的服务,所以就要对服务进行依赖测试。
6)服务间依赖管理
随着服务个数的增多,如何清晰有效地展示服务之间的依赖关系,成为了一个挑战。
4.微服务与SOA的关系
微服务可以说是SOA的一种。但仔细推敲后又可以发现它们两者之间的巨大差异。
可以从粒度,拆分,通信,组件大小,组织划分等方面来比较。
微服务是细粒度,而SOA是粗粒度;微服务是强调服务能拆分就拆分,而SOA往往将服务看成是一个独立的整体;
微服务组件较小,而SOA存在着较为复杂的组件;微服务使用如Http等轻量级的通信方式,而SOA一般采用的是企业服务总线来充当服务之间的通信角色;
微服务因为组件小,可以由单一的组织负责,而SOA按层次划分后由不同部门的组织负责,类似于大公司中划分出的一些业务单元;
5.微服务与SOA的实现对比
服务架构:在实现上无集中式总线,松散的服务架构是微服务的实现,而SOA是其中的服务架构;
集成方式:微服务简单集成,使用Http/JSON/REST),SOA集成方式复杂,使用ESB/WS/SOAP
展开方式:微服务是面向团队级,自底向上展开,SOA是面向企业级,自顶向下展开
部署方式:微服务单个服务独立部署,SOA一般服务之间相互依赖,部署复杂;
粒度:微服务中一个系统被拆分成若干服务,粒度细;SOA中服务由多个子系统组成,构成复杂。
6.面向服务的架构的概念
它是一种应用程序架构,所有的功能都被定义为独立的服务,这些服务带有定义明确的,可调用的接口,能够以定义好的顺序调用这些服务来形成业务流程。
SOA本质上就是服务的集合,服务之间彼此通信,这种通信可能是简单的数据传输。
SOA也是一种CS软件架构设计方法,应用由服务和服务使用者所组成,它着重强调的是服务之间的松散耦合。
7.SOA的设计原则
SOA继承了来自对象,构件设计的各种原则,保证了服务的灵活性,松散耦合和复用能力的设计原则。
1)明确定义的接口
服务的定义应该要尽可能的明确,减少请求者的不适当使用,也不要让请求者看到服务内部的私有信息。
2)自包含和模块化
服务封装了那些在业务上稳定,重复出现的活动和构件。服务完全是独立自主的。
3)粗粒度
4)松耦合
5)互操作性,兼容和策略说明
8.与SOA相关联的技术
与SOA相互关联的技术有:UDDI,WSDL,SOAP,REST等。
面向服务系统构建过程中,SOAP用于实现Web服务的远程调用,BPEL (Business Process Execution Language)用来将分散的、功能单一的Web服务组织成一个复杂的有机应用。
9.REST的概念与作用
REST是全称是表诉性状态转移,是一种只使用HTTP和XML进行基于Web通信的一种技术。
REST的作用是可以降低开发的复杂性,提高系统可伸缩性,它的简单性以及缺少严格配置文件的特征,使它与SOAP可以很好的区分开来。
概念:REST从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符(URI)确定,客户端应用程序通过URI获取资源的表现,并通过获得资源表现使得其状态发生改变
10.REST支持的五个准则与四种操作
五个准则:
1)网络上所有的事务都被抽象成了资源
2)每个资源对应着一个唯一的标识
3)通过通用的连接件接口对资源进行操作
4)对资源的各种操作不会改变资源标识
5)所有的操作都是没有状态的
四种操作:Post,Get,Put,Delete
三者分离:REST中将资源、资源的表现和获取资源的动作三者进行分离。
11.实现SOA的三种方法
1)WebService(Web服务)
它里面一共有三种角色,其中服务请求者和服务提供者是必须的,而服务注册中心是一个可选的角色。
2)ESB企业服务总线
是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,可帮助企业对业务流程进行设计和模拟,对每个业务流程进行控制和跟踪,分析并改进流程和性能。它消除了服务请求者和服务提供者之间的直接连接,使得服务请求者和服务提供者之间进一步解耦。
3)服务注册表
它提供一个策略执行点,在这个点之上,服务可以在SOA中注册,从而可以被发现和使用,它可以包括有关服务和相关构件点的配置,依从性和约束文件。
大多数商用服务注册产品支持服务注册,服务位置和服务绑定功能。
12.ESB企业服务总线的概念
是由中间件技术实现并支持SOA的一组基础架构,是传统的中间件技术和XML,WebService等技术结合的产物。支持异构系统的集成。
ESB的优势在于消除了服务请求者与服务提供者之间的直接链接。
ESB基于内容的路由和过滤,具备复杂数据的传输能力,并可以提供一系列的标准接口。
它是在整个企业集成架构下的面向服务的企业应用集成机制。ESB具有的功能如下
1)支持异构环境中的服务,消息和基于事件的交互,并且具有适当的服务级别和可管理性。
2)无缝的非入侵方式使现有系统具有全新的服务接口,并能够在部署环境中支持任何标准
3)与服务逻辑相互分离,从而使不同的系统可以同时使用同一个服务。
4)ESB在更高层析还提供了服务代理和协议转换等功能。
5)提供可配置的消息转换翻译机制,和基于内容的消息路由服务,传输消息到不同的目的地。
6)提供安全和拥有者机制。
13.ESB的作用和优势有哪些
1)扩展的基于标准的连接,提供了强大的系统连接性
2)提高复用性,降低成本
3)灵活的,服务导向的应用组合
4)减少市场反应时间
14.SOAP技术的基本概念和作用
SOAP是简单对象访问协议,定义了服务请求者和服务提供者之间的消息传输规范。
用XML来格式化消息,用HTTP来承载消息内容。
通过SOAP应用程序可以在网络中进行数据交换和远程过程调用。
SOAP的消息基本上从发送端到端的单向传输。
15.SOAP消息的三个组成部分和SOAP四个部分
SOAP消息由三个部分组成:
1)封装(信封)
2)SOAP头
3)SOAP体
SOAP主要包括以下四个部分:
1)封装
2)编码规则
3)RPC表示
4)绑定
16.WSDL的概念
WSDL的全称是Web服务描述语言。它就是对服务进行描述的语言。它有一套基于XML的语法定义,WSDL描述的重点是服务;它包含了两个部分:分别是服务接口定义和服务实现定义。
1)服务接口定义就是一种抽象的,可重用的定义,采用抽象接口定义对于提高系统扩展性很有帮助,服务实现者可以根据这些标准定义,来实现具体的服务;
2)服务实现定义描述了给定服务提供者如何实现特定的服务接口。
17.UDDI的描述
统一描述,发现和集成。它提供了一种服务发布,查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。
通过UDDI提供的标准接口,企业可以发布自己的服务供其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务上。
UDDI技术规范中主要包含了以下三个方面的内容:
1)数据模型
是一个用于描述业务组织和服务的XMLSchema;
2)API
用于查找或发布UDDI数据的方法,它基于SOAP
3)注册服务
对应着注册中心的角色
18.服务构件与传统构件的主要区别
粒度:SOA是粗粒度,而传统构件以细粒度居多;
接口标准:SOA的接口是标准的主要是服务描述语言接口,传统构件的接口通常以API的形式提供;
实现语言:SOA与实现语言无关,传统构件通常绑定某种特定的语言;
服务提供:SOA通过构件容器提供Qos服务,而传统构件完全由程序代码直接控制。
19.服务构件架构SCA的概念
服务构件架构SCA是基于SOA思想描述服务之间组合和协作的规范,它描述用于使用SOA构建应用程序和系统的模型。
它可简化使用SOA进行的应用程序开发和实现工作。
- 面向服务架构的主要技术和涉及到的标准
主要的技术有:Web服务、ESB。
涉及到的标准有:SOAP,WSDL,UDDI。1)UDDI协议
UDDI(统一描述、发现和集成协议)计划是一个广泛的、开放的行业计划,它使得商业实体能够彼此发现,定义他们怎样在Internet上互相作用,并在一个全球的注册体系架构*享信息。UDDI是这样一种基础的系统构筑模块,它使商业实体能够快速、方便地使用他们自身的企业应用软件来发现合适的商业对等实体,并与其实施电子化的商业贸易。
UDDI同时也是Web服务集成的一个体系框架。它包含了服务描述与发现的标准规范。UDDI规范利用了W3C和Internet工程任务组织(IETF)的很多标准作为其实现基础,比如扩展标注语言(XML)、HTTP和域名服务(DNS)等协议。另外,在跨平台的设计特性中,UDDI主要采用了已经被提议给W3C的SOAP(Simple Object Access Protocol,简单对象访问协议)规范的早期版本。
2)WSDL规范
WSDL是Web Services Description Language(Web服务描述语言)的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。它是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL,可描述Web服务的三个基本属性:
1、服务做些什么——服务所提供的操作(方法);
2、如何访问服务——和服务交互的数据格式以及必要协议;
3、服务位于何处——协议相关的地址,如URL。
WSDL文档以端口集合的形式来描述Web服务,WSDL服务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的一个具体协议,和这个绑定的一个网络端点规范
3)SOAP协议
SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。它包括四个部分:SOAP封装(Envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及如何处理它们的框架;SOAP编码规则(Encoding Rules),用于表示应用程序需要使用的数据类型的实例;SOAP RPC表示(RPC Representation),表示远程过程调用和应答的协定;SOAP绑定(Binding),使用底层协议交换信息