脑袋里有一些消息传输系统架构的想法,其主要核心内容就是消息路由,从今天开始整理,不确定能否坚持下去,直到有一个比较清晰的系统架构的思路。
想研究什么、不研究什么。
如果有一个相对清晰的系统架构,反过来可以思考我们可以用这个消息系统来做什么。除非有必要,否则在这里都不会涉及关于“什么是”的问题。
内容转换。这是系统集成的一个相对独立的、必不可少的领域内容。跟消息传输关系不大。
消息队列。这是消息系统中承载消息的容器,简单的可以理解为消息放在哪里、消息如何存放、消息从哪里取出。其实现技术也是一个比较专业、深层次的领域,包含管理调度、缓存、事务、持久化等多方面的技术,但它也不是这个架构主要关注的内容。
消息、消息路由。这个应该是这个架构重点研究的内容。
消息是无状态的。
第一个约束就很纠结,通常来说每个消息就是一个独立的数据实体,不应该跟其他消息存在关联关系,但很可能以后会讨论到消息分组、大消息的拆分、合并,搞不好会违背无状态原则。某些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项目...
基于Spring Boot框架的个人博客系统 内容概要 本项目是一个基于Spring Boot框架开发的个人博客系统,涵盖了博客的前台展示和后台管理功能。技术栈包括Spring Boot、JPA、MySQL、Vue、ElementUI和Echarts。系统分为...
在VC++开发中,MFC(Microsoft Foundation Classes)框架提供了便捷的方式来处理用户界面的事件,如鼠标和键盘消息。在给定的文件中,我们主要关注如何处理鼠标左键按下消息以及利用这些消息进行简单的绘图操作,如...
随笔之十二-高压直流输电系统.doc
# 基于Spring Boot和Vue的个人博客系统 ## 项目简介 本项目是一个基于Spring Boot和Vue框架开发的个人博客系统,旨在提供一个功能齐全、易于维护的博客平台。系统分为前台展示和后台管理两个部分,前台部分主要...
信息技术教学随笔主要探讨了如何在信息技术教学中应对教材陈旧和激发学生兴趣的问题。作者指出,信息技术学科因其快速发展,教学内容应及时更新,以适应不断变化的信息环境。针对使用过时教材的情况,教师采取了以下...
教学随笔1.doc
1. **RAR文件格式**:RAR是一种常见的压缩文件格式,用于减少文件大小以便存储和传输。它支持分卷压缩,可以在多个文件中存储一个大型文件。 2. **PDF文件格式**:PDF(Portable Document Format)是Adobe公司开发...
很抱歉,但根据您给出的信息,标题和描述中提到的是"网恋随笔散文随笔散文.rar",这明显与IT行业知识不相符,而更倾向于文学或个人创作。标签虽为"教育",但没有具体的IT教育相关知识点。压缩包子文件的文件名称列表...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名。...通过阅读和理解"Java完整随笔(学习)"中的笔记,学习者可以系统地掌握Java编程,为成为熟练的Java开发者打下坚实基础。
1. **散文与随笔的区别**:散文通常指的是结构自由、形式灵活、语言优美、情感丰富的文学体裁,它强调的是意境和情感的表达;而随笔则更为随意,通常是作者对某一主题的即时感悟,篇幅短小,但富有哲理。 2. **黄牛...
工程数学软件实用入门资料,可视很好,不需要专门的语言。
Java 记录随笔是关于 Java 软件架构设计的笔记,涵盖了软件架构的基本原则、当前流行的技术、数据库存储结构、Web 界面用户接口层、业务层架构、持久层技术、XML 结构化信息传输和存储的重要性等多个方面。...
关于描写夏天的散文随笔.doc
【标题】"散文随笔_生活三部曲散文随笔.rar"所指的是一份包含散文随笔作品的压缩文件,特别关注的是生活的主题。在IT领域,这可能涉及到电子书、数字出版或个人资料存储等方面的知识。"rar"是一种常见的文件压缩格式...
因此我们可以结合现有的信息技术,实现一个以基于植物叶片图像来辨识植物种类功能为主的,同时辅有植物培育技巧普及,植物随笔等功能的手机应用。 本论文主要介绍了“识叶”系统的实现过程:主要包括项目的研究现状...
使用canoe来对can网络TP层进行测试,基于15765的测试用例.