消息中间件-基于metaq-zookeeper

消息中间件

消息中间件在消息传输过程中保持消息的容器。消息中间件再讲消息从它的原中继到它的目标时充当中间人的作用。队列的主要目的是提供路由并保证消息的传递;如果发送消息是接受者不可用,消息队列会保留消息,直到可以成功地传递它为止,当然,消息队列保存消息也是有期限的。

消息中间件特点

1 采用异步处理模式

消息发送者可以发送一个消息而无须等待响应。消息发送者将消息发送到一个虚拟的通道(主题或队列)上,消息接受者则订阅或是监听通道。一条消息可能最终转发给一个或多个消息队列接受者。这些接受者都无需对消息发送者做出同步回应。整个过程是异步的

比如用户信息注册。注册完毕后过段时间发送邮件或者短信

2 应用程序和应用程序调用关系为松耦合关系

发送者和接受者不了解对方,只需要确认消息

发送者和接受者不必同时在线

比如在线交易系统为保证数据的最终一致性,在支付系统完成后会把支付结果放到消息中间件通知订单系统修改订单支付状态。两个系统通过消息中间件解耦。

1 支付成功,向消息中间件写入成功     毫秒级别

2 支付未知 怎么解决?

消息传递服务模型

消息中间件的传递模型

1 点对点模型(PTP)

点对点模型用于消息生产者和消息消费者之间点到点通信。消息生产者将消息发送到由某个名字标识的特定消费者。这个名字实际上对应于消费服务中的一个队列(Queue),在消息传递给消费者之前它被存储在这个队列中。队列消息可以放在内存中也可以持久化,以保证在消息服务出现故障时仍能传递消息。

一 每一个消息只用一个消费者

二 发送者和接受者没有时间依赖

三 接受者确认消息接受和处理成功

2 发布-订阅模型(Pub/Sub)

发布者/订阅者模型支持向一个特定的消息主题生产消息。0或多个订阅者可以对接受来自特定消息主题的消息感兴趣。在这种模式下,发布者和订阅者彼此不知道对方。这种模式好比匿名公告板。这种模式被概括为:多个消费者可以获得消息。在发布者和订阅者之间存在依赖性。发布者需要建立一个订阅(subscription),以便能够消费者订阅。订阅者必须保持持续的活动状态以接受消息,除非订阅者建立了持久的订阅。在这种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。

一 每个消息可以有多个订阅者

二 客户端只有订阅后才能接收到消息

三 持久订阅和非持久订阅

1 发布者和订阅者有时间依赖

接受者和发布者只有建立订阅关系才能收到消息

2 持久订阅

订阅关系建立后,消息就不会消息,不管订阅是否在线

3 非持久订阅

订阅者对了接受消息,必须一直在线

当只有一个订阅者时约等于点对点模式

中间件使用案例

用户注册异步处理案例

1 网站用户注册,注册成功后会过一会发送邮件确认或者短信

日志分析使用案例

1 把日志进行几种收集,用于计算PV,用户行为分析

数据复制案例

1 将数据从源头复制到多个目的地,一般是按要求按顺序或者保证因果序列

2 用于跨机房数据传输,搜索,离线数据计算等

延迟消息发送和暂存

1 把消息中间件当成可靠的消息暂存地

2 定时进行消息投递,比如模拟用户秒杀访问,进行系统性能压测

消息广播

1 缓存数据同步更新

2 往应用推送数据

比如更新本地缓存

消息中间件分类

1 (push) 推消息模型:消息生产者将消息发送给消息传递服务,消息传递服务又将消息推给消息消费者

2 (pull) 拉消息模型:消费者请求消息服务接受消息,消息生产者从消息中间件拉该消息

两种类型的区别


模型


Push


Pull


服务端


消息存储

处理请求

保持推送轨迹

保存订阅关系

消费者负载均衡

集中式


消息存储

处理请求

分布式


客户端


处理响应和请求


处理响应和请求

保存pull状态,如拉取位置的偏移量offset

异常情况下的消息暂存和recover


实时性


较好,收到数据后可立即发送给客户端


取决于pull的间隔时间


消费者故障


消费者故障情况下,服务端堆积消息,重复推送消耗资源。

保存推送轨迹压力很大


消费者故障,对服务端无影响


其他


对消息推送有更多控制,能实现多样化的推送机制。当消费者数量增多的时候,推送压力很大,性能天花板。

消费者处理能力差异,导致堆消息


需要在客户端实现消息过滤,浪费资源。

需要在不同客户端之间协调,做负载均衡

时间: 2024-11-06 22:30:03

消息中间件-基于metaq-zookeeper的相关文章

基于外部ZooKeeper的GlusterFS作为分布式文件系统的完全分布式HBase集群安装指南

(WJW)基于外部ZooKeeper的GlusterFS作为分布式文件系统的完全分布式HBase集群安装指南 [X] 前提条件 服务器列表: 192.168.1.84 hbase84 #hbase-master 192.168.1.85 hbase85 #hbase-regionserver,zookeeper 192.168.1.86 hbase86 #hbase-regionserver,zookeeper 192.168.1.87 hbase87 #hbase-regionserver,z

ZooKeeper应用理论及其应用场景

ZooKeeper Client APIZooKeeper Client Library提供了丰富直观的API供用户程序使用,下面是一些常用的API: ● create(path, data, flags): 创建一个ZNode, path是其路径,data是要存储在该ZNode上的数据,flags常用的有: PERSISTEN, PERSISTENT_SEQUENTAIL, EPHEMERAL, EPHEMERAL_SEQUENTAIL ● delete(path, version): 删除一

【转】ZooKeeper原理及使用

原文链接  http://www.wuzesheng.com/?p=2609 ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby.今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景. ZooKeeper基本

ZooKeeper原理及使用

ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby.今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景. ZooKeeper基本原理 1. 数据模型如上图所示,ZooKeeper数据模型的结构与Unix文件

zookeeper的原理及使用

ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby.今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景. ZooKeeper基本原理 1. 数据模型如上图所示,ZooKeeper数据模型的结构与Unix文件

zookeeper概念与原理

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. 1 Zookeeper的基本概念 1.1 角色 Zookeeper中的角色主要有以下三类,如下表所示: 系统模型如图所示: 1.2 设计目的 1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能. 2 .可靠性:具有简单.健壮.良好的性能,如果消息m被到一台服务器接受,那么它将被所有

Zookeeper原理和应用

ZooKeeper基本原理 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode.每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1.在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到.另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的

知识链-分布式协调服务zookeeper

分布式协调服务 Zookeeper zookeeper是一个开源的分布式协调服务.是典型的分布式数据一致性的解决方案. 集群内所有server基于Zab(ZooKeeper Atomic Broadcast)协议进行通信 Zookeeper官网地址: http://zookeeper.apache.org/ Zookeeper官网文档地址:http://zookeeper.apache.org/doc/trunk/index.html 认识ZooKeeper ZooKeeper概述 ZooKee

zookeeper初识之原理

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper是hadoop的一个子项目,其发展历程无需赘述.在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在 某些应用中使用,因此需要有一种可靠的.可扩展的.分布式的.可配置的协调机制来统一系统的状态.Zookeeper的目的就在于此.本文简单分析 zookeeper的工作原理,对于如何使用zookeepe