admin 管理员组

文章数量: 1086019


2024年4月14日发(作者:js字符串转数字保留两位)

信息技术

信息化

研究与探讨

高性能消息中间件技术的分析与研究

张晨宇

*

陆保国 耿会东

ZHANG Chen-yu LU Bao-guo GENG Hui-dong

摘 要

消息中间件具有异步处理、松耦合、削峰限流的特点,是大规模分布式系统中重要的组件,在实时发布

订阅系统中有着广泛的应用。本文概述了国内外市场主流消息中间件技术的发展现状,然后对消息中间

件的系统设计、传输协议、引擎范型、架构原理等方面进行了分析阐述,并介绍了Apache Kafka的系

统设计原理,给出了消息系引擎技术的实际使用场景,最后论述了消息中间件技术的未来发展及所面临

的挑战。

关键词

消息中间件;topic;订阅发布;高并发

doi:10.3969/.1672-9528.2019.10.061

0 引言

目前,使用基于同步的请求/响应的C/S体系架构在

分布式系统领域中占据着重要的位置,但是随时微服务架构

的逐步发展,系统规模不断的扩大化和复杂化,这种体系架

构已经无法支撑日益增长的活动流数据(activity stream

data)。基于消息驱动的发布/订阅架构应运而生,而消息

中间件是实时发布/订阅系统中最为关键的一环,它直接决

定了整个系统处理能力的上限和稳定性。因此,海量数据背

景下,研究消息中间件技术的架构原理和高效使用方式至关

重要。

1 消息中间件技术介绍

1.1 消息中间件概述

企业消息中间件系统(EMS)被定义为企业发布的一组

规范,公司使用这组规范实现在不同系统之间传递语义的准

确的消息。在实际使用场景中,消息中间件系统通常以软件

接口为主要的表现形式,实现了松耦合的异步方式数据传递

语义。一个典型的消息中间件系统架构如图1所示。

生产者

生产者

(消息发送者)

(消息发送者)

生产者

生产者

(消息发送者)

(消息发送者)

生产者

生产者

(消息发送者)

(消息发送者)

1.2 消息设计

消息作为消息中间件系统中关键因素之一,可以是任何

形式的,在企业生产活动中有价值的数据,比如电子邮件、

传真、及时消息和日志数据等。在设计消息时,语义的清晰

程度和格式上的通用性是两个重要条件,一条消息要有能够

完整清晰表达业务的能力,同时为了更好的表达处理语义以

及最大限度地提高重用性和拓展性,需要采用结构化的方式

进行设计。比如简单对象访问协议(SOAP)中的消息采用了

XML格式,而Web Service协议中主要支持JSON格式的消息。

在Kafka,ActiveMQ等消息中间件系统中,消息以二进制的

方式进行传输和存储。

1.3 消息中间件范型设计

消息中间件范型是基于网络的架构范型,描述了消息中

间件系统中不同子部分之间交互的模式。目前,主流的两种

消息中间件范型是消息队列模型和发布/订阅模型。

消息队列(message queue)模型基于队列提供

消息传输服务,多用于进程间通信(inter-process

communication,IPC)以及线程间通信。该模型定义了消息队

列(queue)、发送者(sender)和接收者(receiver),提

供了点对点(point-to-point,p2p)的消息传递方式,两者

是一对一的关系。典型的基于消息队列的消息中间件模型如

图2所示。

消息中间件系统

1.生产者消息费解耦

2.可集成进任意系统

3.异步消息传输

生产者

生产者

生产者

生产者

生产者

生产者

生产者

生产者

消息中间件

消息中间件

消费者

消费者

(消息接收者)

(消息接收者)

消费者

消费者

(消息接收者)

(消息接收者)

消费者

消费者

(消息接收者)

(消息接收者)

图1 消息中间件架构图

消费者

消费者

消费者

消费者

消费者

消费者

消费者

消费者

* 中国电子科技集团公司第二十八研究所 江苏南京 210000

图2 基于队列的消息中间件模型

2019年第10期

193

研究与探讨

信息技术

信息化

发布/订阅模型提出了主题(topic)的概念:topic为

