网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 RabbitMQ实战(高效部署分布式消息队列)
分类 科学技术-工业科技-电子通讯
作者 (美)维德拉//威廉姆斯
出版社 电子工业出版社
下载
简介
编辑推荐

绝大多数应用程序的核心都有一个虚拟交换机,用于在服务器、程序和服务之间快速传递消息。RabbitMQ是一个高效且易于部署的消息队列服务器,它可以轻而易举地处理各种情形下的消息通信,不论是网络初创公司还是大型企业系统。

本书能够教会你如何使用RabbitMQ消息通信服务器,构建和管理用不同语言编写的可伸缩应用。这很容易上手。你将学习消息队列的工作原理以及RabbitMQ是如何适用的。然后,你将通过许多案例来探索实践当中的可扩展性和互操作性问题。最后,你将学习如何将Rabbit打造成一部运作良好的机器,以应对24×7×365的无间断工作环境。

本书包以下内容:

学习基本消息通信设计模式

使用模式来满足按需扩展

整合PHP编写的前端和用任何语言编写的后端

在30分钟内实现发布/订阅的告警服务

配置RabbitMQ内建集群

监控、管理、扩展并调试RabbitMQ

本书是为那些熟悉Python、PHP、Java、.NET或者任何其他现代编程语言的开发者编写的。无须任何RabbitMQ经验。

作者简介

Alvaro Videla是一名专门从事基于MQ应用程序的开发者和架构师。

Jason J.W. Williams是消息通信服务供应商DigiTar公司的CTO,他领导着设计与开发工作。

内容简介

本书对RabbitMQ做了全面、翔实的讲解,体现了两位专家的真知灼见。本书首先介绍了有关MQ的历史,然后从基本的消息通信原理讲起,带领读者一路探索RabbitMQ的消息通信世界。这当中不仅包含了针对单台RabbitMQ服务器和RabbitMQ集群的讲解,还教导读者如何使用各种工具来进行监控。

本书内容浅显易懂,文笔风趣幽默。书中包含了丰富的、可以运行的示例程序源代码,读者可以自行下载并运行,这种亲身实践有助于加深对相关主题的理解。对于初学者来说,这样的编排非常适用。对于那些有RabbitMQ使用经验的读者来说,本书不仅可以巩固消息通信基本原理,同时也可加深对RabbitMQ高级特性的理解,譬如如何编写RabbitMQ插件。相信处于RabbitMQ探索之旅不同阶段的读者都能从本书获益。

本书适合有工作经验的开发者或者架构师阅读,也可以作为RabbitMQ运维工作的参考手册。

目录

第1章天降奇兵 

1.1住在别人的地下城堡 

1.2救世主AMOP 

1.3RabbitMQ简史 

1.4百里挑一 

1.5在UNIX系统上安装RabbitMQ 

1.5.1为什么环境很重要——生活在Erlang的世界里 

1.5.2获取安装包 

1.5.3设置文件夹结构 

1.5.4首次运行Rabbit 

1.6总结 

第2章理解消息通信 

2.1消费者和生产者(这可不是经济学课程哦) 

2.2从底部开始构造:队列 

2.3联合起来:交换器和绑定 

2.4多租户模式:虚拟主机和隔离 

2.5我的消息去哪儿了呢?持久化和你的策略 

2.6把所有内容结合起来:一条消息的一生 

2.7使用发送方确认模式来确认投递 

2.8总结 

第3章运行和管理Rabbit 

3.1服务器管理 

3.1.1启动节点 

3.1.2停止节点 

3.1.3关闭和重启应用程序:有何差别 

3.1.4Rabbit配置文件 

3.2请求许可 

3.2.1管理用户 

3.2.2Rabbit的权限系统 

3.3检查 

3.3.1查看数据统计 

3.3.2理解RabbitMQ日志 

3.4修复Rabbit:疑难解答 

由badrpc、nodedown和其他Erlang引起的问题 

3.5总结 

第4章解决Rabbit相关问题:编码与模式 

4.1解耦风雨路:谁将我们推向消息通信 

4.1.1异步状态思维(分离请求和动作) 

4.1.2提供扩展性:没有负载均衡器的世界 

4.1.3零成本API:语言不应成为枷锁 

4.2发后即忘模型 

4.2.1发送告警 

4.2.2并行处理 

4.3别忘了:用RabbitMQ实现RPC并等待响应 

4.3.1私有队列和发送确认 

4.3.2使用reply_to来实现简单的JSON RPC 

4.4总结 

第5章集群并处理失败 

5.1开足马力:RabbitMQ集群 

5.2集群架构 

5.2.1集群中的队列 

5.2.2分布交换器 

5.2.3是内存节点还是磁盘节点 

5.3在你的笔记本电脑上设置集群 

5.4将节点分布到更多的机器上 

5.5升级集群节点 

5.6镜像队列和保留消息 

5.6.1声明并使用镜像队列 

5.6.2镜像队列工作原理 

5.7总结 

第6章从故障中恢复 

6.1为Rabbit做负载均衡 

