原创 Elasticsearch系列---併發控制及樂觀鎖實現原理

概要 本篇主要介紹一下Elasticsearch的併發控制和樂觀鎖的實現原理,列舉常見的電商場景,關係型數據庫的併發控制、ES的併發控制實踐。 併發場景 不論是關係型數據庫的應用,還是使用Elasticsearch做搜索加速的場景,只要有數

原创 Elasticsearch系列---增量更新原理及優勢

概要 本篇主要介紹增量更新(partial update,也叫局部更新)的核心原理,介紹6.3.1版本的Elasticsearch腳本使用實例和增量更新的優勢。 增量更新過程與原理 簡單回顧 前文我們有簡單介紹過增量的語法,簡單回顧一下請求

原创 Elasticsearch系列---全面瞭解Document

概要 本篇主要介紹一下document的知識,對document的元數據和基本的語法進行講解。 document核心元數據 前面入門實戰一節有簡單介紹過document數據示例,這次我們來詳細瞭解一下它的核心元數據,查詢響應報文如下: {

原创 Elasticsearch系列---簡單入門實戰

概要 本篇主要介紹一下Elasticsearch Document的數據格式,在Java應用程序、關係型數據庫建模的對比,介紹在Kibana平臺編寫Restful API完成基本的集羣狀態查詢,Document最基本CRUD操作示例以及bu

原创 Elasticsearch系列---分佈式架構機制講解

概要 本篇主要介紹Elasticsearch的數據索引時的分片機制,集羣發現機制,primary shard與replica shard是如何分工合作的,如何對集羣擴容,以及集羣的容錯機制。 分片機制 前面基本概念一節中,我們有提到建立索引

原创 Elasticsearch系列---常見搜索方式與聚合分析

概要 本篇主要介紹常見的6種搜索方式、聚合分析語法,基本是上機實戰,可以和關係型數據庫作對比,如果之前瞭解關係型數據庫,那本篇只需要瞭解搜索和聚合的語法規則就可以了。 搜索響應報文 以上篇建立的music索引爲例,我們先看看搜索結果的屬性都

原创 Elasticsearch系列---Elasticsearch的基本概念及工作原理

基本概念 Elasticsearch有幾個核心的概念,花幾分鐘時間瞭解一下,有助於後面章節的學習。 NRT Near Realtime,近實時,有兩個層面的含義,一是從寫入一條數據到這條數據可以被搜索,有一段非常小的延遲(大約1秒左右),二

原创 Elasticsearch系列---初識Elasticsearch

Elasticsearch是什麼? Elasticsearch簡稱ES,是一個基於Lucene構建的開源、分佈式、Restful接口的全文搜索引擎,還是一個分佈式文檔數據庫。天生就是分佈式、高可用、可擴展的,可以在很短的時間內存儲、搜索和分

原创 記一次ES查詢數據突然變爲空的問題

基本環境 elasticsearch版本:6.3.1 客戶端環境:kibana 6.3.4、Java8應用程序模塊。 其中kibana主要用於數據查詢診斷和查閱日誌,Java8爲主要的客戶端,數據插入和查詢都是由Java實現的。 案例介

原创 一篇文章徹底搞懂snowflake算法及百度美團的最佳實踐

寫在前面的話 一提到分佈式ID自動生成方案,大家肯定都非常熟悉,並且立即能說出自家拿手的幾種方案,確實,ID作爲系統數據的重要標識,重要性不言而喻,而各種方案也是歷經多代優化,請允許我用這個視角對分佈式ID自動生成方案進行分類: 實現方式

原创 使用Spring-boot-starter標準改造項目內的RocketMQ客戶端組件

一、背景介紹 我們在使用Spring Cloud全家桶構建微服務應用時,經常能看到spring-boot-xxx-starter的依賴,像spring-boot-starter-web、spring-cloud-starter-feign、

原创 RocketMQ事務消息學習及刨坑過程

一、背景 MQ組件是系統架構裏必不可少的一門利器,設計層面可以降低系統耦合度,高併發場景又可以起到削峯填谷的作用,從單體應用到集羣部署方案,再到現在的微服務架構,MQ憑藉其優秀的性能和高可靠性,得到了廣泛的認可。 隨着數據量增多,系統壓力變