逻辑语义相近的消息的容器,该模型也定义了生产者和消费

者的角色,即生产者将消息发送到指定的topic中,所有

订阅了该topic的消费者都可以接收该topic的消息。目

前主流的消息中间件Kafka通过引入消费者组(consumer

group)的概念来同时支持这两种模型。典型的基于发布/订

阅的消息中间件模型如图3所示。

生产者

生产者

生产者

生产者

生产者

生产者

生产者

生产者

主题

消费者

消费者

消费者

消费者

消费者

消费者

消费者

消费者

图3 基于发布/订阅的消息中间件模型

2 Kafka消息中间件设计

2.1 Kafka消息中间件简介

Apache Kafka 是LinkedIn公司开发的一个消息中间件

系统,使用Zookeeper 进行集群的管理。Kafka 由Produc-

er( 生产者,负责发布消息到Broker) 、Broker( 消息服务

器) 和Consumer( 消费者,从Broker读取消息) 3 部分组

成,而Producer 和Consumer 均属于客户端。应用程序通过

Producer API 发送消息到Broker 集群,再通过Consumer

API从Broker 服务器消费消息。

2.2 Kafka topic设计

Kafka中的topic代表了一类业务数据信息,如图4所示,

系统中使用数据业务类型名称和操作组成的字符串,然后对

其取MD5值,生成topic值。为了提升整个系统的吞吐量和

性能最大化,Kafka的topic采用主题-分区(partition)-

消息三级分层结构来分散负载,并且使用了消息顺序写入的

方式,具体结构如图4所示。

分区0

0

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

写入

分区1

0

0

1

1

2

2

3

3

4

4

5

5

6

6

分区2

0

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

消息写入顺序

图4 topic结构图

2.3 高吞吐、低延时设计

Kafka为了达到高吞吐、低延时的设计目标,主要依靠

194

2019年第10期

下列五点:

1.大量使用操作系统页缓存(page cache),内存操作

速度快且命中率高。

不直接参与物理I/O操作,而是交由操作系统

完成。

写入操作采用追加写入(append)方式,避免

了磁盘随即写操作。

4.使用零拷贝技术(zer-copy)加强网络间的数据传输

效率。

的生产者(Producer)提供了多种压缩算法,

在发送之前先将消息进行压缩,然后打包缓存在内存中,最

后批量发送,这种发送模式可以提高消息发送效率,减少服

务端I/O压力。

3 消息中间件技术使用场景

3.1 消息传输

消息中间件可以完美的替代传统的消息总线或者消息代

理。它更擅长于解耦生产者和消费者以及批量处理消息,并

且具有更好的吞吐量特性,诸如Kafka内置的分区机制和副

本机制即实现了高性能的消息传输,同时还达到了高可靠性

和高容错性,因此消息中间件技术特别适合实现一个分布式

超大量级处理应用。

3.2 日志审计数据收集

关键操作和运维数据的监控和审计是分布式系统中不

可或缺的一环,这就需要各个应用程序实时汇总操作步骤信

息和日志信息并进行集中式管理。消息中间件技术可以便捷

地对多路消息进行实时收集,同时由于其持久化的特性,使

得离线审计和记录分析成为可能,目前主流的日志抽取框架

ELK就是基于Kafka实现的。

3.3 流式处理

流式处理(streaming processing)在当今大数据处理

和分布式计算领域中越发重要,企业日益地期望获取及时数

据,并且急需一种处理语义或者系统能够应对无穷多的数据

集。因此Kafka推出了Kafka Streams组件,将其定义为分

布式流处理平台,它不仅能够提供可靠的消息队列服务,同

时还实现了一套完整的流处理语义库。

4 消息中间件技术的机遇与挑战

大数据时代来临,数据中所蕴含的巨大价值越来越被重

视,而数据的质量与数据价值密切相关,要保障数据传输的

质量和可靠性,消息中间件必不可少。一方面,多终端、分

布式的系统越来越常见,系统中同级各个节点之间、各节点

与上层节点之间需要消息中间件进行数据传输和数据协同。

另一方面,网络安全战略对消息中间件的安全性要求明显提

升,国家逐步加强了数据安全方面的部署,“自主可控”、“国

