ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Quickwit CHANGELOG 深度解读:从 0.1.0 到 0.9.0 的演进路线与技术里程碑

Quickwit CHANGELOG 深度解读:从 0.1.0 到 0.9.0 的演进路线与技术里程碑 Quickwit CHANGELOG 深度解读从 0.1.0 到 0.9.0 的演进路线与技术里程碑【免费下载链接】quickwitCloud-native OSS search engine for observability项目地址: https://gitcode.com/GitHub_Trending/qu/quickwit本指南以 Quickwit 官方 CHANGELOG.md 为骨架逐版本梳理 0.1.0 到 0.9.0 的关键特性、破坏性变更与迁移要点并结合仓库源码与配置示例帮助开发者理解 Quickwit 从单机索引器到云原生可观测性搜索引擎的演进路径掌握升级时需要注意的兼容性边界与实操步骤。读完本文你将能依据版本差异制定合理的升级/迁移方案并快速定位每个重要能力对应的源码位置。一、为什么值得通读 Quickwit 的 CHANGELOGQuickwit 是一个面向可观测性场景的云原生搜索开源项目其迭代节奏快、破坏性变更集中。CHANGELOG 不只是新功能流水账它直接揭示了核心架构的几次重大重构RocksDB → mrecordlog 的 WAL 替换、Ingest API 从 V1 演进到 V2 并成为默认路径、独立 AWS Lambda 部署模式被移除并转型为搜索卸载能力数据格式的兼容边界索引格式、metastore 格式、gossip 协议chitchat各自有自己的版本化演进混版本集群在部分升级窗口内不被支持运维与安全基线Rust 工具链版本要求、依赖安全升级如 rustls-webpki 的 RUSTSEC 公告、默认端口配置的迁移。从源码结构看这些变更大多能在仓库内找到对应的实现痕迹例如quickwit/quickwit-config、quickwit/quickwit-ingest、quickwit/quickwit-metastore等 crate 的演进本文会在相关小节给出精确文件路径供读者对照。二、0.9.0Ingest V2 全面接管与观测能力大爆发0.9.0 是当前 CHANGELOG 中信息量最大的一个版本其Breaking / Migration章节直接决定了从 0.8.x 升级的路径值得优先掌握。2.1 Breaking / Migration升级前必须知道的五件事Ingest V2 成为默认摄取路径POST /api/v1/{index}/ingest端点透明路由到 V2。在 0.8.x 中V2 需通过QW_ENABLE_INGEST_V2true开启且走独立的/api/v1/{index}/ingest-v2路由0.9 中该旧路由已被移除V2 统一从/ingest提供服务对应 CHANGELOG Removed 一节。源码侧V2 的实现集中在 quickwit-ingest/src/ingest_v2 目录router、ingester、workbench、fetch、broadcast 等模块可作为阅读入口。rest_listen_port顶层字段废弃改用新的rest块下的rest.listen_port。旧字段仍可用但会告警。这一迁移在 node_config/serialize.rs 中有明确处理当两者同时配置时会报conflicting configuration values错误仅配置旧字段时打印 deprecation 警告并自动映射到新字段。指标系统迁移到 metrics-rsgRPC 指标名改用servicelabel 区分服务janitor GC 指标不再带重复的quickwit_前缀。监控面板与告警规则若引用了旧指标名需要同步更新。词干提取Stemming收敛到multilangcargo feature默认构建不再包含通用 stemmer未启用该 feature 时相关分词能力不可用。Metastore 格式变更split 上新增maturity字段与 compaction 相关列PostgreSQL metastore 在首次启动时自动执行 SQL 迁移。maturity相关实现可在 split_metadata.rs 与 metastore/postgres 中查到。另外从源码构建现在要求Rust 1.92见仓库 rust-toolchain.toml。2.2 Added0.9.0 的核心新能力清单搜索卸载到 AWS Lambdasearcher 可将部分 leaf-search 工作负载分派给 Lambda 函数执行相关实现位于 quickwit-lambda-client 与 quickwit-lambda-server。实验性 DataFusion 查询层面向 Parquet 指标的 SQL/Substrait 执行、Arrow IPC 流式传输与分布式 worker代码在 quickwit-datafusion 与 quickwit-df-core 中。SQS source新增 Amazon SQS 队列摄取源实现在 queue_sources/sqs_queue.rs配套教程 ingest-data/sqs-files.md。Jaeger v2 支持与W3Ctraceparent头传播、gRPC 栈分布式追踪相关代码见 quickwit-jaeger 与 quickwit-serve/src/jaeger_api。OTLP exporter 协议可配置且内部日志可通过 OTLP exporter 导出新增QW_LOG_FORMATDDGJSON 日志格式。ES 兼容能力增强prefix/wildcard 查询、case_insensitive参数、regexp 简写、concatenate-fields 暴露、index_filter、ignore_unavailable、composite aggregation、list_index_stats端点等。运维与性能REST API 可选 mTLS 校验、独立健康检查 HTTP 服务器对应health.listen_port配置实现在 quickwit-serve/src/lib.rs 中按该端口启动 plaintext health server、validate_docs摄取设置、搜索超过过多 split 时失败的保护配置、leaf/root 搜索超时区分、leaf 搜索谓词缓存与取消传播、WAL 写入字节数 IO 指标、S3 内部错误重试等。2.3 升级到 0.9 的实操步骤仓库 docs/get-started/upgrade.md 给出了完整指引要点如下备份 metastorePostgreSQL metastore 做快照file-backed metastore 保留indexes/目录副本。0.9 首次启动会执行 SQL 迁移新增maturity与 compaction 相关列回滚依赖这份备份。先停全部 0.8.x 节点再启动 0.9 节点迁移期间不支持混版本集群。配置迁移把顶层rest_listen_port改写为rest.listen_port例如# before (0.8.x, still works in 0.9 with a deprecation warning) rest_listen_port: 7280 # after (0.9) rest: listen_port: 7280注意回滚的单向性metastore 迁移是单向的若要回退 0.8.x需恢复第 1 步备份并在启动任何 0.8.x 节点前关闭全部 0.9 节点。三、0.8.xES 兼容 API 与 gossip 协议版本化3.1 0.8.0 的增量能力0.8.0 的 Added 条目集中在 Elasticsearch 兼容面与集群可观测性ES API 增加/{index}/_stats、cat indices、_field_caps的时间范围过滤、search_after滚动、_source_excludes/_source_includes、_msearch的extra_filters、track_total_size、delete index 支持索引通配符排除*排除、字段名中支持/与.字符文件备份 metastore 支持 GCSgs://路径新增动态修改日志级别的 handler、解析查询为 query AST 的 REST 端点S3/对象存储与 Tantivy 侧多项性能优化。3.2 0.8.0 的破坏性变更与迁移chitchat gossip 协议破坏性升级Delta 消息改用 ZSTD 压缩且协议开始版本化。升级要求要么整集群完全停机后部署要么部署后重启全部节点因为混版本节点会因协议不匹配而崩溃。版本化后未来 gossip 协议更新将保持向后兼容。3.3 0.8.1 修复0.8.1 仅修复了 chitchat digest 消息序列化 bugchitchat#144是一个典型的补丁版本无需迁移动作。四、0.7.xOTEL 索引迁移与 Jaeger/Grafana 支持成型0.7.0/0.7.1 是可观测性接入快速成型的版本OTLP over HTTPProtobuf、Jaeger REST 端点供 Grafana 追踪使用、任意 source 中摄取 OTLP trace 数据默认 OTEL 索引从otel-logs-v0_6/otel-traces-v0_6迁移到otel-logs-v0_7/otel-traces-v0_7Trace/Span ID 从 base64 改为 hex 格式、改为 bytes 字段时间戳精度提升到纳秒级Kafka source 支持auto.offset.reset、提交 offsets 时机改进searcher 新增 split cache新增coerce/output_format数值字段选项、PhraseMatchQuery、MultiMatchQuery、TermsQuery、GCP PubSub source、DigitalOcean 存储 flavor、source_code_default/source_code/multilang分词器等。0.6.x → 0.7 迁移要点索引与 metastore 内部对象格式 0.7 与 0.6 向后兼容。但若你正用 OTEL 索引otel-logs-v0_6/otel-traces-v0_6摄取数据升级前必须先停止索引0.7 首次启动会自动更新这两个索引的 Trace ID/Span ID 字段的输入输出格式base64 → hex并创建新的otel-logs-v0_7/otel-traces-v0_7。Jaeger gRPC/HTTP API 默认同时查询otel-traces-v0_6与otel-traces-v0_7。也可以通过请求头qw-otel-logs-index或qw-otel-traces-index指定目标索引 ID——这一能力在 0.9.0 中以allow specifying OTEL index ID in header延续。五、0.6.x列式格式升级与列式存储的转折点0.6.02023-06-03是数据模型层面的关键版本新列式columnar格式fast field 支持任意基数Optional、Multivalued、restricted基数仅影响输出格式动态字段默认成为 fast field字符串 fast field 可被归一化ES/OpenSearch 兼容 API正式加入含 scroll、search_after、多索引搜索、_field_caps、phrase prefix 等查询新增date_histogram、percentiles聚合查询语言支持不同日期格式与 range 查询VRL 解析非 JSON 数据以抽取结构对象存储支持 virtual-hosted-style 与可配置参数CORS 配置arm64 Docker 镜像修复了删除并重建同名索引需重启节点、MinIO 高并发 GET 请求等问题破坏性索引新格式要求全量重建索引datetime 精度提升到纳秒默认节点 ID 使用主机名JSON 字段默认 raw tokenizer 并设为 fast fieldToken 长度过滤从 40 字节调整为 255 字节。六、0.5.x 与 0.4.x分布式架构成型期6.1 0.5.0控制面与摄取源大扩展gRPC OTLPtraces/logs、control plane索引任务调度、ingest API 限流器、Pulsar source、VRL transformREST API 全面管理 index/source/split附带 OpenAPI 规范与 Swagger UI大响应可压缩破坏性索引新格式要求全量重建索引/源/分片 CLI 命令改用 REST APIRocksDB 被 mrecordlog 等模块分区键 DSL 重构。6.2 0.4.0分布式能力基石Boolean/datetime/IP 字段、中文分词器、Kafka-only 分布式索引、gRPC metastore server、索引分区、Kubernetes、节点配置模板化、Prometheus metrics、保留策略、Azure Blob Storage、BM25 打分、删除、snippetingdocstore 默认块大小改为 1 MiB、压缩算法 ZSTDPostgreSQL 交互从 Diesel 迁移到 sqlx移除 i64 时间戳字段与按字段排序存储层禁止..路径访问安全。七、0.3.x ~ 0.1.0从单机到云原生的起步0.3.xGCS 支持、schemaless 索引JSON field、ES 兼容 ingest API、聚合查询、Kinesis source、内嵌搜索 UI、集群成员协议从 S.W.I.M. 切换到 chitchat修复自定义 S3 endpoint 尾斜杠、quickwit index create --overwrite等问题。0.2.x查询分发前按索引 schema 校验、自定义 S3 endpoint、terms/fastfields 并发预热、leaf search stream 修复移除QW_ENV环境变量用 Rust 1.58.1 编译以修复 CVE-2022-21658。0.1.02021-07-13项目首个版本。八、跨版本演进的技术脉络总结维度关键变化涉及仓库模块摄取RocksDB → mrecordlog WALIngest V1 → V2 默认化quickwit-ingest存储格式0.6 列式格式大改0.9 新增maturity/compaction 列quickwit-parquet-engine、quickwit-metastore查询ES 兼容 API 从 0.6 起步到 0.9 的 DSL 全量补强quickwit-query、quickwit-serve/src/elasticsearch_api可观测性接入OTLP gRPC/HTTP、Jaeger v1/v2、Grafana 支持、traceparent传播quickwit-opentelemetry、quickwit-jaeger集群协议chitchat 0.8 版本化ZSTD Deltaquickwit-cluster配置rest_listen_port→rest.listen_port健康检查独立端口node_config/serialize.rs部署独立 Lambda 部署模式移除转型为搜索卸载quickwit-lambda-server九、如何用好这份 CHANGELOG升级前先查目标版本迁移节0.6→0.7 关注 OTEL 索引格式自动迁移0.8→0.9 关注 Ingest V2 与rest.listen_port并严格按 docs/get-started/upgrade.md 的备份与停机顺序执行。用 PR 编号追踪细节CHANGELOG 每条目后的#xxxx是仓库 PR 编号可在提交历史中定位对应代码变更。结合源码验证行为例如rest_listen_port的废弃告警与冲突报错逻辑就在 node_config/serialize.rs健康检查独立服务器的启动条件在 quickwit-serve/src/lib.rs。关注安全条目0.9 的安全升级rustls-webpki、OpenSSL、Python requests、UI 依赖与 0.2.1 的 Rust 编译版本修复说明需要保持版本跟进以覆盖已知漏洞。输出文章【免费下载链接】quickwitCloud-native OSS search engine for observability项目地址: https://gitcode.com/GitHub_Trending/qu/quickwit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表