• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

openmessaging架构原理解析

JAVA web前端中文站 3年前 (2017-10-16) 1898次浏览 已收录 0个评论

openmessaging?构建分布式消息传递的开放标准。口号响亮,厂商众多,openmessaging 一出生就有众多大佬(阿里云 openmessaging,滴滴,雅虎,亚马逊,谷歌等)的光环。而阿里捐献给 Apache 的 RocketMQ 率先为 Open Messaging 提供了部分实现。本文根据?openmessaging 开源的一些资料来解析?openmessaging 技术原理。

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

openmessaging 架构原理解析

上图是引用?openmessaging 官网的一张架构图。

openmessaging?最近发布了第一个 alpha 版本,Apache RocketMQ 已经为 OpenMessaging-0.1.0-alpha?提供了部分实现。

NAMESPACE?命名空间

命名空间喜欢 cgroup 命名空间,创建一个具有安全保证的隔离空间。每个命名空间都有自己的一组生产者,消费者,主题,队列等。openmessaging使用 MessagingAccessPoint 访问/读取/写入指定命名空间的资源。

PRODUCER?生产者

openmessaging定义了两种 Producer:Producer 和 SequenceProducer。

  • 生产者,提供各种发送方式来发送消息到指定的目的地,主题或队列。支持三种方式:同步,异步和单向。
  • SequenceProducer,专注于速度,实现可以采用批处理方式,发送多个消息,然后一次提交。

CONSUMER?消费者

openmessaging 定义了两种 Consumer:PullConsumer,PushConsumer 和 StreamingConsumer。每个消费者只支持从 Queue 消费消息。

  • PullConsumer 从指定的队列中提取消息,支持随时通过确认提交消费结果。一个 PullConsumer 只能从一个固定队列中提取消息。
  • PushConsumer 从多个队列接收消息,这些消息从 MOM 服务器推送。PushConsumer 可以使用单独的 MessageListener 附加到多个队列,并随时通过 ReceivedMessageContext 提交消费结果。
  • StreamingConsumer 是一种全新的消费类型,面向流的消费者,可轻松将消息系统与 Streaming / BigData 相关的平台集成在一起。StreamingConsumer 支持消耗来自指定队列的消息,如迭代器。

TOPIC QUEUE AND ROUTING?主题队列和路由

这三个概念是紧密相连的,虽然主题和队列有不同的责任,但他们却很混乱。

  • 主题,原始信息的载体,负责持有信息。主题中的消息分发和顺序未定义。

ROUTING?路由

主题中的信息是原始的,等待处理,始终无法唤起消费者的利益。总而言之,主题中的消息是以生产者为导向,而不是以消费者为导向。

因此,路由负责处理主题中的原始消息,并路由到队列。每个路由都有一个运营商管道,由一系列运营商组成。消息将从主题和队列流经操作员管道。

操作员用于处理路由中流动的消息。操作员,表达式运算符,重复数据删除器操作符,joiner 操作符,过滤器操作符,rpc 操作符等都有很多种类。

更重要的是?路由可以跨越网络,消息可以从网络分区路由到另一个分区。

QUEUE 队列

消息已经路由到队列,现在可以被消费者使用。值得注意的是,队列应分为分区,消息将通过 MessageHeader#SHARDING_KEY 路由到指定的分区。

队列也直接从制片人接收消息,有时候,我们希望从生产者到消费者的最短路径,以实现性能。

TOPIC VS QUEUE 主题与队列

主题和队列都是邮件的载体。主题是面向生产者,而 Queue 则以消费者为导向。主题中的消息来自生产者,而队列中的消息来自主题或生产者。队列分为分区,而主题曲则未定义。在大多数情况下,队列是主题的一小部分。创建或销毁队列很容易,生产者无关紧要。

web 前端中文站点评:

对 openmessaging 的学习,不仅需要学习其架构解析,还需要结合实际案例,具体案例可参考OPENMESSAGING 访问 ROCKETMQ 教程(开发实战

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:openmessaging 架构原理解析
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址