微服务架构学习笔记

微服务架构

什么是架构

  • 架构:描述组成系统的各部件及其之间的关系,关注其实现而不是需求
    • 架构决定了软件的质量属性
      • 可维护性,可测试性,可部署性
      • 安全性,可靠性,可扩展性
    • 4+1架构模型:(逻辑、实现、进程、部署)+场景
      • 逻辑视图:开发时的架构
        • 关注功能性需求,考虑问题域分解与抽象
        • 组成部件:包(模块)、类、接口
        • 关系:关联、继承、以来、组合、聚合
      • 实现(开发)识图:构建时的架构
        • 关注软件打包,与团队分配有关
        • 部件:打包号的可执行,可部署的模块和组件,如jar包、war包,exe文件
        • 关系:依赖关系
      • 进程视图:运行时的架构
        • 关注部件间的协作,考虑进程间通信
        • 部件:各个运行当中的进程
        • 关系:进程间的通信,如HTTP,信号量,共享内存
      • 部署视图:运行时的架构
        • 关注性能与可用性,考虑可扩展性
        • 部件:运行着系统进程的物理机或虚拟机
        • 关系:机器间的网络通信
      • 四种视图并不互斥,相互可以融合
  • 分层架构
    • 三层架构
    • 六边形架构

三层架构

三层架构

  • 三层架构
    • 属于逻辑视图
    • 分为表示层(用户接口或API)、业务逻辑层、持久层
      • api
        • somethingController
      • domain
        • 实体类、somethingService
      • persistence
        • somethingRepository
    • 优点:表现层可以灵活更换
    • 缺点:不支持多客户端、不支持多数据库、领域层依赖持久层

六边形架构

六边形架构

架构目录

  • domain
    • 实体类
  • application
    • SomethingApplicationService
  • adapter
    • inbound
      • SomethingRestController
      • SomethingController
    • outbound
      • SomethingRepository的实现接口
  • port
    • inbound
      • interface:SomethingUseCase
    • outbound
      • interface:SomethingRepository

架构中各个包的解释与作用

  • domain
    • 存放业务逻辑
    • 一切都依赖于domain,但domain不依赖任何东西
  • application
    • 实现用例,即实现端口中的接口(usecase)
  • adapter(适配器):与外界联系
    • inbound:对外界提供的服务,可以通过提供多个Controller对不同的外界设备进行适配
    • outbound:实现操作数据库的接口,例子中使用JpaRepository接口实现对数据库的操作(见上图)
  • port(端口)
    • 出站必须定义为接口,入站推荐定义为接口,为了摆脱业务逻辑与持久层的依赖
    • inbound(入站端口):因为接口功能像是UML中的用例所以一般命名为UseCase
    • outbound(出站端口):需要数据库的服务,提供操作数据库的接口Repository

以Books管理为例

book:实体类

usecase:用例,抽象功能
⬆实现
BookApplicationService:提供实现的服务
⬆被依赖
repository:抽象数据库功能
⬆实现
JpaRepository:实现对数据库的具体操作

usecase
⬆依赖
BookRestController / BookController:提供不同端访问的方法

功能
实现
注入
依赖
实现
UseCase
Book
ApplicationService
Repository
Controller
JpaRepository
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值