信息技术

信息化

研究与探讨

基于ERDAS LPS无人机影像DOM制作的研究

席敏哲

*

邱春霞 尚夏明

XI Min-zhe QIU Chun-xia SHANG Xia-ming

摘 要

无人机低空遥感以其快捷、成本低、安全、影像分辨率高、周期短等特点成为当今航空遥感的发展趋势,

但针对无人机数据量大、耗费大量人力物力等劣势,如何利用无人机航空影像快速制作DOM逐渐成

为热点。本文介绍了无人机影像的处理方法以及相关原理,以某典型区域航摄影像为例,应用ERDAS

LPS模块进行实验。利用定位定向系统数据进行空中三角测量,快速制作数字高程模型,用以正射校正、

重采样处理获得DOM成果,并对制作DOM过程中空三测量误差较大情况提出了解决方案。

关键词

无人机影像;LPS;DOM;空中三角测量

doi:10.3969/.1672-9528.2019.10.062

0 引言

以无人机(Unmanned Aerial Vehicle)为搭载数码相

机或航摄仪等设备进行航摄的平台,获得高分辨率、高质量

遥感影像,已成为当今高分辨影像获取的重要手段之一。无

人机因其具有高机动性、作业方式灵活、不受重访周期限制、

作业成本相对较低、影像时效性、针对性强、分辨率高等优

[1]

,已广泛应用于应急减灾、环境保护、资源调查与监测、

考古调查、城市规划等领域

[2]

。同时,由于飞行环境复杂、

无人机飞行不稳定,使得无人机获取的影像POS数据不精

[3]

,且数据量庞大,给后期数据处理增加了难度,如何快

* 西安科技大学测绘科学与技术学院 陕西西安 710054

1.1 影像匹配

影像匹配是通过预先设置的匹配算法,在不同影像之间

提取同名点,即通过在一幅影像中定义特征点,在另一立体

速处理无人机影像数据,以满足测绘需求和灾害应急等方面

的应用成为当今研究的热点。

本文通过对无人机影像处理方法的理论研究,基于

ERDAS LPS软件,利用区域内一组无人机航摄影像为实验数

据,进行数字正射影像(DOM)数据制作,并针对数字正射影

像数据处理过程中,空中三角测量残差过大对数字正摄影像

造成的影响进行探讨并提出解决方案。

1 无人机影像处理基本原理

产化”已经提升至国家战略层面,国产消息中间件领域发展

潜力巨大,已经有成熟的产品具备了可替代的能力,如阿里

系的RocketMQ,东方通的TongLINK/Q。

消息中间件技术因其独特的优势,将会更加广泛地应用

于大规模实时发布/订阅系统中。并且,它在技术上的实用

性很强,可以强有力地推动需要解决高吞吐量、高性能、高

实时性要求的系统的开发和设计。并且该技术可以促进不同

业务需要的拓展,使不同业务都能够利用消息中间件技术得

到实现,从而提高系统运行效率,降低系统设计难度和开发

成本。

5 结束语

本文研究了消息中间件技术的发展,详细分析了消息中

间件的架构和设计模式,并介绍了Kafka的设计原理,为实

时发布/订阅系统的发展提供了一种思路和发展方向,最后

阐述了消息中间件技术未来的发展机遇和挑战。

参考文献

[1] 裴宏祥, 于晓虹. 基于Kafka 消息平台的软件系统设计[J].

电子技术与软件工程,2018,18(01):39.

[2] 王建荣, 季刚. 海量自动气象站分钟数据存储检索系统设

计[J]. 电计算机与现代化,2017,265(9):40-44.

[3] 屈志坚, 林宏平. 基于发布订阅的系统分布式主动消息交

互研究[J].计算机测量与控制,2015,23(02):529-532.

[4] 胡夕. Apache Kafka实战[M]. 北京:电子工业出版社,

2018.

【作者简介】

张晨宇(1989-),男,陕西宝鸡人,硕士研究生,毕业

于南京理工大学,助理工程师,研究方向:数据平台软件设

计研发。

(收稿日期:2019-10-12)

2019年第10期

195


本文标签: 消息 系统 数据 技术 进行