zoukankan      html  css  js  c++  java
  • 微服务架构设计模式概述

    作者:Grey

    原文地址: 微服务架构设计模式概述

    说明

    本文内容是《微服务架构设计模式》这本书的学习笔记

    单体应用转换成微服务可以考虑的几个维度

    image

    SOA和微服务的区别

    SOA 微服务
    协议 重量级(SOAP,WS*) REST或者RPC
    数据管理 共享数据库 每个服务都有自己的数据模型和数据库
    典型服务规模 较大的单体 较小的服务

    模式之间的基本关系和符号表示

    前导(Predecessor)

    前导模式是催生这个模式的需求的模式,例如,微服务架构模式是除单体架构模式以外整个模式语言中所有模式的前导模式。

    后续(Successor)

    后续模式是指用来解决当前模式引入的新问题的模式,例如,如果你采纳了微服务架构模式,你需要一系列的后续模式来解决诸如服务发现、断路器等微服务带来的新问题。

    替代(Alternative)

    当前模式的替代模式,提供了另外的解决方案,例如,单体架构和微服务架构就是互为替代的模式,它们都是应用的架构风格。你可以选择其一

    泛化(Generalization)

    针对一个问题的一般性解决方案。例如: “每主机单个服务”这个模式存在多种不同的技术实现。

    特化(Specialization)

    针对特定模式的具体解决方案。例如: 将服务部署为容器模式是针对“每主机单个服务”的具体解决方案。

    符号说明:

    image

    基于上述符号,我们可以用图例来表示微服务架构中各个环节的相关模式

    服务拆分的相关模式

    1. 按功能组织服务

    2. 根据子域分解服务(DDD)

    示例图

    image

    服务通信模式

    通信风格

    使用哪一类进程间通讯机制

    image

    服务发现

    客户端如何获得服务具体实例(如HTTP请求)的IP地址

    image

    可靠性通信

    在服务不可用的情况下,如何确保服务之间的可靠通讯

    image

    事务性消息

    如何将消息发送,事件发布这样的动作与更新业务数据库的数据库事务集成

    外部API

    应用程序的客户端如何与服务进行通信

    image

    实现事务管理的数据一致性相关模式

    为了保证松耦合,每个服务必须拥有自己的数据库,因此,需要使用Saga模式来确保数据一致性

    image

    在微服务架构中查询数据的相关模式

    有两种:

    1. API组合

    2. CQRS(命令查询职责隔离)

    image

    微服务部署的相关模式

    image

    可观测的相关模式

    健康检查API

    可以返回服务健康状态的APIO

    日志聚合

    把服务产生的日志写人一个集中式的日志服务器,这个服务器可以提供日志搜索,也可以根据日志情况触发报警。

    分布式追踪

    为每一个外部请求分配一个唯一的ID,用于在各个服务之间追踪外部请求。

    异常跟踪

    把程序异常发送到异常跟踪服务,这个服务会排除重复异常,给开发者发送告警并且跟踪每一个异常的解决。

    应用指标

    供维护使用的指标,例如计数器等,导出到指标服务器。

    审计日志

    记录用户的行为。

    实现服务自动化测试的相关模式

    消费端驱动的契约测试

    验证服务满足客户端所期望的功能

    消费端契约测试

    验证服务的客户端可以正常与服务通信

    服务组件测试

    在隔离的环境中测试服务。

    解决基础设施和边界问题的相关模式

    该模式在运行时向服务提供数据库凭据等配置参数。在开发新服务时,从头开始重新实现这些功能是在太费时间了。

    安全相关的模式

    在微服务架构中,用户身份验证的工作通常由API Gateway完成。然后,它必须将有关用户的信息(例如身份和角色)传递给它调用的服务。常见的解决方案是应用访问令牌模式。API Gateway将访问令牌(例如JWT,即JSON web令牌)传递给服务,这些服务可以验证令牌并获取有关用户的信息。

  • 相关阅读:
    关于SpringBoot的外部化配置使用记录
    深入理解Mybatis插件
    MySQL JDBC Driver 8.0+设置服务器时区
    重新认识Java注解
    深入理解Java枚举
    Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇
    Spring Cloud系列教程第九篇-Eureka自我保护机制
    安装vsftp服务器的时候遇到的问题
    spring cloud系列教程第八篇-修改服务名称及获取注册中心注册者的信息
    idea 启动命令行的时候提示不能创建PTY
  • 原文地址:https://www.cnblogs.com/greyzeng/p/15170945.html
Copyright © 2011-2022 走看看