OpenMessaging 翻译
原文连接 http://openmessaging.cloud/
特性1: 跨语言 跨平台
旨在 在不同的应用系统和平台上开发消息和流式应用
特性2:易于迁移
以云为向导,支持多种云,通过OMS连接多种云平台,各个云平台都是互相独立的
OpenMessaging 域名架构:
最新版(v0.3)去掉topic的概念,引入流元素(是分区,共享和消息分组的一个抽象概念)
namespace 类似于cgroup namespace ,是一个有安全保障的独立空间,每个命名空间都有自己独立的生产者、消费者、topic、queue等等的一个集合,OMS使用MessagingAccessPoint 来访问、读、写指定namespace 的资源。
producer :包括两种类型 生产者和批量消息发送方
生产者——提供多种发布方法用来向OMS集群中指定queue发布一条消息
批量消息发送方——主要关注在速度上,使用批量的方式,发布多条消息,然后一次性提交
消费者:包括三种类型 拉消费、推销费、流式消费
拉消费——从指定的queue中拉消息,只能从一个固定的queue中拉取,同时支持通过ack提交消费结果
推送消费——可以从多个queue中消费消息,消息通过MOM server推送出去,推送消费者可以通过独立的MessageListener和多个queue关联,再通过ReceivedMessageContext提交消费结果
流式消费——一种新型消费者,更易于集成消息系统和流式计算平台,像一个迭代器一样消费指定queue的消息流。
queue:queue的源端可以是生产者也可以是routing,queue可以被划分为各个流,一条消息可以通过 MessageHeader#STREAM_KEY发送到指定的流。他也可以直接接收生产者的消息,有时候,为了性能,我们会追求生产者到消费者的最短距离。
routing: 负责处理queue源端最原始的消息然后路由到其他的queue中,路由有3个部分,包括源queue,目的queue和表达式,消息通过计算表达式从源端路由到目的queue,最常用的过滤器表达式,只支持OMS 版本定义的表达式,以后可能会支持去重表达式、联合表达式等等。另外routing也可以跨网络传输消息。