跨领域问题:微服务基架

背景

当开始开发一个应用程序时,你通常把大量时间花费在建立处理跨领域问题的机制。跨领域问题的例子包括:

  • 外部配置 - 包括身份信息,外部服务:比如数据库和消息服务的网络地址
  • 日志 - 配置日志框架,比如log4j或者logback
  • 健康检查 - 监控服务的URL,可以通过这个URL判断应用的健康状态
  • 度量 - 可以深入了解应用程序正在执行的操作及其执行方式的度量标准
  • 分布式追踪 - 一个工具服务,为每个跨越不同服务的外部请求分配一个唯一标识。

除了这些通用的问题之外,还有一些与应用所使用的特定技术相关的跨领域问题。使用了基础服务,比如数据库或者消息队列的应用,需要一个样板配置。比如,使用了关系型数据库的应用需要配置连接池。处理HTTP请求的网站应用也需要样板配置。

建立这些机制通常需要花费一天或者两天,有时还更久。如果你花费数月或者数年的时间开发单体应用,那么处理跨领域问题的花费是微不足道的。当你开发一个使用了微服务架构的应用时,情况会变得很不一样。会有几十甚至上百个服务。你需要频繁的创建新服务,这些新服务只花几天或几周时间开发。你不能承担花费数天时间来配置处理跨领域问题的机制。更糟糕的是,微服务架构中通常还有额外的跨领域问题是你必须处理的,包括服务注册和发现,以及可靠处理部分故障的断路器。

限制

  • 需要快速和简单的创建一个微服务
  • 当创建微服务时,你必须处理跨领域问题,比如外部配置,日志,健康检查,度量,服务注册和发现,断路器。还存在针对微服务所用技术的特定跨领域问题。

解决方案

使用一种微服务基架框架来搭建微服务,它会处理跨领域问题

示例

  • Java
    • Spring Boot 和 Spring Cloud
    • Dropwizard
  • Go
    • Gizmo
    • Micro
    • Go kit

结果

微服务基架的主要优势是,你可以迅速和简单的开始开发一个微服务。

你使用的每种编程语言都需要一个微服务基架。这会成为采用新编程语言和框架的障碍。

相关模式

有如下相关的模式:

  • 微服务 - 这个模式鼓励了对微服务基架的需求
  • 自注册 - 微服务基架通常负责服务注册
  • 客户端发现 - 微服务基架通常负责客户端服务发现
  • 断路器 - 微服务基架可能实现了这个模式
  • 分布式追踪 - 微服务基架可能提供了这个功能

你可能感兴趣的:(跨领域问题:微服务基架)