微服务优缺点

优点

该解决方案具有许多优点:

  • 支持大型复杂应用程序的连续交付和部署。
  • 改进的可维护性-每个服务都相对较小,因此更易于理解和更改
  • 更好的可测试性-服务更小,测试更快
  • 更好的可部署性-服务可以独立部署
  • 它使您可以围绕多个自治团队组织开发工作。每个(所谓的两个披萨)团队都拥有并负责一项或多项服务。每个团队都可以独立于所有其他团队开发,测试,部署和扩展服务。
  • 每个微服务都相对较小:
  • 开发人员更容易理解
  • IDE更快,使开发人员工作效率更高
  • 该应用程序启动速度更快,从而使开发人员的工作效率更高,并加快了部署速度
  • 改进的故障隔离。例如,如果一项服务中存在内存泄漏,则仅该服务会受到影响。其他服务将继续处理请求。相比之下,整体架构的一个行为不当的组件可能会使整个系统崩溃。
  • 消除了对技术堆栈的任何长期承诺。开发新服务时,可以选择新技术堆栈。同样,在对现有服务进行重大更改时,您可以使用新技术堆栈将其重写。

缺点

该解决方案具有许多缺点:

  • 开发人员必须应对创建分布式系统的额外复杂性:
  • 开发人员必须实现服务间通信机制并处理部分故障
  • 实施跨越多个服务的请求更加困难
  • 测试服务之间的交互更加困难
  • 实施跨多个服务的请求需要团队之间的仔细协调
  • 开发人员工具/ IDE面向构建整体应用程序,不为开发分布式应用程序提供明确支持。
  • 部署复杂度。在生产中,部署和管理由许多不同服务组成的系统也存在操作复杂性。
  • 增加内存消耗。微服务架构用NxM个服务实例替换了N个单片应用程序实例。如果每个服务都在其自己的JVM(或等效版本)中运行(通常是隔离实例所必需的),则JVM运行时的开销是M倍。此外,如果每个服务都在其自己的VM(例如EC2实例)上运行(如Netflix的情况),则开销会更高。
posted @ 2019-11-25 13:11  达芬奇vinic  阅读(407)  评论(0编辑  收藏  举报