跨领域问题:微服务基架
2018-08-27 本文已影响0人
scheshan
背景
当开始开发一个应用程序时,你通常把大量时间花费在建立处理跨领域问题的机制。跨领域问题的例子包括:
- 外部配置 - 包括身份信息,外部服务:比如数据库和消息服务的网络地址
- 日志 - 配置日志框架,比如log4j或者logback
- 健康检查 - 监控服务的URL,可以通过这个URL判断应用的健康状态
- 度量 - 可以深入了解应用程序正在执行的操作及其执行方式的度量标准
- 分布式追踪 - 一个工具服务,为每个跨越不同服务的外部请求分配一个唯一标识。
除了这些通用的问题之外,还有一些与应用所使用的特定技术相关的跨领域问题。使用了基础服务,比如数据库或者消息队列的应用,需要一个样板配置。比如,使用了关系型数据库的应用需要配置连接池。处理HTTP请求的网站应用也需要样板配置。
建立这些机制通常需要花费一天或者两天,有时还更久。如果你花费数月或者数年的时间开发单体应用,那么处理跨领域问题的花费是微不足道的。当你开发一个使用了微服务架构的应用时,情况会变得很不一样。会有几十甚至上百个服务。你需要频繁的创建新服务,这些新服务只花几天或几周时间开发。你不能承担花费数天时间来配置处理跨领域问题的机制。更糟糕的是,微服务架构中通常还有额外的跨领域问题是你必须处理的,包括服务注册和发现,以及可靠处理部分故障的断路器。
限制
- 需要快速和简单的创建一个微服务
- 当创建微服务时,你必须处理跨领域问题,比如外部配置,日志,健康检查,度量,服务注册和发现,断路器。还存在针对微服务所用技术的特定跨领域问题。
解决方案
使用一种微服务基架框架来搭建微服务,它会处理跨领域问题
示例
- Java
- Go
结果
微服务基架的主要优势是,你可以迅速和简单的开始开发一个微服务。
你使用的每种编程语言都需要一个微服务基架。这会成为采用新编程语言和框架的障碍。
相关模式
有如下相关的模式: