新書推薦:
《
儿童自驱型成长训练手册
》
售價:NT$
254.0
《
分布式系统实战派——从简单系统到复杂系统
》
售價:NT$
551.0
《
贝克欧洲史08·帝国暴力和民族动员:1914~1945年的欧洲
》
售價:NT$
352.0
《
美国百所大学都在上的商学课(第五版)
》
售價:NT$
806.0
《
数学的现在:i
》
售價:NT$
301.0
《
中年处男:一份日本社会纪实报告
》
售價:NT$
230.0
《
行动的勇气,畅销书作家弘丹主编,30余位大咖分享人生高效秘诀。
》
售價:NT$
301.0
《
人生财富靠康波
》
售價:NT$
556.0
|
編輯推薦: |
本书告别枯燥的源码解读,以生动的案例、上百张手绘图逐层揭秘RocketMQ的原理,真正意义上做到了深入浅出;如果只推荐一本书去学习RocketMQ,本书将是最合适的一本。10年大厂实战经验沉淀、业内大咖倾情推荐
|
內容簡介: |
本书以Apache RocketMQ 4.9.5(编写本书时最新的4.x版本)为基础,从Apache RocketMQ 的实际使用、原理剖析,大规模消息集群下企业级落地的实践以及所面临的挑战,逐一由浅入深地进行讲解。
全书分3篇,共16章。基础篇包含第1~4章,主要讲解Apache RocketMQ 入门以及如何掌握Apache RocketMQ 的基础使用。原理篇包含第5~12章,主要讲解了消费原理、负载均衡原理、顺序消息原理等核心的RocketMQ部分。进阶篇包含第13~16章,主要讲解消息幂等、双活设计等进阶为架构师必须掌握的内容。讲解过程中抛弃了传统的源码解析这种较枯燥的手段,而是更多地利用以下方式帮助读者更快、更轻松地接受Apache RocketMQ的原理:通过近百张原创的手绘图,形象地描述Apache RocketMQ 的运作过程、原理;通过与Kafka、RabbitMQ等成熟的消息中间件产品做对比的方式,有助于读者对相关知识触类旁通,举一反三;每章都有思考题,以便于读者总结思考所学内容,进行灵活运用。随书附赠示意代码,获取方式见封底。
本书适合对Apache RocketMQ感兴趣的读者阅读。本书的内容能帮助读者快速地从入门到精通,并借助书中所总结的实践经验,在工作中更好地设计出高并发、高可用的后台系统,支撑互联网业务的高速发展。
|
關於作者: |
Apache RocketMQ Committer、架构师。从2017年起开始参与RocketMQ社区的工作。曾任职甲骨文、OPPO,现为某头部上市公司后台架构师,拥有11年中间件产品和大型业务后台的双背景研发经历。对海量用户、高并发、多地域容灾等架构设计拥有丰富经验,热衷于技术总结与知识分享。
|
目錄:
|
基础篇
第1章 Apache RocketMQ 综述/
1.1为什么高并发系统都绕不开消息中间件/
1.1.1初识互联网的架构/
1.1.2大型互联网系统遇到的共性挑战/
1.1.3为什么要选择 Apache RocketMQ/
1.2了解 Apache RocketMQ/
1.2.1RocketMQ简介/
1.2.2RocketMQ发展史/
1.2.3RocketMQ在“双十一”的表现/
1.3RocketMQ 核心概念与特性/
1.3.1RocketMQ组件/
1.3.2术语/
1.3.3RocketMQ重要特性/
1.4RocketMQ初体验/
1.4.1安装RocketMQ/
1.4.2启动Name Server/
1.4.3启动Broker/
1.4.4关闭Broker和Name Server/
1.4.5验证收发消息/
1.5本章小结/
1.6思考题/
第2章 RocketMQ 消息生产/
2.1生产者概述/
2.1.1生产者实例/
2.1.2生产者组/
2.2认识RocketMQ消息/
2.2.1消息结构/
2.2.2消息类型/
2.3消息发送实战/
2.3.1发送普通消息/
2.3.2发送批量消息/
2.3.3发送顺序消息/
2.3.4发送延时消息/
2.3.5发送事务消息/
2.4消息的三种发送模型/
2.4.1发送同步消息/
2.4.2发送异步消息/
2.4.3发送单向消息/
2.5生产者最佳实践/
2.5.1不同消息类型的选择/
2.5.2不同消息发送模型的选择/
2.5.3发送消息的实战建议/
2.6本章小结/
2.7思考题/
第3章 RocketMQ消息消费/
3.1消费者概述/
3.1.1消费者实例/
3.1.2消费者组/
3.2初探消费流程/
3.2.1消息存储与消息队列的关系/
3.2.2消息消费与消息队列的关系/
3.3消费实战/
3.3.1Push并发消费/
3.3.2Push顺序消费/
3.3.3Pull Subscribe消费/
3.3.4Pull Assign消费/
3.3.5集群模式与广播模式/
3.3.6标签过滤 /
3.3.7SQL92过滤 /
3.3.8消息重试和死信队列/
3.4消息消费最佳实践/
3.4.1消费日志/
3.4.2消费幂等/
3.4.3提高消费并行度/
3.4.4批量消费方式/
3.4.5大量堆积时跳过历史消息/
3.4.6规范消费者组名/
3.4.7订阅关系保持一致/
3.4.8并发消费和顺序消费的选择/
3.4.9起始消费位点的设置/
3.4.10关于异步消费/
3.4.11消费状态处理/
3.5本章小结/
3.6思考题/
第4章 RocketMQ运维与管理/
4.1RocketMQ Admin Tool/
4.1.1认识RocketMQ管理工具/
4.1.2使用RocketMQ管理工具/
4.2RocketMQ Dashboard/
4.2.1Docker方式安装 RocketMQ Dashboard/
4.2.2源码方式安装 RocketMQ Dashboard/
4.2.3使用 RocketMQ Dashboard/
4.3主题管理实践/
4.3.1主题分类/
4.3.2主题命名/
4.3.3队列数管理/
4.4测试环境实践/
4.4.1独立集群模式/
4.4.2独立主题模式/
4.4.3Tag路由模式/
4.4.4三种模式的优劣对比/
4.5生产环境运维实践/
4.5.1集群扩容/
4.5.2集群迁移/
4.6RocketMQ 常见部署架构/
4.6.1单主模式/
4.6.2主备模式的架构/
4.6.3多主模式的架构/
4.6.4同城灾备模式/
4.7本章小结/
4.8思考题/
原理篇
第5章 RocketMQ消费原理/
5.1理解RocketMQ的推模式/
5.1.1Push 模式/
5.1.2Pull 模式/
5.1.3Push模式与Pull模式的优劣对比/
5.2了解长轮询/
5.2.1短轮询/
5.2.2长轮询/
5.3RocketMQ长轮询实现/
5.3.1客户端增大超时时间/
5.3.2服务端Hold住无数据的请求/
5.3.3RocketMQ长轮询小结/
5.4RocketMQ的消息拉取优化细节/
5.4.1客户端请求异步化/
5.4.2服务端超时处理细节/
5.4.3服务端多线程交互/
5.4.4合并多个 Pull 请求/
5.5消费者线程模型/
5.5.1消费流程涉及的关键线程/
5.5.2消费线程池/
5.6消费进度管理/
5.6.1消费进度存储/
5.6.2初次启动从哪里消费/
5.7消息ACK机制/
5.7.1AT LEAST ONCE保证/
5.7.2消息消费失败进度管理/
5.8消息失败重试设计/
5.8.1重试主题/
5.8.2延迟重试/
5.9消息消费异常处理/
5.9.1消费超时/
5.9.2卡进度的保护处理/
5.9.3消息重发与顺序性的矛盾/
5.10本章小结/
5.11思考题/
第6章 RocketMQ负载均衡与消费模式/
6.1负载均衡综述/
6.2消息生产负载均衡/
6.2.1消息生产负载均衡概述/
6.2.2消息生成负载均衡的原理/
6.3消息消费负载均衡/
6.3.1无中心的队列负载均衡/
6.3.2无中心负载均衡的核心源码/
6.3.3消费者负载均衡策略/
6.4无中心负载均衡带来的弊端/
6.5RocketMQ广播消息原理/
6.5.1JMS的消息类型/
6.5.2主流消息中间件对发布/订阅模式的支持/
6.5.3RocketMQ对发布/订阅模式的支持/
6.5.4广播模式下的可靠性及顺序性处理/
6.6本章小结/
6.7思考题/
第7章 RocketMQ存储设计/
7.1RocketMQ消息存储概览/
7.1.1文件构成/
7.1.2消息存储过程/
7.2RocketMQ存储与检索/
7.2.1RocketMQ存储对比Kafka存储/
7.2.2RocketMQ存储设计对比Kafka的优势/
7.3CommitLog文件/
7.3.1CommitLog文件结构/
7.3.2CommitLog抽象模型/
7.3.3CommitLog文件组成/
7.4ConsumeQueue文件/
7.4.1ConsumeQueue文件结构/
7.4.2ConsumeQueue文件组成/
7.5IndexFile文件/
7.5.1IndexFile概览/
7.5.2IndexFile文件结构/
7.5.3IndexFile文件组成/
7.6本章小结/
7.7思考题/
第8章 RocketMQ消息高可靠的设计/
8.
|
內容試閱:
|
随着移动互联网的充分发展,各种新技术层出不穷,只有优秀的技术才能经得起行业的考验。而消息中间件是后台技术栈中绕不开的一个技术组件,其是应对海量用户、高并发、高可靠的架构挑战的超级利器。Apache RocketMQ正是这样一款足够优秀的消息中间件产品。Apache RocketMQ 脱胎于阿里巴巴的“双十一”,经过多年“双十一”洪峰流量的考验,其性能、稳定性已经得到证明,而后广泛应用于多个大型的互联网公司,如滴滴、微众银行等,已经成为国内最优秀、最受欢迎的消息中间件之一。
经过多年的发展,介绍RocketMQ的书籍、文章已不少。读者可以借助这些优秀的书籍、文章去学习RocketMQ的使用,去了解源码的实现。然而一些书籍或者博客文章大多基于源码解读的方式展开,这种方式对于深入学习确实很有益处,但是学习难度较大且较为枯燥,使初学者产生畏难情绪。
笔者于 2016年因公司项目需要,开始学习并使用Apache RocketMQ,之后有幸认识了社区中多位优秀的贡献者,从而也成为Apache RocketMQ的贡献者之一。之后在知乎、博客等平台撰写了多篇介绍RocketMQ原理的文章,因文章的风格深入浅出、图文并茂,得到Apache RocketMQ作者的赞赏。本着希望优秀的Apache RocketMQ的原理能被更多人认识与学习,遂产生了系统地撰写一本介绍Apache RocketMQ原理的书籍的想法。之后有幸结识到机械工业出版社的编辑,在他们的帮助和鼓励下,历时两年完成了本书的撰写。
本书的宗旨是让读者能轻松掌握Apache RocketMQ的原理、最佳实践,所以放弃了贴源码、贴示意代码的传统方式。而是大量采取图表说明的方式进行展开。希望通过这种方式能帮助读者利用地铁上、睡觉前等碎片时间轻松理解Apache RocketMQ的原理并掌握其优秀的实践。
同时,本书的结构采取由浅入深的方式。全书分基础篇、原理篇、进阶篇。基础篇讲解Apache RocketMQ 的基础使用及一些最佳实践的总结。原理篇按模块点深入讲解Apache RocketMQ的核心设计,是Apache RocketMQ 设计中最精华的部分,通过此部分的学习,读者将深入掌握别人需要阅读源码才能掌握的优秀设计。进阶篇则是笔者在多年大型互联网项目的实践中遇到的一些高级话题、难题,能帮助不少开发人员成为优秀架构师。
Apache RocketMQ进阶之路在内容上,本书采取类比讲解的方式去展开一些知识点。例如讲解顺序消息的章节同时也会介绍Kafka 的实现、在讲解事务消息的章节也会介绍分布式事务的通用解决方案,通过这种方式很容易引导读者思考和联想,使得知识的掌握更为轻松。
类似课堂的学习一样,每一章的结束都会留一道或数道思考题,以便进一步加深对知识的掌握与理解。
希望学习Apache RocketMQ的人员。
已经有Apache RocketMQ的使用经验,希望能进一步了解其原理、掌握最佳实践的人员。
从事消息中间件或者分布式系统研发的开发人员。
企业消息中间件的维护、运维人员。
Apache RocketMQ 社区贡献者。
本书内容虽然已深入到Apache RocketMQ的核心原理部分,但是内容的展开会采取循序渐进的方式进行。本书分三大部分。
第1部分是基础篇,包含第 1~4 章,主要讲解Apache RocketMQ入门及其基础使用。
第2部分是原理篇,包含第 5 ~12 章,主要讲解如消费原理、负载均衡原理、顺序消息原理等核心的RocketMQ部分。
第3部分是进阶篇,包含第 13~16 章,主要讲解如消息幂等、双活设计等进阶为架构师必须掌握的内容。
对于大部分读者,均可以按顺序阅读本书。而对于对RocketMQ已经有一定了解的研发人员,可以跳过基础篇的部分从原理篇开始阅读。同时,读者也可以对感兴趣的话题在进阶篇及原理篇中寻找对应的章节进行阅读。
由于笔者水平有限,编撰仓促,书中难免会出现错误,恳请读者的批评、指正。若您有更多宝贵的建议或者意见,也欢迎发送邮件到linjunjie@apache.org。笔者期待和您交流更多关于Apache RocketMQ、消息中间件、系统设计的话题。
首先感谢这些年来笔者公司的同事及领导。通过和他们的交流以及给予的指导,笔者才能有幸深入地了解Apache RocketMQ中优秀的设计原理,同时有机会参与到高并发、高可用的项目设计中。
其次感谢Apache RocketMQ社区的维护者,正因为他们的努力,一款如此优秀的开源软件才能让更多的人了解、使用。
最后,笔者要诚挚感谢机械工业出版社的编辑及其他工作人员,有了大家的幕后努力及默默贡献,本书才得以顺利出版。
|
|