zoukankan      html  css  js  c++  java
  • 六边形架构-微服务基石

    六边形架构(Hexagonal Architecture):目的是将输入输出放到设计的边缘.应用独立化,业务逻辑不依赖暴露rest或graphql api,数据来源可以是具体的数据库,外部微服务api,甚至一个文件.

    主要是为了解决面向对象开发中,由于分层造成业务逻辑在不同层间耦合的问题.这个模式允许应用核心逻辑隔离外部系统.以实现核心逻辑修改不影响外部服务.

    实际架构是以业务逻辑为核心,外层是数据源和传输层.

    六边形架构

    业务逻辑三个核心概念:

    实体(Entities):是域对象(domain objects).不关心实际存储.

    库(Repositories):负责与数据源交互和进行实体操作的接口.

    交互器(Interactors):负责规划和执行域行为.可看作服务对象或用户实例对象.用于实现复杂的业务规则和校验域行为具体逻辑.

    通过上面三个核心概念,定义业务逻辑时就不需要关心任何数据存储和业务逻辑触发的问题.因为具体存储使用实现存储接口的存储源;业务逻辑触发是外部服务主动请求.

    业务逻辑之外是数据源(Data Sources)和传输层(Transport Layer):

    数据源:适配不同的存储实现.实现业务逻辑和数据实现解耦

    传输层:触发交互器去执行业务逻辑.将其看作业务系统的输入.常用的传输层是http api层和一系列处理请求的控制器.通过抽取业务逻辑到交互器,解耦特定传输层或控制器实现.交互器被触发不仅可以通过控制器,还可以是时间,定时任务,命令行等;

    传统的层级架构,是上层直接依赖下层.而六边形架构中所有依赖全部在内部,核心业务逻辑不关心实际的传输层和数据源.但是,传输层知道如何使用交互器,数据源知道如何遵守库接口.

    由于数据源和业务逻辑解耦,我们只要实现库接口定义,就能轻易的变更数据源实现.

    数据源切换

    参考资料:
    Ready for changes with Hexagonal Architecture

  • 相关阅读:
    Docker学习笔记-Redis 安装
    CentOS搭建FTP服务
    Docker学习笔记-Docker for Windows 安装
    Docker学习笔记-Docker for Linux 安装
    (转载)Javascript 中的非空判断 undefined,null, NaN的区别
    MongoDB
    RabbitMQ
    GIT学习笔记——常用命令
    Evanyou Blog 彩带
    Evanyou Blog 彩带
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/14110774.html
Copyright © 2011-2022 走看看