分布式架构设计之微服务架构

上节我们讲了《 》 今天我们继续深挖《分布式架构设计之微服务架构》

什么是微服务架构

微服务是在SOA上继续发展,微服务架构强调的是业务需要彻底的组件和和服务化。原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。而这些小应用之间通过服务完成交互和集成。

微服务架构特点

  • 通过服务实现组件化
  • 开发者不再需要协调其它服务部署对本服务的影响
  • 按业务能力来划分服务和开发团队
  • 开发者可以自由选择开发技术,提供API服务
  • 去中心化
  • 每个服务有自己私有的数据库持久化业务数据
  • 每个微服务只能访问自己的数据库,而不能访问其它服务的数据库
  • 某些业务场景下,需要在一个事务中更新多个数据库。这种情况也不能直接访问其它微服务的,而是通过对微服务进行操作。
  • 数据的去中心化,进一步降低了微服务之间的耦合度,不同服务可以采用不同的数据库技术。在复杂的业务场景下,如果包含多个微服务,通常在客户端或中间层(网关)处理
  • 基础设施自动化(DEVOPS)
  • 把应用拆分为一个个单服务,应用docker技术,不依赖任何服务器和数据模型,是个全栈应用。可以通过自动化方式独立部署,每个服务运行在自已的进程中。通过轻量的通讯机制联接。常用基于HTTP资源API,这些服务基于业务能力构建。能实现集中化管理。

微服务架构的优点

  1. 通过分解为多个服务,每个服务都有一个RPC或消息驱动API定义的边界
  2. 能够被小团队(2~5开发人员)独立开发、独立部署(持续集成工具,集成自动部署),可自由选择开发技术提供API服务
  3. 是松耦合的,可以独立扩展
  4. 整合最新技术,支持低端配置的服务器
  5. 每个服务都可以有自己的存储能力,自己的数据库

微服务架构的缺点

  1. 服务划分过细,服务间关系复杂
  2. 服务数量太多,团队效率急剧下降
  3. 调用链太长,性能下降
  4. 调用链太长,问题定位困难
  5. 没有自动化支撑,无法快速交付(需要devops技巧)
  6. 没有服务治理,微服务数量多了,管理混乱

面向服务的架构SOA与微服务区别

  • 微服务是SOA的实现方式
  • 微服务是使用HTTP RESTful协议来实现ESB的SOA
  • 使用SOA构建单个系统就是微服务
  • 微服务是更细粒度的SOA
  • 微服务是去掉ESB后的SOA
  • SOA架构是庞大、复杂、低效的ESB
  • 微服务是轻量级的HTTP实现
  • 微服务是一种和SOA相似但本质不同的架构理念
  • 相似
  • 两者都关注“服务”
  • 都是通过服务的拆分来解决可扩展性问题
  • 不同
  • 是否有ESB
  • 服务的粒度
  • 架构设计的目标

比较微服务架构和SOA架构的具体做法

  1. 服务粒度
  2. SOA服务粒度要粗一些
  3. 微服务的粒度要细一些
  4. 服务通信
  5. SOA采用ESB作为服务间通信的关键组件。负责服务定义、服务路由、消息转换、消息传递
  6. 微服务推荐使用统一的协议和格式。如 RESTful协议、RPC协议
  7. 服务交付
  8. SOA对服务的交付没有特殊要求,需要考虑兼容已有系统
  9. 微服务要求 快速交付,相应的要求采用自动化测试、持续集成、自动化部署等敏捷开发相关的最佳实践
  10. 应用场景
  11. SOA更加适合于庞大、复杂、异构的企业级系统。有内部开发,有外部购买,无法完全推倒重来
  12. 微服务更加适合快速、轻量级、基于WEB的互联网系统。这类系统业务变化快,需要快速尝试、快速交付
分布式架构设计之微服务架构

----------


分享到:


相關文章: