Java架构模式

Java架构模式,第1张

Java架构模式 分层架构模式 什么是分层架构?

层:软件的逻辑单元

每一层有特定的功能

组件被分配到不同的层

为什么分层?

将系统按照职责拆分和组织

上层依赖于直接下层,下层不可以依赖上层

不可以跃层访问

(经典分层架构:OSI 7层架构:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层。CS 、BS 架构,企业应用三层架构)

缘何分层

康威定律:系统的架构受制于组织的沟通结构

复杂度隔离:隔离业务复杂度和技术复杂度、解决不同层的问题可以选择不同技术栈、

每层变化速度不一致

防止错误传播

减低错误影响

防水仓设计

层自治:本层功能内聚、自主决策、只有本层的知识

分层架构优点

高内聚

低耦合

可维护性好

可测试性高

分层架构缺点

性能下降:分层引入通信开销、层与层都有数据转化、不能跨层访问

开发成本上升

分层架构设计

依赖规则

越向外越具体,越朝内越抽象

外圈 是软件,内圈是规则

依赖关系只能从外向内

定义职责

高层表示规则,底层实现细节

逻辑内聚自治分组

依据组织职责分工

定义技术栈

根据每层的需求各自选定

借鉴成功案例  ↵

部署方式

代码抽象与分层

层对外暴露接口,隐藏实现细节

实现依赖于抽象,抽象不可依赖于实现细节

代码不跨层调用,只依赖于直接的下一层

集成

集成前做单元测试

根据接口和技术栈确定集成方式

集成联调

分层架构模型

MVC

Model:Domain model 和业务逻辑

View: 展示数据和用户交互

Controller:接收输入并转换为对mode的 *** 作

                   将model转化为view能展示的数据

MVVM

BFF

Backend for frontend

避免了终端与多个服务的交流

GraphQL

面试指导:
Http和底层TCP IP链接的关系

什么MVC架构?采用何种技术实现mvc

Spring Cloud Hystrix 断路器的工作原理

如何完成legacy系统重构

事件驱动的架构模式 什么是 EDA

事件驱动架构模式是一种异步分发事件的架构模式

用于高扩展且低耦合的系统

事件为核心,一系列解耦的、单一功能的事件处理器

两种Topology

Mediactor 中介  流程

Broker 无中心 无流程

Mediator中介模式

存在业务流程

多步骤

统一协调,居中调度

事件分层次

Event queue

源系统将event发送到queue

event 处理系统从queue中消费event

源系统和事件处理系统的连接点

Queue只关心事件的传输

Event mediator

中介从queue中消费原始事件,并分配、协调各个执行步骤

对应业务处理的各个步骤,产生待处理事件(业务事件)

将待处理事件异步分发带不同的通道(channel)

无具体业务逻辑,只知道有哪些步骤

Event channel

Mediator向channel发送消息processor从channel读取

某种业务事件(消息)的聚合

多个processor可以监听同一个channel

Event processor

监听channel的event

具体的、单一功能的业务逻辑单元

处理器之间无关联性

Mediator模式应用场景

Broker代理模式

无中心控制器

轻量的消息代理将消息串联成链状

分发至事件处理器组件

事件处理器独立运作

Event channel

Event Processor

监听channel的event,判断是否处理

处理一个事件,并发送一个事件,标明其行为

事件处理器,单一业务逻辑

处理器无关联性,不构成业务逻辑链

Broker

轻量级的代理

无业务逻辑的简单消息分发

源系统将event发送至代理(通道)共processor消费

事件通道可以是queue,topic或者两者组合

Broker模式应用场景:订单状态日志记录

Notification

源系统发送消息通知其他系统状态改变

接收方响应非必须

发身Event逻辑与处理Event逻辑无依赖,独立变化

解耦,各自扩展

Carried State Transfer

源系统推送信息及变化

   依赖者生成信息副本

容错

  源系统不可用时,依赖者可以使用副本

依赖者维护信息副本和变化

    数据的冗余

   数据一致性

提高整体性能

    依赖者直接使用信息副本

EDA解决了什么问题

EDA优点

整体灵活性

架构能否在不断改变的使用场景下快速响应

事件处理器组件目的单一、高度解耦,可以独立变化

代理拓扑结构比中介拓扑结构调度会更容易

  事件中介与事件处理器是耦合的

  代理模式完全耦合

可扩展性

高度解耦,独立变化

横向扩展

     不同组件的运行节点数均可自行调整

     组件本身可以自行决定是否再拆分实现

纵向扩展

   计算密集型还是内存密集型,按需调整

性能

  细粒度的事件处理器有利于提高性能

  整体架构是异步并行有利于提高性能

易于部署

  高度解耦的事件处理器组件让整体部署相对容易

缺点

可测试性

   单元测试无差异

   集成测试难

     组件众多

     异步

可维护性

  分布式部署

  异步

  异常处理难

性能

分布式消息传递会降低性能

  

典型应用场景

NIO 

针对不同的IO event分配不同的handler

Selector : 监控哪些Channel 有IO event

SelectionKey:维护IO event的状态和绑定的handler

Nginx

Nginx的工作进程一直监听端口并等待Event

Event 是由新建立的连接所触发

所有的连接都会被分配到一个对应的状态机

Non-blocking

短信验证码

电商订单生命周期管理

数据同步消息广播

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4667996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-07

发表评论

登录后才能评论

评论列表(0条)

保存