寫數據:
- 客戶端向任意節點發送請求,處理請求的節點就是協調節點。
- 協調節點將請求路由到主分片節點,
- 主分片處理請求后,同步到副本分片
- 協調節點返回響應。
讀數據:
根據doc id讀取文檔,對應一個doc id。
get某一條數據,寫入了某個doc,這個doc會自動給你分配一個全局唯一的id,也是根據doc id路由到主分片。也可以手動指定doc id,比如訂單id。
- 客戶端向任意節點發送請求,處理請求的節點就是協調節點。
- 寫文檔的時候,自動分配doc id,或者根據訂單號等指定doc id。協調節點根據唯一的doc id找到對應的主分片和副本分片,將請求路由到宿主節點。讀請求負載均衡默認用round-robin算法。
- 接收請求的node返回doc給協調節點
- 協調節點返回doc給客戶端。
搜索數據:
最強大的就是全文檢索,根據關鍵詞來搜索,找到相關的文檔。
- 客戶端向某節點發送請求,該節點變身協調節點,
- 協調節點將請求轉發到所有的shard。
- query phase:每個shard將自己的搜索結果(doc id)返回給協調節點,由協調節點進行數據的合並、排序、分頁等操作,產生最終結果。
- fetch phase:協調節點根據doc id去各個節點拉取實際的doc數據,最終返回給客戶端。