
从 Dora、Quickwit 和 rathole 出发,分别练习实时数据流、云存储搜索与 NAT 穿透,并给出能在今晚跑通的最小路径。
dora-rs,代码里的导入名仍然是 dora。这个命名差异很容易让第一次安装的人误装同名包。1cargo install dora-cli
python -m pip install dora-rs numpy pyarrowgit clone https://github.com/dora-rs/dora.git
cd dora
dora run examples/python-dataflow/dataflow.ymlsender → transformer → receiver 三段链路来观察。你可以打开 dataflow.yml,找出每个节点的输入输出;然后进入发送节点,观察 node.send_output 如何把一个 Arrow 数组交给下一步。10.9.0,同时提供安装脚本和 Docker 镜像。第一次尝试更建议使用 Docker,把数据目录挂载到本地;这样你可以先观察 HTTP API 和索引目录,再决定是否从源码编译。5mkdir -p qwdata
docker run --rm \
-v "$(pwd)/qwdata:/quickwit/qwdata" \
-p 127.0.0.1:7280:7280 \
quickwit/quickwit:0.9.0 runcurl http://localhost:7280/api/v1/versioncurl -o stackoverflow-index-config.yaml \
https://raw.githubusercontent.com/quickwit-oss/quickwit/v0.9.0/config/tutorials/stackoverflow/index-config.yaml
curl -XPOST http://127.0.0.1:7280/api/v1/indexes \
--header "content-type: application/yaml" \
--data-binary @stackoverflow-index-config.yaml
curl -O https://quickwit-datasets-public.s3.amazonaws.com/stackoverflow.posts.transformed-10000.json
curl -XPOST "http://127.0.0.1:7280/api/v1/stackoverflow/ingest?commit=force" \
--data-binary @stackoverflow.posts.transformed-10000.json
curl "http://127.0.0.1:7280/api/v1/stackoverflow/search?query=search+AND+engine"title:search AND engine 换成字段查询,再试一次聚合请求,看看查询 DSL 怎样改变返回结果。5title 成为默认搜索字段,再比较普通查询和字段限定查询的结果。然后删除索引,重建一个只保留少量文档的版本。这个过程会让你看到 schema、数据目录和查询 API 之间的对应关系。remote_addr、local_addr 和 bind_addr 各自处在网络路径的哪一端。server.toml:[server]
bind_addr = "0.0.0.0:2333"
[server.services.demo]
token = "use_a_secret_that_only_you_know"
bind_addr = "0.0.0.0:5202"client.toml:[client]
remote_addr = "myserver.com:2333"
[client.services.demo]
token = "use_a_secret_that_only_you_know"
local_addr = "127.0.0.1:8000"./rathole server.toml
./rathole client.toml127.0.0.1:8000,访问公网服务器的 5202 端口,就会沿着「公网端口 → rathole 服务端 → 长连接 → 客户端本地服务」这条路径转发。配置中的服务名和 Token 必须一致,服务器防火墙也必须放行 rathole 端口与对外服务端口。7local_addr 指向一个本地静态文件服务器,再故意改错 Token、服务名和公网端口,分别记录客户端与服务端的报错。你会比只读「NAT 穿透」四个字更快理解连接建立、认证和转发是三件不同的事。v0.5.0 发布于 2023 年 10 月 1 日;项目仍有源码和测试目录的后续提交,但版本发布节奏明显慢于代码提交。它适合学习一条短小的网络代理主线,生产部署前要自己核对版本、加密配置和暴露端口。8| 你现在的状态 | 更建议先碰 | 先学哪条主线 | 最小条件与关键限制 |
|---|---|---|---|
| 想先理解多语言节点怎样组成一条实时管线 | Dora | YAML 数据流、Arrow 消息、节点生命周期 | Python 路径要求 3.11+;Linux 的 Rust/Python 组合最省事,软实时与 Coordinator 恢复能力要单独验证。1 |
| 想把日志、schema、索引和查询串起来 | Quickwit | schema、索引写入、REST 查询、计算与存储分离 | Docker 最容易起步;教程会下载 10,000 条 Stack Overflow 数据,metrics 和部分高可用能力仍有限。45 |
| 想用最少代码看懂网络边界 | rathole | NAT 穿透、服务映射、认证与加密 | 需要公网服务器、可访问的本地服务和开放端口;版本发布较慢,真实部署不能省略安全配置。78 |
github.com
github.com
github.com
github.com
quickwit.io
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.