[分享创造] [开源] ip2geo:零依赖的 Go IP 归属地查询库, IPv4 查询比 geoip2-golang 快 14~ 58 倍
GitHub: https://github.com/haxqer/ip2geo 写这个库的起因很简单:服务里用 geoip2-golang 查 IP 归属地,profile 一看,单次 City() 要 1.7µs 左右,大部分时间花在解码 mmdb 的数据结构上。而我其实只需要国家 / 省份 / 城市 / 经纬度 / 时区这几个字段。 于是做了 ip2geo:把 MaxMind GeoIP2 / GeoLite2 City (或 DB-IP )的 .mmdb 一次性转成紧凑的 .geoc 文件,之后直接在它上面查 IPv4 / IPv6 。 性能 Apple M3 单核,500 万个随机 IPv4 ,5 次取中位数: reader ns / 次 吞吐 相对 City() geoip2-golang City() 1768 0.6 M/s 1× geoip2-golang Country() 1121 0.9 M/s 1.6× ip2geo city profile 119 8.4 M/s 14.5× ip2geo country profile 30.5 32.8 M/s 58×
阅读原始来源来源记录
研究分析
已观察信息
公开摘要:GitHub: https://github.com/haxqer/ip2geo 写这个库的起因很简单:服务里用 geoip2-golang 查 IP 归属地,profile 一看,单次 City() 要 1.7µs 左右,大部分时间花在解码 mmdb 的数据结构上。而我其实只需要国家 / 省份 / 城市 / 经纬度 / 时区这几个字段。 于是做了 ip2geo:把 MaxMind GeoIP2 / GeoLite2 City (或 DB-IP )的 .mmdb 一次性转成紧凑的 .geoc 文件,之后直接在它上面查 IPv4 / IPv6 。 性能 Apple M3 单核,500 万个随机 IPv4 ,5 次取中位数: reader ns / 次 吞吐 相对 City() geoip2-golang City() 1768 0.6 M/s 1× geoip2-golang Country() 1121 0.9 M/s 1.6× ip2geo city profile 119 8.4 M/s 14.5× ip2geo country profile 30.5 32.8 M/s 58×
同主题线索
近30天同主题线索 1283 条,来自 17 个来源;这表示重复出现,不证明收入。
机会假设
开发工具语境出现问题或替代方案信号,适合招募访谈对象。
缺失证据
单条讨论不能证明频率、痛点成本、预算负责人或付费意愿。
验证动作
收集5个独立问题和3位提问者;询问替代方案与成本;测试一份具体报价。