Search Infrastructure Patterns

Mental model

Search infrastructure có hai vòng lặp chính: ingest/indexing để dữ liệu trở thành searchable, và query/ranking để user nhận kết quả đúng trong latency thấp. Khi scale lớn, bottleneck thường không nằm ở thuật toán search đơn lẻ, mà ở isolation, batching, shard fan-out, migration, backfill và cách đo relevance.

Các lớp thiết kế

LớpConceptCâu hỏi cần trả lời
Index coreInverted Index, Index SegmentDữ liệu được token hóa, segment hóa và replicate thế nào?
Write pathSearch Indexer, Destination-Aware BatchingUpdate/backfill có làm query latency xấu đi không? Batch có localize failure không?
Read pathSearch Broker, Scatter-Gather PatternQuery fan-out tới shard nào, timeout ra sao, merge kết quả thế nào?
Multi-tenancySearch Tenant Isolation, Cell-Based ArchitectureMột tenant hoặc guild cực lớn có làm ảnh hưởng phần còn lại không?
Query languageSearch Query AST, Query UnderstandingUser query có được parse thành cấu trúc backend hiểu được không?
RelevanceSearch Ranking, Hybrid RetrievalKết quả được rank bằng lexical, semantic, ML và business signal thế nào?
MigrationZero-Downtime ReindexingSchema/index mới được rollout mà không dừng search bằng cách nào?

Bài học

  • Tách indexing khỏi querying để bulk update không phá query latency.
  • Batch theo destination tốt hơn batch ngẫu nhiên khi downstream có nhiều shard/node.
  • Search cluster khổng lồ có coordination tax; nhiều cell nhỏ có thể giảm blast radius.
  • Query language càng mạnh càng cần parser/AST và rollout backward-compatible.
  • Ranking là một lớp riêng, không nên bị trộn lẫn hoàn toàn với retrieval.
  • Hard limit của engine như Lucene MAX_DOC cần escape hatch trước khi chạm trần.

Liên kết