[ 收藏 ] [ 简体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  • 新类目

     管理
     投资理财
     经济
     社会科学
  • Elasticsearch源碼解析與優化實戰(博文視點出品)
    該商品所屬分類:圖書 -> 電子工業出版社
    【市場價】
    430-624
    【優惠價】
    269-390
    【作者】 張超 
    【所屬類別】 電子工業出版社 
    【出版社】電子工業出版社 
    【ISBN】9787121352164
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    出版社:電子工業出版社
    ISBN:9787121352164
    版次:1

    商品編碼:12462703
    品牌:電子工業出版社
    包裝:平裝

    開本:16開
    出版時間:2018-11-01
    用紙:膠版紙

    頁數:360
    字數:432000
    正文語種:中文

    作者:張超

        
        
    "

    產品特色

    編輯推薦

    適讀人群 :本書適合對Elasticsearch進行改進的研發人員、平臺運維人員,對分布式搜索感興趣的朋友,以及在使用Elasticsearch過程中遇到問題的人們。

    Elasticsearch 是一個開源的全文搜索引擎,很多用戶對於大規模集群應用時遇到的各種問題難以分析處理,或者知其然而不知其所以然。本書分析 Elasticsearch 中重要模塊及其實現原理和機制,讓用戶深入理解相關重要配置項意義,應對繫統故障時不再迷茫。另外,本書提供實際應用場景中一些常見問題的優化建議,這些建議都是作者經過大規模測試及應用驗證過的。

    內容簡介

    本書介紹了Elasticsearch的繫統原理,旨在幫助讀者了解其內部原理、設計思想,以及在生產環境中如何正確地部署、優化繫統。繫統原理分兩方面介紹,一方面詳細介紹主要流程,例如啟動流程、選主流程、恢復流程;另一方面介紹各重要模塊的實現,以及模塊之間的關繫,例如gateway模塊、allocation模塊等。本書的最後一部分介紹如何優化寫入速度、搜索速度等大家關心的實際問題,並提供了一些診斷問題的方法和工具供讀者參考。

    本書適合對Elasticsearch進行改進的研發人員、平臺運維人員,對分布式搜索感興趣的朋友,以及在使用Elasticsearch過程中遇到問題的人們。


    作者簡介

    長期從事服務端和基礎架構等研發工作,對搜索、分布式繫統、高性能網絡服務有濃厚的興趣,喜歡探究技術本質,喜歡分析有深度的問題。目前就職於360企業安全集團基礎大數據團隊,負責平臺內核研發工作。


    精彩書評

    非常高興看到國內能有一本研究Elasticsearch源碼的書出現,Elasticsearch現在已經變得非常流行,掌握這門技術是大勢所趨。Elasticsearch雖然上手簡單,但是想要成為Elasticsearch的專家可不容易,而閱讀本書就是一個很好的開始。

    Elastic中文社區創始人,Elastic技術布道師 曾勇(Medcl)

    Elasticsearch作為開源的分布式搜索引擎,近幾年開始在國內加速流行。由於常年混跡Elastic中文社區,從社區用戶提交的形形色色的問題中,我看到國內用戶大多對該技術還缺乏深層次的理解,遇到問題時往往舉手無措。比如如何架構集群?如何正確設置集群參數和數據模型?如何優化數據讀寫?如何應對災難並迅速恢復數據?

    《Elasticsearch源碼解析與優化實戰》讓我眼前一亮!本書內容整理自作者的ES源碼分析繫列博客,而我也曾通過閱讀該繫列博客,加深了對ES內部運作機理的認識。如果你希望從一個ES工程師轉變為ES技術專家、架構師,相信這本書會給你帶來極大的幫助。

    攜程旅行網技術保障部,繫統研發總監 吳曉剛

    ES作為一個大小公司都廣泛使用的開源搜索引擎,其中文方面的繫統的資料卻少得可憐。當初我們公司遇到ES的問題時,也找不到太好的資料解決,隻好求助朋友。

    有幸第一時間拜讀本書樣稿,書中繫統和詳細地介紹了ES的概念、各個流程、優化方案、應用實踐、各種故障診斷等。難能可貴的是,每一部分都有作者的思考與總結。發現當初在ES上踩過的各種坑,本書中都有詳細的解釋。


    阿裡巴巴前研究員,阿裡巴巴前技術負責人 吳雪軍

    目錄

    第1章走進Elasticsearch
    1.1基本概念和原理
    1.1.1索引結構
    1.1.2分片(shard)
    1.1.3動態更新索引
    1.1.4近實時搜索
    1.1.5段合並
    1.2集群內部原理
    1.2.1集群節點角色
    1.2.2集群健康狀態
    1.2.3集群狀態
    1.2.4集群擴容
    1.3 客戶端API
    1.4主要內部模塊簡介
    1.4.1 模塊結構
    1.4.2 模塊管理
    第2章準備編譯和調試環境
    2.1 編譯源碼
    2.1.1 準備JDK和Gradle
    2.1.2 下載源代碼
    2.1.3 編譯項目,打包
    2.1.4 將工程導入IntelliJ IDEA
    2.2 調試Elasticsearch
    2.2.1 本地運行、調試項目
    2.2.2 遠程調試
    2.3 代碼書簽和斷點組
    第3章集群啟動流程
    3.1 選舉主節點
    3.2選信息
    3.3allocation過程
    3.4index recovery
    3.5 集群啟動日志
    3.6 小結
    第4章節點的啟動和關閉
    4.1 啟動流程做了什麼
    4.2 啟動流程分析
    4.2.1 啟動腳本
    4.2.2 解析命令行參數和配置文件
    4.2.3 加載安全配置
    4.2.4 檢查內部環境
    4.2.5 檢測外部環境
    4.2.6 啟動內部模塊
    4.2.7 啟動keepalive線程
    4.3 節點關閉流程
    4.4 關閉流程分析
    4.5 分片讀寫過程中執行關閉
    4.6 主節點被關閉
    4.7 小結
    第5章選主流程
    5.1 設計思想
    5.2 為什麼使用主從模式
    5.3 選舉算法
    5.4 相關配置
    5.5 流程概述
    5.6 流程分析
    5.6.1 選舉臨時Master
    5.6.2 投票與得票的實現
    5.6.3 確立Master或加入集群
    5.7 節點失效檢測
    5.7.1 NodesFaultDetection事件處理
    5.7.2 MasterFaultDetection事件處理
    5.8 小結
    第6章數據模型
    6.1 PacificA算法
    6.1.1 數據副本策略
    6.1.2 配置管理
    6.1.3 錯誤檢測
    6.2 ES的數據副本模型
    6.2.1 基本寫入模型
    6.2.2 寫故障處理
    6.2.3 基本讀取模型
    6.2.4 讀故障處理
    6.2.5 引申的含義
    6.2.6 繫統異常
    6.3 Allocation IDs
    6.3.1 安全地分配主分片
    6.3.2 將分配標記為陳舊
    6.2.3 一個例子
    6.3.4 不會丟失全部
    6.4 Sequence IDs
    6.4.1 Primary Terms和Sequence Numbers
    6.4.2 本地及全局檢查點
    6.4.3 用於快速恢復(Recovery)
    6.5 _version
    第7章寫流程
    7.1 文檔操作的定義
    7.2 可選參數
    7.3 Index/Bulk基本流程
    7.4 Index/Bulk詳細流程
    7.4.1 協調節點流程
    7.4.2 主分片節點流程
    7.4.3 副分片節點流程
    7.5 I/O異常處理
    7.5.1 Engine關閉過程
    7.5.2 Master的對應處理
    7.5.3 異常流程總結
    7.6 繫統特性
    7.7 思考
    第8章GET流程
    8.1 可選參數
    8.2 GET基本流程
    8.3 GET詳細分析
    8.3.1 協調節點
    8.3.2 數據節點
    8.4 MGET流程分析
    8.5 思考
    第9章Search流程
    9.1 索引和搜索
    9.1.1 建立索引
    9.1.2 執行搜索
    9.2 search type
    9.3 分布式搜索過程
    9.3.1 協調節點流程
    9.3.2執行搜索的數據節點流程
    9.4 小結
    第10章索引恢復流程分析
    10.1 相關配置
    10.2 流程概述
    10.3 主分片恢復流程
    10.4 副分片恢復流程
    10.4.1 流程概述
    10.4.2 synced flush機制
    10.4.3 副分片節點處理過程
    10.4.4 主分片節點處理過程
    10.5 recovery速度優化
    10.6 如何保證副分片和主分片一致
    10.7 recovery相關監控命令
    10.8 小結
    第11章gateway模塊分析
    11.數據
    11.數據的持久化
    11.數據的恢復
    11.數據恢復流程分析
    11.4.1 選舉集群級和索引數據
    11.4.2 觸發allocation
    11.5 思考
    第12章allocation模塊分析
    12.1 什麼是allocation
    12.2 觸發時機
    12.3 allocation模塊結構概述
    12.4 allocators
    12.5 deciders
    12.5.1 負載均衡類
    12.5.2 並發控制類
    12.5.3 條件限制類
    12.6 核心reroute實現
    12.6.1 集群啟動時reroute的觸發時機
    12.6.2 流程分析
    12.6.3 gatewayAllocator
    12.6.4 shardsAllocator
    12.7 從gateway到allocation流程的轉換
    12.8 從allocation流程到recovery流程的轉換
    12.9 思考
    第13章Snapshot模塊分析
    13.1 倉庫
    13.2 快照
    13.2.1 創建快照
    13.2.2 獲取快照信息
    13.2.3 快照status
    13.2.4 取消、刪除快照和恢復操作
    13.3 從快照恢復
    13.3.1 部分恢復
    13.3.2 恢復過程中更改索引設置
    13.3.3 監控恢復進度
    13.4 創建快照的實現原理
    13.4.1 Lucene文件格式簡介
    13.4.2 協調節點流程
    13.4.3 主節點流程
    13.4.4 數據節點流程
    13.5 刪除快照實現原理
    13.5.1 協調節點流程
    13.5.2 主節點流程
    13.6 思考與總結
    第14章Cluster模塊分析
    14.1 集群狀態
    14.2 內部封裝和實現
    14.2.1 MasterService
    14.2.2 ClusterApplierService
    14.2.3 線程池
    14.3 提交集群任務
    14.3.1 內部模塊如何提交任務
    14.3.2 任務提交過程實現
    14.4 集群任務的執行過程
    14.5 集群狀態的發布過程
    14.5.1 增量發布的實現原理
    14.5.2 二段提交總流程
    14.5.3 發布過程
    14.5.4 提交過程
    14.5.5 異常處理
    14.6 應用集群狀態
    14.7 查看等待執行的集群任務
    14.8 任務管理API
    14.8.1 列出運行中的任務
    14.8.2 取消任務
    14.9 思考與總結
    第15章Transport模塊分析
    15.1 配置信息
    15.1.1 傳輸模塊配置
    15.1.2 通用網絡配置
    15.2 Transport總體架構
    15.2.1 網絡層
    15.2.2 服務層
    15.3 REST解析和處理
    15.4 RPC實現
    15.4.1 RPC的注冊和映射
    15.4.2 根據Action獲取處理類
    15.5 思考與總結
    第16章ThreadPool模塊分析
    16.1 線程池類型
    16.1.1 fixed
    16.1.2 scaling
    16.1.3 direct
    16.1.4 fixed_auto_queue_size
    16.2 處理器設置
    16.3 查看線程池
    16.3.1 cat thread pool
    16.3.2 nodes info
    16.3.3 nodes stats
    16.3.4 nodes hot threads
    16.3.5 Java的線程池結構
    16.4 ES的線程池實現
    16.4.1 ThreadPool類結構與初始化
    16.4.2 fixed類型線程池構建過程
    16.4.3 scaling類型線程池構建過程
    16.4.4 direct類型線程池構建過程
    16.4.5 fixed_auto_queue_size類型線程池構建過程
    16.5 其他線程池
    16.6 思考與總結
    第17章Shrink原理分析
    17.1 準備源索引
    17.2 縮小索引
    17.3 Shrink的工作原理
    17.3.1 創建新索引
    17.3.2 創建硬鏈接
    17.3.3 硬鏈接過程源碼分析
    第18章寫入速度優化
    18.1 translog flush間隔調整
    18.2 索引刷新間隔refresh_interval
    18.3 段合並優化
    18.4 indexing buffer
    18.5 使用bulk請求
    18.5.1 bulk線程池和隊列
    18.5.2 並發執行bulk請求
    18.6 磁盤間的任務均衡
    18.7 節點間的任務均衡
    18.8 索引過程調整和優化
    18.8.1 自動生成doc ID
    18.8.2 調整字段Mappings
    18.8.3 調整_source字段
    18.8.4 禁用_all字段
    18.8.5 對Analyzed的字段禁用Norms
    18.8.6 index_options 設置
    18.9 參考配置
    18.10 思考與總結
    第19章搜索速度的優化
    19.1 為文件繫統cache預留足夠的內存
    19.2 使用更快的硬件
    19.3 文檔模型
    19.4 預索引數據
    19.5 字段映射
    19.6 避免使用腳本
    19.7 優化日期搜索
    19.8 為隻讀索引執行force-merge
    19.9 預熱全局序號(global ordinals)
    19.10 execution hint
    19.11 預熱文件繫統cache
    19.12 轉換查詢表達式
    19.13 調節搜索請求中的batched_reduce_size
    19.14 使用近似聚合
    19.15 深度優先還是廣度優先
    19.16 限制搜索請求的分片數
    19.17 利用自適應副本選擇(ARS)提升ES響應速度
    第20章磁盤使用量優化
    20.1 預備知識
    20.1.數據字段
    20.1.2 索引映射參數
    20.2 優化措施
    20.2.1 禁用對你來說不需要的特性
    20.2.2 禁用doc values
    20.2.3 不要使用默認的動態字符串映射
    20.2.4 觀察分片大小
    20.2.5 禁用_source
    20.2.6 使用best_compression
    20.2.7 Fource Merge
    20.2.8 Shrink Index
    20.2.9 數值類型長度夠用就好
    20.2.10 使用索引排序來排列類似的文檔
    20.2.11 在文檔中以相同的順序放置字段
    20.3 測試數據
    第21章綜合應用實踐
    21.1 集群層
    21.1.1 規劃集群規模
    21.1.2 單節點還是多節點部署
    21.1.3 移除節點
    21.1.4 獨立部署主節點
    21.2 節點層
    21.2.1 控制線程池的隊列大小
    21.2.2 為繫統cache保留一半物理內存
    21.3 繫統層
    21.3.1 關閉swap
    21.3.2 配置Linux OOM Killer
    21.3.3 優化內核參數
    21.4 索引層
    21.4.1 使用全局模板
    21.4.2 索引輪轉
    21.4.3 避免熱索引分片不均
    21.4.4 副本數選擇
    21.4.5 Force Merge
    21.4.6 Shrink Index
    21.4.7 close索引
    21.4.8 延遲分配分片
    21.4.9 小心地使用fielddata
    21.5 客戶端
    21.5.1 使用REST API而非Java API
    21.5.2 注意429狀態碼
    21.5.3 curl的HEAD請求
    21.5.4 了解你的搜索計劃
    21.5.5 為讀寫請求設置比較長的超時時間
    21.6 讀寫
    21.6.1 避免搜索操作返回巨大的結果集
    21.6.2 避免索引巨大的文檔
    21.6.3 避免使用多個_type
    21.6.4 避免使用_all字段
    21.6.5 避免將請求發送到同一個協調節點
    21.7 控制相關度
    第22章故障診斷
    22.1 使用Profile API定位慢查詢
    22.2 使用Explain API分析未分配的分片(Unassigned Shards)
    22.2.1 診斷未分配的主分片
    22.2.2 診斷未分配的副分片
    22.2.3 診斷已分配的分片
    22.3 節點CPU使用率高
    22.4 節點內存使用率高
    22.5 Slow Logs
    22.6 分析工具
    22.6.1 I/O信息
    22.6.2 內存
    22.6.3 CPU信息
    22.6.4 網絡連接和流量
    22.7 小結
    附錄A重大版本變化

    查看全部↓

    前言/序言

    前言

    我們可以在不關心原理的情況下使用Elasticsearch(以下簡稱ES),但要想用好ES,就必須熟知其內部原理。

    為什麼要閱讀代碼?在傳統軟件行業,技術文檔非常豐富。當開展一個項目時,從需求分析,到概要設計、詳細設計,每個步驟都有相應的文檔,從項目的整體架構、技術方案選型,到流程圖、類圖,細化到每個接口及參數。在這種情況下,想要搞清楚繫統原理,並不需要閱讀代碼,文檔上什麼都有。但是互聯網產品迭代快,技術文檔不全,想要搞清楚原理,隻能閱讀代碼,相當於從代碼中逆向理解設計思想。

    通過分析源碼,我們可以有以下收獲:

    理解設計思想當我們面臨要解決的問題或實現的目標時,往往有多種方案可以選擇。無論表面上看起來多麼簡單的架構,其背後都經過了深思熟慮。思考一下為什麼使用現在的方案?有沒有更好的解決方案?

    探究內部機制的原理某個技術點是怎麼實現的?

    搞明白執行流程某個過程是什麼樣的,都做了什麼?有幾步?先做什麼,後做什麼?

    熟悉代碼結構如果需要進行二次開發,則給出代碼入口和調用關繫,有時候找到某個邏輯的代碼實現要花很多時間。

    學以致用借鋻其設計理念,掌握其解決問題的方式和方法,將來面對類似的問題時可以參考。

    本書結構

    本書由四部分組成,第一部分為基礎知識和環境準備(第1~2章);第二部分介紹ES的主要流程(第3~10章),包括集群啟動流程、節點啟動/關閉流程、選主流程、讀寫流程、搜索流程和索引恢復流程;第三部分主要介紹重要內部模塊(第11~17章),包括gateway模塊、allocation模塊、Snapshot模塊、Cluster模塊、Transport模塊和ThreadPool模塊等;第四部分介紹優化和診斷方法(第18~22章),包括寫入速度優化、搜索速度優化、磁盤使用量優化,以及在生產環境中的實際應用建議,第22章介紹常用的問題診斷方法,排查集群遇到的問題。

    術語約定

    ES中有一些特有的概念,這些概念對應的中文翻譯約定如下:

    \u009f 分片(shard);

    \u009f 主分片(primary shard),簡稱P;

    \u009f 分片副本(特指數據的一個分片,無論主分片,還是副分片);

    \u009f 副分片(replica shard),簡稱R;

    \u009f 分片分配(shard allocation);

    \u009f 集群狀態(cluster state);

    \u009f 分配決策(allocation decision);

    \u009f 分配感知(allocation awareness);

    \u009f 分配標識(allocation IDs);

    \u009f 追蹤(tracking);

    \u009f 事務日志(translog);

    \u009f 同步集合(in-sync set)。

    行文約定

    雖然本書是一本源碼分析類圖書,但原則上盡量少貼代碼,引用的代碼隻是為了說明原理,因此所引用的代碼並不保證和源碼完全一致,對非核心邏輯有所刪減,同時在代碼塊中,函數參數可能被省略,省略的函數參數用“…”表示,如:

    executeBulk(...);

    在引用代碼中的某個方法時,使用#號分隔類名與方法名:

    類名#方法名

    一個索引由許多分片組成。我們用如下方式表示索引website的第0個分片:

    website[0]

    聯繫

    讀者有任何意見和建議都可以聯繫作者,郵箱:elasticsearchbook@163.com。

    本書配套網站:www.elasticsearchbook.cn。

    致謝

    感謝李欣傑和郭東東,他們帶我走進搜索領域;感謝韓洪偉,他讓我學到了很多搜索繫統的知識。欣傑和老韓都是資深的搜索架構師,能夠和優秀的團隊共事是我的榮幸。感謝ES團隊的同事段軍義,我們互相學習,一起解決了很多麻煩的問題。感謝出版社的策劃編輯陳曉猛先生,他為本書的寫作提供了很多建設性意見,並且耐心地編校了本書,讓本書得以順利出版。

    感謝我的妻子和三歲的女兒,我愛你們!

    張超

    查看全部↓



    "
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部