⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 网络 「网络」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

Ip2region 是什么

一句话:离线 IP 地址定位库,10 微秒级查询,不依赖任何外部服务。

开源地址:https://github.com/lionsoul2014/ip2region

做后端开发的同学,多多少少都遇到过”根据 IP 查地理位置”的需求——风控要看用户登录地、广告要做地域定向、CDN 要就近调度、安全审计要溯源攻击来源。市面上的方案要么收费(MaxMind GeoIP)、要么精度堪忧、要么需要联网调用第三方 API。

ip2region 的思路很直接:把数据打包成一个 xdb 文件,离线查询,零网络依赖。 16.6k+ 的 Star 数说明社区已经用脚投过票了。

它能干什么

说白了,IP 地址库的核心场景就这几类:

  • 安全风控:检测异地登录、拦截恶意 IP、辅助 DDoS 防御
  • 地理定向:广告投放、内容推荐、区域化运营(天气、物流、合规)
  • CDN 调度:根据用户 IP 就近分配节点,提升访问速度
  • 审计合规:记录访问来源,满足 GDPR 等法规要求
  • 反垃圾/反欺诈:识别垃圾邮件发送源、刷量 IP 段

这些场景对查询延迟和离线可用性要求都很高,ip2region 恰好踩中了这两个点。

Ip2region 三大核心特性

1. 灵活的 IP 数据管理框架

xdb 格式支持亿级别 IP 数据段。默认的 region 信息格式是 国家|区域|省份|城市|ISP,缺省值为 0。

关键在于:region 字段完全可自定义。 你可以往里塞 GPS 坐标、国际地域编码、邮编,甚至业务自定义标签。换句话说,ip2region 不只是一个查询库,它是一个 IP 数据管理框架——你完全可以用它维护自己的私有 IP 数据。

2. 自动去重 + 压缩,体积小得离谱

xdb 生成程序会自动对数据去重和压缩。全量 IP 数据生成的 ip2region.xdb 只有 11 MiB。11 兆,装得下全球 IP 的地理映射,这个数据密度相当可以。

3. 十微秒级查询,三种加速模式

即使直接读 xdb 文件,单次查询也在十微秒级别。还嫌不够快?两种内存加速方案:

模式 内存占用 磁盘 IO 查询延迟
纯文件查询 几乎为零 每次 2-3 次 十微秒级
vIndex 索引缓存 固定 512 KiB 减少 1 次 10~20 微秒
整个 xdb 加载到内存 等同 xdb 文件大小 零 微秒级

生产环境建议直接上「整个文件缓存」模式——11 MiB 内存换微秒级查询,这笔账怎么算都划算。

多语言支持

ip2region 提供了 Java、Python、Go、C、C#、Rust、PHP、Node.js 等主流语言的客户端实现,基本覆盖了你能想到的技术栈。

文章目录
  1. 1. Ip2region 是什么
  2. 2. 它能干什么
  3. 3. Ip2region 三大核心特性
    1. 3.0.1. 1. 灵活的 IP 数据管理框架
    2. 3.0.2. 2. 自动去重 + 压缩,体积小得离谱
    3. 3.0.3. 3. 十微秒级查询,三种加速模式
  • 4. 多语言支持