高级系统架构师必知的经纪人Broker设计

2023-12-01 01:58

本文主要是介绍高级系统架构师必知的经纪人Broker设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是经纪人(Broker)解决方案

每个网络节点的本地Broker 代表系统中的领域对象进行协商并实现进程间通信的功能。远程领域对象的显式接口采用Client Proxy(客户端代理)的方式在其客户端的地址空间实现,并处理所有与Broker 之间的交互。

此外,无论是本地的对象还是远程的,Broker 都为领域对象提供注册其网络位置和所公开的显式接口的功能,并允许它们获取其它所有己注册的领域对象的显式接口。

因此,在分布式系统中,通过使用一系列的Broker,可以从应用的功能中,隔离并封装通信基础设施的细节,这样客户端可以像使用本地服务一样,调用远程服务的方法。


Broker 有两个重要优点:

封装性:使得应用程序开发人员专注于提供必要的领域功能,他们不需要关心底层的网络问题。

位置无关性:允许客户端采用与访问同一地址空间领域对象相同的方式来访问远程领域对象,从而支持计算机网络中的灵活部署。

位置无关性还有利于提升系统的可伸缩性和可用性,因为它可以通过复制和联合领域对象有效地利用网络中可用的集体计算能力。位置无关性对于产品线架构环境来说非常重要,因为不同的产品线实例具有不同的功能性和操作上的需求。


领域对象不要直接处理网络问题


问题:怎样才能够保护仓库管理流程控制系统中的领域对象,使其不必直接处理网络问题并在它们之间提供位置无关的交互机制呢?

对策:利用经纪人(Broker)解决方案,隔离业务和通信基础设施的关系。

解决方案:为网络桥接设计合理的经纪人(Broker),以便分布式的领域时象能互相发现、访问并彼此交流,就像它们部署在一起一样。

这种设计可以帮助我们从应用的功能中,隔离并封装通信基础设施的细节。Broker 系统的封装性和位置无关性,有利于提升系统的可伸缩性和可用性,位置无关性对于产品线系统环境来说非常重要,因为不同的产品线实例具有不同的功能性和操作上的需求。


仓库流程控制系统的网络桥接


如何帮助我们从应用的功能中,隔离并封装通信基础设施的细节,从而保证系统的封装性和位置无关性,有利于提升系统的可伸缩性和可用性呢?通过经纪人(Broker)设计解决方案可以帮助我们解决这类问题。

位置无关性对于产品线系统环境来说非常重要,因为不同的产品线实例具有不同的功能性和操作上的需求。下图描绘了仓库管理流程控制系统的表现层和业务处理层中使用基于Broker 模式的通信基础设施的情况。在该图中,MFC 指的是物流控制(Material Flow Control)。我们假定位于同一层中的领域对象处于同一位置。


为了满足操作大型仓库所需要的性能和吞吐量方面的要求,规定在流程控制系统的Broker 模式中,所有的进程间通信都是异步和面向消息的。调用客户端代理的一个方法会发出一个特定类型的异步消息(请求报文)。远程调用的结果通过“响应报文”异步返回。


然而,纯粹的异步通信机制经常难以理解,更难以在应用服务的实现中正确而有效地使用。


因此客户端代理还要完成以下任务:将异步通信机制封装起来,并向客户端领域对象提供它们所需要的特定通信和调用模型。这种封装有助于应用开发人员以一种更直接、易懂和方便的方式来使用异步通信机制。

这篇关于高级系统架构师必知的经纪人Broker设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439383

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文