脑袋里有一些消息传输系统架构的想法,其主要核心内容就是消息路由,从今天开始整理,不确定能否坚持下去,直到有一个比较清晰的系统架构的思路。
想研究什么、不研究什么。
如果有一个相对清晰的系统架构,反过来可以思考我们可以用这个消息系统来做什么。除非有必要,否则在这里都不会涉及关于“什么是”的问题。
内容转换。这是系统集成的一个相对独立的、必不可少的领域内容。跟消息传输关系不大。
消息队列。这是消息系统中承载消息的容器,简单的可以理解为消息放在哪里、消息如何存放、消息从哪里取出。其实现技术也是一个比较专业、深层次的领域,包含管理调度、缓存、事务、持久化等多方面的技术,但它也不是这个架构主要关注的内容。
消息、消息路由。这个应该是这个架构重点研究的内容。
消息是无状态的。
第一个约束就很纠结,通常来说每个消息就是一个独立的数据实体,不应该跟其他消息存在关联关系,但很可能以后会讨论到消息分组、大消息的拆分、合并,搞不好会违背无状态原则。某些MQ产品确实包含这些违背消息无状态原则的功能,让人觉得整个系统架构看起来很不舒服。
交互模式:
点对点,1:1模型。指定目的地。
多播、广播。指定目的地的、可能包含通配符的确定、不确定目的地个数。1:(0-N)模型
发布/订阅。基于消息内容(消息主题)的广播模型。1:(0-N),它的目的地是由订阅者反向选择的。
请求/应答。这种交互模式是系统集成中最常用的,但传统的JMS以及MQ产品都没有直接对其提供支持。通常的解决方案是通过两端的两个消息队列,使用点对点模式间接的实现该功能。由于其广泛的应用需求,一个好的消息系统应该为其提供通用的解决方案。
服务访问。继承与请求/应答模型,指定要访问的服务,最终通过系统路由为其选择一个提供该服务的目的地。
传输网络
多个节点组成的消息传输系统。
最简单的是单一路由的线性网络。
多个节点的对等网络
分层网络
局部对等网络+分层网络
集群
针对高可靠性要求的主备(Master/Slave)集群。
高可用性、高伸缩性的负载均衡集群
消息传输系统的最基本需求就是把消息传输到期望的目的地,各种交互模式、各种网络拓扑结构、集群,基本上都可以概括成重复的“从哪里取出消息,再把消息传输到哪里”的过程。
传输系统个节点间的通讯协议只有一个,那就是消息传输协议。当然系统管理监控、订阅发布、集群功能等都存在网络交互的需求。但这些功能的实现都可以通过消息系统自身的消息交互功能来实现,这样的系统架构看起来就比较优美。
实际上最终的消息传输系统也可能会包含两个消息传输协议,一个是应用客户端连接消息服务器的通讯协议,另一个是服务器之间的通讯协议。当然可以做到只使用一个传输协议,但考虑到需要针对不同场景进行针对性的优化,可能一个传输协议无法做到二者兼顾。比如应用客户端协议可能希望有更高的可靠性(需要分布式事务)以及更短的响应时间,而服务器之间的协议可能希望有更高的传输效率、最大的吞吐量。
从上面的分析来看,完全有可能把一个消息系统建立在一个通用的、基础的消息路由框架下。
不要大而全
做通用产品最头疼的问题就是要考虑可能存在的各种各样应用需求。关于这个问题,我的想法就是设计一个足够灵活的架构,为预见到的许许多多的功能保留其实现的可能性和便利性。然后就集中资源去做那些核心的、迫切需要的功能。想到,但不做到。也是一种境界。
分享到:
相关推荐
文章提供了2.4G超远距离无线传输方案的分析,主要讨论了影响传输距离的核心因素、当前主流的2.4G技术、以及如何选择合适的无线通信芯片来构建传输系统。 首先,文章指出了2.4G传输距离受限的根本原因。2.4GHz是全球...
### 基于Simulink与XPC Target的嵌入式系统开发 #### 一、引言 在当今数字化时代,嵌入式系统的应用日益广泛,涵盖了从工业自动化到消费电子产品的众多领域。Simulink作为MATLAB的一个重要组件,为用户提供了图形...
本项目是一款基于Java和跨平台技术的crostitch涂鸦随笔设计与实现源码,包含65个文件,其中包括30个Java源文件、16个PNG图片文件、7个JavaScript文件、2个XML文件、1个Git忽略文件、1个Markdown文件、1个Maven项目...
而“技术随笔口罩检测系统在中的实践一摘要随着科技的.docx”则可能聚焦于系统在实际应用中的实践和经验总结,以及科技进步对口罩检测技术的影响。至于“在计算机视觉领域目标检测一直是一个重要的研究课题特.docx”...
此外,“技术随笔蒸汽锅炉燃烧控制系统的探索”和“探索在蒸汽锅炉燃烧控制”可能涉及到对新技术、新理念的探索与思考。 基于S7-1200 PLC的蒸汽锅炉燃烧控制系统是一个集成了硬件选择、软件编程、系统调试和运行...
其工作电压一般为9V至12V,输出稳定在5V1A,功率为5W,具有实时传输功率调节的功能。此外,该装置还配备了液晶显示屏,能够实时显示充电电压、电流和时间等信息,便于用户监控和操作。 在项目内容的描述中,涉及的...
本项目是一个基于Jekyll框架搭建的个人博客系统,适用于个人或团队分享技术文章、生活随笔等内容。博客系统具有简洁的界面设计和响应式布局,支持文章发布、评论、页面分析等功能,用户可以通过简单的配置快速搭建...
技术随笔和模型预测控制的研究文章虽然与作弊行为检测系统不直接相关,但它们的提及可能意味着系统在实现过程中考虑了相关的技术应用或创新方法。例如,模型预测控制文章可能涉及到了系统中对于预测算法的使用,从而...
基于Spring Boot框架的个人博客系统 内容概要 本项目是一个基于Spring Boot框架开发的个人博客系统,涵盖了博客的前台展示和后台管理功能。技术栈包括Spring Boot、JPA、MySQL、Vue、ElementUI和Echarts。系统分为...
复现论文:基于扩展卡尔曼滤波和无迹卡尔曼滤波的电力系统动态状态估计技术实践与应用验证——以39节点系统为例的电力网络状态精确感知方法研究,复现《基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计》 ...
最后,通过观察压缩包文件中的图片文件名,如“1.jpg”和“2.jpg”,可以推测这些文件可能包含了一些系统设计的示意图或实际应用的场景照片,这些图片资料对于深入理解PLC控制系统的设计与电气控制策略优化提供了...
在VC++开发中,MFC(Microsoft Foundation Classes)框架提供了便捷的方式来处理用户界面的事件,如鼠标和键盘消息。在给定的文件中,我们主要关注如何处理鼠标左键按下消息以及利用这些消息进行简单的绘图操作,如...
“控制下的小型水厂恒压供水系统技.txt”和“技术随笔基于的小.html”可能包含了对系统控制技术的讨论和分析;“1.jpg”可能是一张系统的示意图或原理图;“基于的小型水厂恒压供水系统技术分析一引言随着社.txt”和...
随笔之十二-高压直流输电系统.doc
# 基于Spring Boot和Vue的个人博客系统 ## 项目简介 本项目是一个基于Spring Boot和Vue框架开发的个人博客系统,旨在提供一个功能齐全、易于维护的博客平台。系统分为前台展示和后台管理两个部分,前台部分主要...
该项目是一款基于Python开发的轻量级博客系统设计源码,其设计理念是为个人提供一个记录技术与生活点滴的平台。整个系统由32个文件构成,分别包括了PNG格式的图片文件、Markdown文档文件和Python源代码文件。其中,...
本文将详细介绍如何基于YOLOv5架构和深度学习技术,利用PyTorch框架开发一个口罩检测系统。 YOLOv5是一种先进的目标检测算法,它的名称来源于“You Only Look Once”的缩写,意指在图像中仅需进行一次检测即可快速...
教学随笔1.doc
超宽带(UWB)通信系统作为短距离高速无线传输技术,同样显示出在特定应用场合下的优势。然而,OFDM UWB系统的同步问题是实现可靠通信的关键,特别是在信号接收端,如何准确、快速地完成时间同步和频率同步是技术...