免费
¥0
- 每 IP 每秒 10 次
- 网页与 REST API
- 无需注册
免费额度即开即用无需注册,更高配额通过企业微信申请
同样一次归属地查询,常见方案要经过一次网络往返到 Redis 或 SQL,再解析文本记录。XIP 把这些工作全部搬到构建期,运行期只剩一次移位和几次比较。
68 万条 IP 段在构建时被编译成 6.96 MiB 专用二进制索引,地点字符串去重后只剩 13,827 条并预渲染为 JSON 片段。运行期不解析任何文本、不连接任何数据库。
65,536 个桶把整个 IPv4 空间直接切开,取 IP 高 16 位一次移位即可定位候选区间,平均只剩 11 条记录待判定,再做局部二分。
索引由内核页缓存直接映射进地址空间,查询路径上没有堆分配、没有 GC、没有连接池,多个进程共享同一份物理内存。
| 查询内核吞吐(单线程) | 39.2 M 次/秒 |
|---|---|
| 单次查询耗时 | 25.5 ns |
| 平均比较次数 | 1.61 次 |
| 朴素全表二分所需比较次数 | 20 次 |
| 零比较直接命中的 /16 区段 | 50.0% |
| 最坏比较次数 | 12 次 |
| HTTP 端到端吞吐 | 1,439,381 req/s |
| 单请求往返延迟 | p50 9 µs / p99 12 µs |
| 常驻内存(700 万次请求后) | 13.6 MB 无增长 |
| 服务二进制体积 | 1.18 MB |
测试方法:xip bench 为单线程随机 IPv4 查询;HTTP 吞吐使用 32 条 keep-alive 连接、每条 32 个流水线请求压测,瓶颈在压测端。比较次数由索引文件的桶分布直接统计得出。以上数据均可在本仓库复现。