6.1.1安装HAProxy 

6.1.2配置HAProxy 

6.2连接丢失和故障转移 

6.3总结 

第7章warren和Shovel:故障转移和复制 

7.1warren:另一种集群方式 

7.2设定负载均衡器——基于主/从的集群 

7.3远距离通信和复制 

7.3.1给Rabbit装备Shovel:Shovel插件介绍 

7.3.2安装Shovel 

7.3.3配置并运行Shovel 

7.4总结 

第8章从Web端管理RabbitMQ 

8.1超越rabbitmqctl:RabbitMQ Management插件 

8.1.1为何需要Management插件 

8.1.2Management插件功能 

8.1.3启用Management插件 

8.2从Web控制台来管理RabbitMQ 

8.2.1监控Erlang VM 

8.2.2从JSON文件导入配置 

8.3从web控制台管理用户 

8.3.1创建用户 

8.3.2管理用户的权限 

8.4从Web控制台管理交换器和队列 

8.4.1列出队列信息 

8.4.2创建队列 

8.5回到命令行 

8.5.1为什么需要另一个CLI 

8.5.2CLI管理:一种更简单的方式 

8.5.3安装rabbitmqaalmin脚本 

8.5.4清空队列、创建交换器等 

8.6总结 

第9章使用REST API控制Rabbit 

9.1能用RabbitMQ REST API做什么 

9.2对客户端授权访问 

9.3访问数据统计 

9.4自动化vhost和用户配置 

9.5总结 

第10章监控 

10.1监控RabbitMQ:密切关注你的warren 

10.1.1为Nagios编写健康检测 

10.1.2使用AMQP模拟检测来确认RabbitMQ是否运行 

10.1.3使用REST API来检测 

10.1.4监控配置文件修改 

10.1.5监控集群状态 

10.2确保消费者正常工作 

10.2.1通过AMQP监控队列等级 

10.2.2使用REST API来监控队列级别 

10.2.3建立队列的消息计数基准经验法则 

10.3总结 

第11章提升性能,保障安全 

11.1对速度的需求 

11.1.1消息持久化 

11.1.2消息确认 

11.1.3路由算法和绑定规则 

11.1.4投递消息 

11.2内存使用率和进程限制 

11.2.1内存使用率 

11.2.2Erlang进程计数 

11.3SSL连接 

11.3.1SSL证书 

11.3.2设置证书颁发机构 

11.3.3生成根证书 

11.3.4生成服务器端证书 

11.3.5生成客户端证书 

11.3.6启用RabbitMQ的SSL监听器 

11.3.7测试你的RabbitMQ SSL设置 

11.4总结 

第12章聪明的Rabbit:扩展RabbitMQ 

12.1RabbitMQ插件 

12.1.1你可以用插件做什么 

12.1.2在哪里可以找到插件 

12.1.3安装插件 

12.1.4移除插件 

12.2制作你自己的插件 

12.2.1获取RabbitMQ Public Umbrella 

12.2.2设置文件夹结构 

12.2.3包含插件构建系统 

12.2.4创建Erlang应用文件 

12.3创建自定义交换器模块 

12.3.1将交换器注册到RabbitMQ 

12.3.2实现交换器behaviour 

12.3.3编译自定义交换器 

12.3.4测试你的插件 

12.4总结 

附录A在Java和.NET上使用Rabbit 

附录B在线资源 

附录C在Windows上安装RabbitMQ

精彩书摘

1.png

前言/序言

译者序

笔者从事互联网行业已五年有余,经历过大大小小十几个项目,其中包括金融领域方面的交易系统、医疗护理信息系统,再到后来的第三方软件供应商。这些项目不仅为我带来了丰富的阅历,更让我认识到软件开发的根本就在于降低软件复杂性。因此,我们需要采用可复用的软件设计模式,选取合适的软件构件来搭建自己的系统。这当中就用到了消息队列。

各位读者可能对消息队列并不陌生。消息队列提供一个异步通信协议,消息的发送者不用一直等待,直到消息被成功处理;而是立即返回。消息被暂存于队列当中,

对消息感兴趣的消费者会订阅消息并处理它们。那么,在什么样的场景下需要使用消息队列呢?其中之一就是系统集成。这些系统可能是公司的遗留系统,抑或是第三方维护的系统。集成的方法有很多,其中之一是让这些系统往数据库的某几张表写入数据,然后让新的系统定时地去轮询并取出数据进行处理。这已经具备了消息队列通信的雏形:其中的数据库表就是消息队列,它定义了消息的标准结构,并暂存待处理的消息。对于小型系统和简单的需求来讲,这样的解决方案没什么问题,并且足够应付了。但是随着日后业务需求的扩张,接入的系统越来越多,对于消息通信的需求也变得越来越复杂:

1. 你需要将同一条消息发送给多个感兴趣的系统,同时又需要让系统只接受符合特定模式的消息。

2. 你开始觉得系统当中的同步处理方式严重影响了吞吐量,你想把用户订单处理、消息通知等都修改成异步处理的方式。

