| 作者 |
| (印度)波哈维·荻西特(Bharvi Dixit)刘俊海 |
| 丛书名 |
| 云计算与虚拟化技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782001101531 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------深入理解Elasticsearch(原书第3版)--------------------------- 本书在回顾Elasticsearch基础知识的同时,介绍了最新版本Elasticsearch 5的新功能,并对其中级和高级的功能(如查询、索引、搜索和修改数据)进行了详细说明。本书还将探索聚集、指标控制、分片、复制和聚类等概念,并通过实例展示监控管理模块、创建分析插件等。通过本书,读者可以对Elasticsearch 5有一个全面的认识并掌握其性能。 ---------------------------Service Mesh微服务架构设计--------------------------- 全书分为3部分:第一部分是基础篇,首先从微服务架构的挑战讲起,接下来剖析service mesh产生的背景,service mesh当前的现状以及主流的一些开源项目。第二部分是实战篇,深入讲解如何从零开始构建一个生产环境可用的service mesh系统,包含技术选型、架构设计和技术难度深入分析等。其中高性能、高可用、高扩展性方面的一些设计和考量都会深入阐述。第三部分是应用篇,实例分析service mesh对服务治理带来的便利和影响。 通过阅读本书,读者不仅能深入了解service mesh对微服务领域的影响,而且还可以了解service mesh架构和设计的全过程,全书也包含高性能、高可用、高扩展性、服务治理等多个重要主题。 |
| 目录 |
---------------------------深入理解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 ---------------------------Service Mesh微服务架构设计--------------------------- 前言 第一篇 基 础 篇 第1章 微服务架构 …… 2 1.1 为什么需要微服务 …… 2 1.1.1 传统单体服务的问题 …… 2 1.1.2 微服务的定义 …… 3 1.1.3 微服务与康威定律 …… 3 1.1.4 微服务的收益 …… 4 1.2 微服务架构的挑战 …… 4 1.2.1 服务拆分 …… 4 1.2.2 开发挑战 …… 5 1.2.3 测试挑战 …… 5 1.2.4 运维挑战 …… 6 1.3 微服务化的具体时机 …… 6 1.4 微服务化开展前的准备工作 …… 8 1.4.1 微服务开发框架 …… 8 1.4.2 微服务标准化 …… 15 1.4.3 持续集成与发布 …… 17 1.5 微服务实施 …… 17 1.5.1 微服务拆分 …… 17 1.5.2 微服务通信 …… 19 1.5.3 微服务稳定性保障 …… 20 1.6 本章小结 …… 25 第2章 微服务治理 …… 26 2.1 微服务治理基础 …… 26 2.1.1 服务治理由来 …… 26 2.1.2 服务治理的目标与愿景 …… 27 2.1.3 服务治理的工作范畴 …… 28 2.1.4 服务治理闭环体系 …… 29 2.2 正向服务治理 …… 29 2.2.1 效率治理 …… 30 2.2.2 稳定性治理 …… 31 2.3 效果治理 …… 34 2.4 可见可观测 …… 35 2.4.1 服务可见性 …… 35 2.4.2 变更可见性 …… 36 2.4.3 可观测性 …… 36 2.5 量化分析体系 …… 41 2.5.1 稳定性风险度量 …… 41 2.5.2 基于多维度监控的故障定位 …… 42 2.5.3 风险分析 …… 43 2.6 线上治理 …… 43 2.6.1 线上预案体系 …… 43 2.6.2 基于Metric的预案自动触发 …… 44 2.6.3 治理参数动态调整 …… 44 2.7 线下治理 …… 47 2.7.1 链路稳定性治理 …… 47 2.7.2 架构与资源治理 …… 50 2.8 服务治理演进 …… 50 2.8.1 远程Proxy方式 …… 51 2.8.2 基于智能客户端的服务框架 …… 52 2.8.3 本地Proxy …… 52 2.9 理想的服务治理架构 …… 53 2.10 本章小结 …… 54 第3章 下一代微服务框架Service Mesh概要 …… 55 3.1 Service Mesh基础 …… 55 3.1.1 什么是Service Mesh …… 55 3.1.2 Service Mesh的基本模式 …… 56 3.2 Service Mesh的发展历程 …… 58 3.3 Service Mesh项目Linkerd …… 60 3.3.1 Linkerd演进 …… 60 3.3.2 Linkerd路由机制 …… 62 3.3.3 Linkerd 2.0核心架构 …… 63 3.4 Service Mesh项目Istio …… 64 3.4.1 Envoy …… 64 3.4.2 Istio …… 66 3.5 Service Mesh其他解决方案 …… 67 3.5.1 国外其他Service Mesh项目 …… 67 3.5.2 Service Mesh在中国的发展 …… 68 3.6 Service Mesh云上产品 …… 69 3.6.1 AWS App Mesh …… 69 3.6.2 Azure Service Fabric Mesh …… 69 3.6.3 Google Cloud Service Mesh …… 70 3.6.4 SuperGloo …… 70 3.7 Service Mesh标准化 …… 71 3.8 本章小结 …… 71 第二篇 架 构 篇 第4章 Envoy架构剖析 …… 74 4.1 Envoy整体架构 …… 74 4.1.1 关键设计约束 …… 74 4.1.2 设计原则 …… 75 4.1.3 整体架构 …… 76 4.2 Envoy网络模型 …… 78 4.2.1 Envoy事件调度模型 …… 78 4.2.2 Envoy线程模型 …… 81 4.2.3 线程本地存储机制 …… 81 4.3 Envoy扩展模型 …… 84 4.3.1 插件扩展机制 …… 84 4.3.2 网络相关插件 …… 86 4.3.3 其他扩展插件 …… 88 4.4 Envoy数据平面API …… 88 4.4.1 XDS协议语义 …… 88 4.4.2 XDS协议通信 …… 90 4.5 Envoy启动管理 …… 91 4.5.1 正常启动 …… 92 4.5.2 热重启 …… 94 4.6 Envoy与Nginx架构层面的对比 …… 95 4.6.1 功能与定位 …… 96 4.6.2 网络模型 …… 96 4.6.3 连接处理 …… 97 4.6.4 插件机制 …… 98 4.6.5 配置管理 …… 99 4.6.6 内存管理 …… 99 4.6.7 部署与运维 …… 100 4.6.8 观测与诊断 …… 100 4.7 本章小结 …… 100 第5章 Istio架构剖析 …… 101 5.1 Istio整体架构 …… 101 5.1.1 数据平面组件 …… 102 5.1.2 控制平面组件 …… 103 5.2 Istio的Kubernetes基础 …… 104 5.2.1 Kubernetes综述 …… 104 5.2.2 Kubernetes网络访问模型 …… 107 5.2.3 Kubernetes API管理 …… 110 5.2.4 Istio与Kubernetes的相互关系 …… 111 5.3 Istio流量控制模型 …… 112 5.3.1 流量管理API …… 112 5.3.2 Istio Mesh模型 …… 116 5.4 Mixer模型 …… 118 5.4.1 Mixer基本概念 …… 119 5.4.2 Mixer通用配置模型 …… 119 5.4.3 Mixer架构演进以及对性能的影响 …… 121 5.5 Istio安全 …… 122 5.5.1 Istio安全基础 …… 122 5.5.2 Istio认证架构 …… 123 5.6 Istio配置处理框架 …… 124 5.6.1 配置验证 …… 125 5.6.2 配置变更处理和分发 …… 125 5.7 本章小结 …… 125 第6章 Istio控制流设计 …… 126 6.1 Envoy生命周期管理 …… 126 6.1.1 Envoy注入 …… 126 6.1.2 Envoy启动管理 …… 128 6.1.3 Envoy配置和运行状态监控 …… 131 6.2 Istio配置变更管理 …… 133 6.2.1 通用模型和机制 …… 133 6.2.2 Kubernetes具体实现 …… 137 6.3 控制平面和数据平面的XDS交互 …… 138 6.3.1 控制平面的gRPC Server启动 …… 139 6.3.2 Envoy的XDS请求 …… 140 6.3.3 Istio XDS配置下发 …… 140 6.3.4 Envoy的XDS消息接收 …… 143 6.4 XDS配置生成 …… 143 6.4.1 可见性 …… 143 6.4.2 配置生成机制 …… 145 6.4.3 XDS配置生成实现 …… 147 6.5 XDS配置的Envoy处理 …… 149 6.5.1 XDS配置变更的判断 …… 149 6.5.2 CDS配置的延迟处理 …… 150 6.5.3 集群和节点配置处理 …… 152 6.5.4 路由配置处理 …… 153 6.5.5 监听器配置处理 …… 153 6.6 本章小结 …… 155 第7章 Istio数据流设计 …… 156 7.1 Iptables …… 156 7.1.1 Iptables的基本原理 …… 156 7.1.2 Iptables在Istio中的使用 …… 158 7.2 监听管理 …… 158 7.2.1 监听器建立 …… 158 7.2.2 监听器和工作线程绑定 …… 159 7.3 连接管理 …… 160 7.3.1 监听器匹配 …… 160 7.3.2 协议过滤器匹配 …… 161 7.3.3 创建新连接 …… 161 7.4 网络I/O和缓冲区管理 …… 162 7.4.1 传输层数据读取 …… 162 7.4.2 插件处理 …… 163 7.5 Thrift协议处理 …… 164 7.5.1 Thrift插件的整体架构 …… 164 7.5.2 协议解析 …… 165 7.5.3 协议相关的插件机制 …… 166 7.6 HTTP请求处理 …… 168 7.6.1 HTTP请求处理流程 …… 168 7.6.2 协议解析 …… 169 7.6.3 路由管理 …… 171 7.6.4 HTTP过滤链处理 …… 174 7.6.5 负载均衡 …… 176 7.6.6 连接池实现 …… 179 7.7 本章小结 …… 182 第8章 Istio微服务治理 …… 183 8.1 链路稳定性治理 …… 183 8.1.1 超时机制 …… 183 8.1.2 重试机制和重试策略 …… 185 8.1.3 节点熔断和健康检查机制 …… 188 8.1.4 资源限制机制 …… 189 8.1.5 全局限流机制 …… 190 8.2 链路可观测性 …… 190 8.2.1 Envoy分布式跟踪支持 …… 190 8.2.2 Envoy Metric支持 …… 194 8.2.3 Envoy Log支持 …… 198 8.3 本章小结 …… 200 第9章 Service Mesh架构的工程化设计 …… 201 9.1 复用和解耦 …… 201 9.2 架构扩展机制 …… 203 9.2.1 服务注册中心插件机制 …… 203 9.2.2 Envoy Filter插件机制 …… 203 9.3 性能设计 …… 204 9.3.1 基于TLS的无锁设计 …… 204 9.3.2 多级缓存机制 …… 205 9.3.3 批量更新机制 …… 205 9.4 架构设计的权衡 …… 206 9.5 API和SDK设计 …… 207 9.5.1 声明式API设计 …… 207 9.5.2 代码自动生成机制 …… 207 9.6 配置管理 …… 208 9.6.1 基于Protobuf 3的配置Scheme描述 …… 208 9.6.2 配置动态加载机制 …… 210 9.7 本章小结 …… 210 第10章 Service Mesh与云原生架构 …… 211 10.1 Service Mesh和Serverless …… 211 10.1.1 Serverless基础 …… 211 10.1.2 Knative …… 213 10.2 东西向和南北向通信的统一 …… 215 10.3 云原生时代的Service Mesh …… 216 10.4 Service Mesh现状和展望 …… 217 10.5 本章小结 …… 218 附录 Service Mesh迁移的要点与原则 …… 219 |