| 作者 |
| (印度)波哈维·荻西特(Bharvi Dixit)丁威 周继锋 |
| 丛书名 |
| 云计算与虚拟化技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782001101553 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------深入理解Elasticsearch(原书第3版)--------------------------- 本书在回顾Elasticsearch基础知识的同时,介绍了最新版本Elasticsearch 5的新功能,并对其中级和高级的功能(如查询、索引、搜索和修改数据)进行了详细说明。本书还将探索聚集、指标控制、分片、复制和聚类等概念,并通过实例展示监控管理模块、创建分析插件等。通过本书,读者可以对Elasticsearch 5有一个全面的认识并掌握其性能。 ---------------------------RocketMQ技术内幕:RocketMQ架构设计与实现原理--------------------------- 内容简介 本书由RocketMQ社区早期的布道者和技术专家撰写,Apache RocketMQ创始人/Linux OpenMessaging创始人兼主席/Alibaba Messaging开源技术负责人冯嘉的高度评价并作序推荐。 源码角度,本书对RocketMQ的核心技术架构,以及消息发送、消息存储、消息消费、消息过滤、顺序消息、主从同步(HA)、事务消息等主要功能模块的实现原理进行了深入分析,同时展示了源码阅读的相关技巧;应用层面,本书总结了大量RocketMQ的使用技巧。通过本书,读者将深入理解消息中间件和底层网络通讯机制的核心知识点。 全书共10章,分三个部分: 第一部分 准备篇(第1章) 首先介绍了RocketMQ源代码的获取、结构和调试,然后介绍了RocketMQ的设计理念和目标。 第二部分 实现篇(第2~8章) 这是本书的核心部分,从源代码的角度详细分析了消息发送、消息存储、消息消费、消息过滤、顺序消息、主从同步(HA)、事务消息等主要功能模块的架构设计和实现原理。 . 第三部分 实例篇(第9-10章) 通过示例展示RocketMQ的使用技巧,并着重讲解了RocketMQ的监控命令与监控管理界面。 |
| 目录 |
---------------------------深入理解Elasticsearch(原书第3版)--------------------------- 译者序 前言 致谢 作者简介 审阅者简介 第1章 回顾Elasticsearch与演进历史 1 1.1 Apache Lucene简介 1 1.1.1 更深入地了解Lucene索引 2 1.1.2 Elasticsearch概览 7 1.2 Elasticsearch 5.x介绍 8 1.2.1 Elasticsearch新特性简介 9 1.2.2 Elasticsearch的演进 10 1.2.3 2.x到5.x的变化 14 1.3 小结 16 第2章 查询DSL进阶 17 2.1 Lucene的新默认文本评分机制——BM25 17 2.1.1 理解精确率与召回率 18 2.1.2 回顾TF-IDF 18 2.1.3 BM25与TF-IDF有什么不同 21 2.2 查询DSL重构 22 2.3 为任务选择合适的查询 22 2.3.1 查询方式分类 22 2.3.2 使用示例 27 2.3.3 查询DSL的其他重要变化 36 2.4 查询改写 37 2.4.1 前缀查询示例 37 2.4.2 回到Apache Lucene 39 2.4.3 查询改写的属性 40 2.5 查询模板 43 2.5.1 引入查询模板 43 2.5.2 Mustache模板引擎 45 2.6 小结 49 第3章 不只是文本搜索 50 3.1 多匹配控制 50 3.2 多匹配类型 51 3.2.1 最佳字段匹配 51 3.2.2 跨字段匹配 54 3.2.3 最多字段匹配 55 3.2.4 短语匹配 56 3.2.5 带前缀的短语匹配 56 3.3 用函数得分查询控制分数 57 3.4 函数得分查询下的内嵌函数 58 3.4.1 weight函数 58 3.4.2 字段值因子函数 59 3.4.3 脚本评分函数 60 3.4.4 衰变函数——linear、exp和gauss 60 3.5 查询二次评分 61 3.6 二次评分查询的结构 62 3.7 Elasticsearch脚本 66 3.7.1 语法 66 3.7.2 Elasticsearch各版本中脚本的变化 66 3.8 新的默认脚本语言Painless 67 3.8.1 用Painless写脚本 67 3.8.2 示例 69 3.8.3 用脚本为结果排序 71 3.8.4 按多个字段排序 72 3.9 Lucene表达式 73 3.9.1 基础知识 73 3.9.2 一个例子 73 3.10 小结 75 第4章 数据建模与分析 76 4.1 Elasticsearch中的数据建模方法 76 4.2 管理Elasticsearch中的关系型数据 77 4.2.1 对象类型 77 4.2.2 嵌套文档 80 4.2.3 父子关系 82 4.2.4 其他可选方案 84 4.2.5 数据反范式的例子 84 4.3 用聚合做数据分析 85 4.3.1 Elasticsearch 5.0的快速聚合 85 4.3.2 重温聚合 86 4.3.3 一类新的聚合:矩阵聚合 93 4.4 小结 96 第5章 改善用户搜索体验 97 5.1 改正用户拼写错误 97 5.1.1 测试数据 98 5.1.2 深入技术细节 99 5.2 suggester 99 5.2.1 在_search端点下使用suggester 99 5.2.2 term suggester 103 5.2.3 phrase suggester 105 5.2.4 completion suggester 113 5.3 实现自己的自动完成功能 117 5.4 处理同义词 120 5.4.1 为同义词搜索准备settings 120 5.4.2 格式化同义词 121 5.4.3 同义词扩展与收缩 122 5.5 小结 123 第6章 分布式索引架构 125 6.1 配置示例的多节点集群 125 6.2 选择合适数量的分片和副本 127 6.2.1 分片和预分配 127 6.2.2 预分配的正面例子 128 6.2.3 多分片与多索引 128 6.3 路由 129 6.3.1 分片和数据 129 6.3.2 测试路由功能 130 6.3.3 在索引过程中使用路由 132 6.3.4 路由实战 132 6.3.5 查询 134 6.3.6 别名 136 6.3.7 多值路由 137 6.4 分片分配控制 137 6.4.1 部署意识 138 6.4.2 确定每个节点允许的总分片数 142 6.4.3 确定每台物理服务器允许的总分片数 143 6.5 查询执行偏好 146 6.5.1 preference参数 146 6.5.2 使用查询执行偏好的例子 148 6.6 将数据切分到多个路径中 148 6.7 索引与类型——创建索引的改进方法 148 6.8 小结 149 第7章 底层索引控制 150 7.1 改变Apache Lucene的评分方式 150 7.2 可用的相似度模型 151 7.3 为每个字段配置相似度模型 151 7.4 相似度模型配置 152 7.5 选择默认的相似度模型 153 7.6 选择合适的实现——store模块 156 7.7 存储类型 156 7.8 准实时、提交、更新及事务日志 158 7.8.1 索引更新及更新提交 159 7.8.2 更改默认的刷新时间 159 7.8.3 事务日志 160 7.8.4 实时读取 161 7.9 控制段合并 162 7.9.1 Elasticsearch合并策略的变化 163 7.9.2 配置tiered合并策略 163 7.9.3 合并调度 164 7.9.4 强制合并 165 7.10 理解Elasticsearch缓存 166 7.10.1 节点查询缓存 166 7.10.2 分片查询缓存 166 7.10.3 字段数据缓存 168 7.10.4 使用circuit breaker 168 7.11 小结 169 第8章 管理Elasticsearch 170 8.1 Elasticsearch的节点类型 170 8.1.1 数据节点 171 8.1.2 主节点 171 8.1.3 Ingest节点 171 8.1.4 部落节点 172 8.1.5 协调节点/客户端节点 172 8.2 发现和恢复模块 172 8.2.1 发现模块的配置 173 8.2.2 网关和恢复模块的配置 177 8.2.3 索引恢复API 179 8.3 使用对人类友好的Cat API 182 8.3.1 Cap API的基础知识 183 8.3.2 使用Cat API 184 8.4 备份 186 8.4.1 快照API 187 8.4.2 在文件系统中保存备份 187 8.4.3 在云中保存备份 189 8.5 快照恢复 193 8.6 小结 196 第9章 数据转换与联盟搜索 197 9.1 用ingest节点在Elasticsearch里对数据进行预处理 197 9.1.1 使用ingest管道 198 9.1.2 处理管道中的错误 202 9.1.3 使用ingest处理器 204 9.2 联盟搜索 208 9.2.1 测试集群 208 9.2.2 建立部落节点 209 9.2.3 通过部落节点读取数据 211 9.2.4 主节点级别的读操作 212 9.2.5 通过部落节点写入数据 213 9.2.6 主节点级别的写操作 213 9.2.7 处理索引冲突 213 9.2.8 屏蔽写操作 215 9.3 小结 215 第10章 提升性能 216 10.1 查询验证与分析器 216 10.1.1 在执行前就验证代价大的查询 217 10.1.2 获得详细查询执行报告的查询分析器 219 10.1.3 关于查询分析用途的思考 221 10.2 热点线程 222 10.2.1 热点线程的使用说明 222 10.2.2 热点线程API的响应 223 10.3 扩展Elasticsearch集群 224 10.3.1 垂直扩展 224 10.3.2 水平扩展 225 10.3.3 在高负载的场景下使用Elasticsearch 231 10.4 用shrink和rollover API高效管理基于时间的索引 242 10.4.1 shrink API 243 10.4.2 rollover API 244 10.5 小结 246 第11章 开发Elastisearch插件 247 11.1 创建Apache Maven的项目架构 247 11.1.1 了解基础知识 248 11.1.2 Maven Java项目的结构 248 11.2 创建自定义REST行为插件 252 11.2.1 设定 252 11.2.2 实现细节 252 11.2.3 测试阶段 256 11.2.4 检验REST行为插件是否工作正常 257 11.3 创建自定义分析插件 258 11.3.1 实现细节 258 11.3.2 测试自定义分析插件 262 11.4 小结 264 第12章 介绍Elastic Stack 5.0 265 12.1 Elastic Stack 5.0简介 265 12.2 介绍Logstash、Beats和Kibana 266 12.2.1 使用Logstash 266 12.2.2 引入Beats作为数据传输器 271 12.2.3 使用Kibana 273 12.3 小结 282 ---------------------------RocketMQ技术内幕:RocketMQ架构设计与实现原理--------------------------- 推荐序 前言 第1章 阅读源代码前的准备 1 1.1 获取和调试RocketMQ的源代码 1 1.1.1 Eclipse获取RocketMQ源码 2 1.1.2 Eclipse调试RocketMQ源码 9 1.1.3 IntelliJ IDEA获取RocketMQ源码 15 1.1.4 IntelliJ IDEA调试RocketMQ源码 20 1.2 RocketMQ源代码的结构 27 1.3 RocketMQ的设计理念和目标 28 1.3.1 设计理念 28 1.3.2 设计目标 28 第2章 RocketMQ路由中心NameServer 31 2.1 NameServer架构设计 31 2.2 NameServer启动流程 32 2.3 NameServer路由注册、故障剔除 36 2.3.1 路由元信息 36 2.3.2 路由注册 38 2.3.3 路由删除 43 2.3.4 路由发现 46 2.4 本章小结 47 第3章 RocketMQ消息发送 49 3.1 漫谈RocketMQ消息发送 49 3.2 认识RocketMQ消息 50 3.3 生产者启动流程 51 3.3.1 初识DefaultMQProducer消息发送者 51 3.3.2 消息生产者启动流程 54 3.4 消息发送基本流程 56 3.4.1 消息长度验证 56 3.4.2 查找主题路由信息 56 3.4.3 选择消息队列 60 3.4.4 消息发送 65 3.5 批量消息发送 71 3.6 本章小结 74 第4章 RocketMQ消息存储 75 4.1 存储概要设计 75 4.2 初识消息存储 76 4.3 消息发送存储流程 78 4.4 存储文件组织与内存映射 83 4.4.1 MappedFileQueue映射文件队列 84 4.4.2 MappedFile内存映射文件 87 4.4.3 TransientStorePool 93 4.5 RocketMQ存储文件 94 4.5.1 Commitlog文件 95 4.5.2 ConsumeQueue文件 97 4.5.3 Index索引文件 100 4.5.4 checkpoint文件 104 4.6 实时更新消息消费队列与索引文件 105 4.6.1 根据消息更新ConumeQueue 107 4.6.2 根据消息更新Index索引文件 108 4.7 消息队列与索引文件恢复 109 4.7.1 Broker正常停止文件恢复 112 4.7.2 Broker异常停止文件恢复 114 4.8 文件刷盘机制 115 4.8.1 Broker同步刷盘 116 4.8.2 Broker异步刷盘 119 4.9 过期文件删除机制 122 4.10 本章小结 126 第5章 RocketMQ消息消费 127 5.1 RocketMQ消息消费概述 127 5.2 消息消费者初探 128 5.3 消费者启动流程 130 5.4 消息拉取 133 5.4.1 PullMessageService实现机制 133 5.4.2 ProcessQueue实现机制 136 5.4.3 消息拉取基本流程 138 5.5 消息队列负载与重新分布机制 154 5.6 消息消费过程 162 5.6.1 消息消费 163 5.6.2 消息确认(ACK) 167 5.6.3 消费进度管理 171 5.7 定时消息机制 176 5.7.1 load方法 177 5.7.2 start方法 178 5.7.3 定时调度逻辑 179 5.8 消息过滤机制 181 5.9 顺序消息 186 5.9.1 消息队列负载 187 5.9.2 消息拉取 187 5.9.3 消息消费 188 5.9.4 消息队列锁实现 195 5.10 本章小结 196 第6章 消息过滤FilterServer 198 6.1 ClassFilter运行机制 198 6.2 FilterServer注册剖析 199 6.3 类过滤模式订阅机制 202 6.4 消息拉取 205 6.5 本章小结 206 第7章 RocketMQ主从同步(HA)机制 207 7.1 RocketMQ主从复制原理 207 7.1.1 HAService整体工作机制 208 7.1.2 AcceptSocketService实现原理 208 7.1.3 GroupTransferService实现原理 210 7.1.4 HAClient实现原理 211 7.1.5 HAConnection实现原理 214 7.2 RocketMQ读写分离机制 220 7.3 本章小结 223 第8章 RocketMQ事务消息 225 8.1 事务消息实现思想 225 8.2 事务消息发送流程 226 8.3 提交或回滚事务 232 8.4 事务消息回查事务状态 233 8.5 本章小结 240 第9章 RocketMQ实战 242 9.1 消息批量发送 242 9.2 消息发送队列自选择 243 9.3 消息过滤 243 9.3.1 TAG模式过滤 244 9.3.2 SQL表达模式过滤 244 9.3.3 类过滤模式 245 9.4 事务消息 247 9.5 Spring整合RocketMQ 250 9.6 Spring Cloud整合RocketMQ 251 9.7 RocketMQ监控与运维命令 258 9.7.1 RocktetMQ监控平台搭建 258 9.7.2 RocketMQ管理命令 261 9.8 应用场景分析 280 9.9 本章小结 281 附录A 参数说明 282 |