上节我们讲了《分布式架构设计之面向服务的架构SOA》 今天我们继续深挖《分布式架构设计之微服务架构》
什么是微服务架构
微服务是在SOA上继续发展,微服务架构强调的是业务需要彻底的组件和和服务化。原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。而这些小应用之间通过服务完成交互和集成。
微服务架构特点
- 通过服务实现组件化
- 开发者不再需要协调其它服务部署对本服务的影响
- 按业务能力来划分服务和开发团队
- 开发者可以自由选择开发技术,提供API服务
- 去中心化
- 每个服务有自己私有的数据库持久化业务数据
- 每个微服务只能访问自己的数据库,而不能访问其它服务的数据库
- 某些业务场景下,需要在一个事务中更新多个数据库。这种情况也不能直接访问其它微服务的,而是通过对微服务进行操作。
- 数据的去中心化,进一步降低了微服务之间的耦合度,不同服务可以采用不同的数据库技术。在复杂的业务场景下,如果包含多个微服务,通常在客户端或中间层(网关)处理
- 基础设施自动化(DEVOPS)
- 把应用拆分为一个个单服务,应用docker技术,不依赖任何服务器和数据模型,是个全栈应用。可以通过自动化方式独立部署,每个服务运行在自已的进程中。通过轻量的通讯机制联接。常用基于HTTP资源API,这些服务基于业务能力构建。能实现集中化管理。
微服务架构的优点
- 通过分解为多个服务,每个服务都有一个RPC或消息驱动API定义的边界
- 能够被小团队(2~5开发人员)独立开发、独立部署(持续集成工具,集成自动部署),可自由选择开发技术提供API服务
- 是松耦合的,可以独立扩展
- 整合最新技术,支持低端配置的服务器
- 每个服务都可以有自己的存储能力,自己的数据库
微服务架构的缺点
- 服务划分过细,服务间关系复杂
- 服务数量太多,团队效率急剧下降
- 调用链太长,性能下降
- 调用链太长,问题定位困难
- 没有自动化支撑,无法快速交付(需要devops技巧)
- 没有服务治理,微服务数量多了,管理混乱
面向服务的架构SOA与微服务区别
- 微服务是SOA的实现方式
- 微服务是使用HTTP RESTful协议来实现ESB的SOA
- 使用SOA构建单个系统就是微服务
- 微服务是更细粒度的SOA
- 微服务是去掉ESB后的SOA
- SOA架构是庞大、复杂、低效的ESB
- 微服务是轻量级的HTTP实现
- 微服务是一种和SOA相似但本质不同的架构理念
- 相似
- 两者都关注“服务”
- 都是通过服务的拆分来解决可扩展性问题
- 不同
- 是否有ESB
- 服务的粒度
- 架构设计的目标
比较微服务架构和SOA架构的具体做法
- 服务粒度
- SOA服务粒度要粗一些
- 微服务的粒度要细一些
- 服务通信
- SOA采用ESB作为服务间通信的关键组件。负责服务定义、服务路由、消息转换、消息传递
- 微服务推荐使用统一的协议和格式。如 RESTful协议、RPC协议
- 服务交付
- SOA对服务的交付没有特殊要求,需要考虑兼容已有系统
- 微服务要求 快速交付,相应的要求采用自动化测试、持续集成、自动化部署等敏捷开发相关的最佳实践
- 应用场景
- SOA更加适合于庞大、复杂、异构的企业级系统。有内部开发,有外部购买,无法完全推倒重来
- 微服务更加适合快速、轻量级、基于WEB的互联网系统。这类系统业务变化快,需要快速尝试、快速交付
----------
再次感谢,欢迎关注微信公众号“零售云技术”,文章持续更新,或留言讨论