3. 你开始关注系统的高可用性。同时你还想实时观测系统当中订单消息的处理速率,以便及时应对峰值压力。

通过使用标准的消息队列系统就可以轻松处理以上问题。当然它们提供的功能远不止这些。市面上有很多开放源码的消息队列系统,包括JBoss Messaging、JORAM、Apache ActiveMQ、Sun Open Message Queue、Apache Qpid、RabbitMQ,等等。其中就有本书讨论的RabbitMQ。它实现了AMQP 协议,并且遵循Mozilla Public License 开源协议。它支持多种编程语言,可以方便地和Spring 集成。最重要的一点是,使用消息队列并不是“杀鸡焉用牛刀”的问题,而是一种未雨绸缪,随着系统不断演进,你终将从消息队列中获益。

翻译一本书绝非易事。在此,我要感谢给予我帮助的赵震一和陈祥奎夫妇,你们是我的挚友与伯乐。感谢电子工业出版社的编辑张春雨和李云静,是你们的细心指导保证了本书的翻译质量。*后感谢我的女友,你是我的精神支柱,在你的陪伴和支持下,我得以全心全意地完成工作。

由于时间仓促,文中难免有不足之处,希望读者海涵,也希望各位能和我一样从中收获知识和快乐,谢谢大家。

汪佳南

2015年9月于杭州

欢迎阅读本书。如果你像我一样,你很有可能在想:“我是否应该从头开始阅读呢?”唉,市面上的技术书籍琳琅满目,但并不是所有的图书都值得花费时间关注。所以请让我邀你继续往下阅读,看看下面这份说明是否合你的胃口:

你想要通过一种实用的方法来学习推技术、流数据,以及其他消息通信模式。

你想要获得专家级别的RabbitMQ 技能,包括在设计方面和生产环境运行方面的**实践。

换句话说,本书不仅仅是一本RabbitMQ 指南。它会为你讲解能覆盖多种使用场景的基本设计模式。它展现了为何越来越多的应用开始使用这些模式,以及哪些“可以做”、哪些“不能做”。

这些模式是怎样的呢?如果你曾经有想法将系统绘成一幅信息流或者网络图,而非栈的形式,那么你可能正在使用,或者正准备使用消息通信。你可能一直在考虑数据投递、非阻塞操作或者推送通知。或者,你想使用发布/ 订阅模式、异步处理或是工作队列。所有这些模式构成了众所周知的消息通信(messaging)。

消息通信是一种至关重要的能力:它使得软件应用可以相互连接并得以扩展。应用程序们既可以像一个巨大应用中的组件一样相互连接起来,也可以连接用户的设备和数据。消息通信从本质上来说是异步的,因为它通过分隔了数据的发送和接收来解耦应用。最奇妙的地方在于该连接模式可以在任何规模下以相同的方式工作。

规模是关键点。互联网无处不在,它作为应用程序投递的基础,使得规模在应用程序设计中成为关键因素。我们已经无法停留在小规模的思考方式上。术语“大数据”(big data)已经变得非常流行。不过相较于近几年来说,所有事物都往大的方向发展了。

举例来说,移动连接设备的数量很快就将超过地球上人口的数量。当我编写本书时,Facebook 正准备IPO。CTO Bret Taylor 说道:“如果Mark Zuckerberg 在宿舍编写Facebook 的时候这些技术就已经成熟的话,那么现在的Facebook 就已经是一个移动应用了。”

花点时间想想。大多数应用曾经都是这样运作的:加载文档或者从数据库获取数据,做一些处理,并将结果写入磁盘。将来的应用程序会更像Facebook :总是在线,并且托管在云端,在任何地方都能访问。输入和处理是连续且自动的,并即时输出用户想要的过滤信息流。

如果不采用一系列专门的设计模式的话,那么这些级别的自动化、可访问性和伸缩性都无从谈起。在本书中你就能学到这些模式。作为现代消息通信技术发起者之一,Derek Collison 将消息通信描述为“移动的数据”,这一点令人印象深刻。很难想象有什么应用是不需要移动数据的。因此,消息通信无处不在。

这本书可以让你立即上手。消息通信模式将以可运行代码的形式展现在你面前。作者也会帮助你在自己的系统上运行起来。在Jason J. W. Williams 和Alvaro Videla的帮助下,你就能零距离接触那些拥有多年运行大规模RabbitMQ 系统经验的专家了。本书是他们将经验分享给社区这一杰出工作的成果。

在对RabbitMQ 有了一点感觉之后,不管你使用何种语言编写程序,都能很容易地在广大RabbitMQ 用户社区里寻求到帮助并找到更多示例。这使得RabbitMQ成为能满足你消息通信需求的选择。

希望你已经被我吊起了胃口,准备翻开下一页继续阅读。书中会有关于消息和RabbitMQ 的一切,作者将会为你揭开它们的神秘“面纱”。

Alexis Richardson

Rabbit Technologies 公司创始人和前任CEO

VMware 云应用平台高级总监

随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/4/8 19:46:36