【软考系统架构设计师】第十七章 面向服务(知识点必知必会)
第十七章 面向服务(知识点必知必会)
一. 微服务
1)什么是微服务
- 通俗的说微服务就是很小的服务,它是面向服务架构的一种
- 每个服务都是一个组件,通过编排组合的方式来使用。
- 它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用HTTP等通用协议和轻量级API实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。
2)微服务的特点
- 做到了独立,解耦,组件化,易维护,可复用,可替换,高可用;
- 提高交付质量,缩短交付的周期
- 小,且专注做一件事情,轻量级通信机制,松耦合独立部署
3)微服务的优点
- 技术异构性
- 弹性
- 扩展
- 简化部署
- 与组织结构相匹配
- 可组合性
- 可替代化性的优化
4)微服务的特点及面临的挑战
01. 分布式系统的复杂度
- 使用微服务实现分布式系统的复杂度要比单块系统来的高。
- 微服务是拆分成多个服务进行部署,服务之间的通信是通过网络,此时的性能就会受到影响。
02. 部署自动化
- 每个服务都是一个独立的可部署的业务单元,每个服务的修改都需要独立的部署,这样部署的成本是比较高的。
03. DevOps与组织结构
- 微服务不仅表现出一种架构模型,同样也表现出一种组织模型。
- 开发者将承担起服务整个生命周期的责任,包括部署和监控,而运维也更多的表现出了一种顾问式的角色。
04. 运维成本
- 每个微服务都需要对其进行独立的配置,部署,监控,日志收集等,因此成本呈指数级增长。
05. 服务间依赖测试
- 把系统拆分成若干个独立部署的服务,所以就要对服务进行依赖测试。
06. 服务间依赖管理
- 随着服务个数的增多,如何清晰有效地展示服务之间的依赖关系,成为了一个挑战。
5)微服务与SOA的关系
- 微服务可以说是SOA的一种。但仔细推敲后又可以发现它们两者之间的巨大差异。
- 可以从粒度,拆分,通信,组件大小,组织划分等方面来比较。
- 微服务是细粒度,而SOA是粗粒度;
- 微服务是强调服务能拆分就拆分,而SOA往往将服务看成是一个独立的整体;
- 微服务组件较小,而SOA存在着较为复杂的组件;
- 微服务使用如Http等轻量级的通信方式,而SOA一般采用的是企业服务总线来充当服务之间的通信角色;
- 微服务因为组件小,可以由单一的组织负责,而SOA按层次划分后由不同部门的组织负责,类似于大公司中划分出的一些业务单元;
6)微服务与SOA的实现对比
01. 服务架构
- 在实现上无集中式总线,松散的服务架构是微服务的实现,
- SOA是其中的服务架构;
02. 集成方式
- 微服务简单集成,使用Http/JSON/REST)
- SOA集成方式复杂,使用ESB/WS/SOAP
03. 展开方式
- 微服务是面向团队级,自底向上展开
- SOA是面向企业级,自顶向下展开
04. 部署方式
- 微服务单个服务独立部署
- SOA一般服务之间相互依赖,部署复杂;
05. 粒度
- 微服务中一个系统被拆分成若干服务,粒度细
- SOA中服务由多个子系统组成,构成复杂。
二. 与面向服务相关联的技术
- 与SOA相互关联的技术有:UDDI,WSDL,SOAP,REST等。
1)REST技术
01. 概念
- REST是全称是表诉性状态转移,是一种只使用HTTP和XML进行基于Web通信的一种技术。
- REST从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符(URI)确定