Ip2region 是一个离线的 IP 数据管理框架和定位库,同时支持 IPv4 和 IPv6,支持亿级别的 IP 断管理,10 微秒级别的查询性能,提供了很多主流编程语言的 xdb 数据格式的生成和查询实现。
ip2region 官方社区已正式上线旨提强化 IP 相关的工具链和数据服务,目前提供了稳定的 商用离线数据、在线查询测试、xdb 使用 / 技术文档。
ip2region 3.11.0 详细更新如下:
1,Java Ip2Region 服务类实现移动到 org.lionsoul.ip2region.service 包下,便于后期扩展,pom 版本号为 3.3.0,import 方式如下:
import org.lionsoul.ip2region.service.Config;
import org.lionsoul.ip2region.service.Ip2Region;
2,Golang 增加 Ip2Region 查询服务实现,并发安全支持且支持同时输入 IPv4 和 IPv6 的查询,使用方式如下:
import "github.com/lionsoul2014/ip2region/binding/golang/service"
// 1, 创建 v4 的配置:指定缓存策略和 v4 的 xdb 文件路径
// 参数1: 缓存策略, options: service.NoCache / service.VIndexCache / service.BufferCache
// 参数2: xdb 文件路径
// 参数3: 初始化的查询器数量
v4Config, err := service.NewV4Config(service.VIndexCache, "ip2region v4 xdb path", 20)
if err != nil {
return fmt.Errorf("failed to create v4 config: %s", err)
}
// 2, 创建 v6 的配置:指定缓存策略和 v6 的 xdb 文件路径
v6Config, err := service.NewV6Config(service.VIndexCache, "ip2region v6 xdb path", 20)
if err != nil {
return fmt.Errorf("failed to create v6 config: %s", err)
}
// 3,通过上述配置创建 Ip2Region 查询服务
ip2region, err := service.NewIp2Region(v4Config, v6Config)
if err != nil {
return fmt.Errorf("failed to create ip2region service: %s", err)
}
// 4,导出 ip2region 服务进行双版本的IP地址的并发查询,例如:
v4Region, err := ip2region.SearchByStr("113.92.157.29") // 进行 IPv4 查询
v6Region, err := ip2region.SearchByStr("240e:3b7:3272:d8d0:db09:c067:8d59:539e") // 进行 IPv6 查询
// 5,在服务需要关闭的时候,同时关闭 ip2region 查询服务
ip2region.Close()
3,Java 的查询测试改用 Ip2Region 查询服务来实现,默认使用 data/ip2region_v4.xdb 和 data/ip2region_v6.xdb,可支持同时输入 IPv4 和 IPv6,测试方式如下:
➜ java git:(master) java -jar target/ip2region-3.3.0.jar search
ip2region search service test program
+-v4 xdb: /data01/code/c/ip2region/data/ip2region_v4.xdb (vectorIndex)
+-v6 xdb: /data01/code/c/ip2region/data/ip2region_v6.xdb (vectorIndex)
type 'quit' to exit
ip2region>> 1.2.3.4
{region: 美国|华盛顿|0|谷歌, took: 170 μs}
ip2region>> 240e:3b7:3272:d8d0:db09:c067:8d59:539e
{region: 中国|广东省|深圳市|家庭宽带, took: 322 μs}
ip2region>>
4,Golang 的查询测试改用 Ip2Region 查询服务来实现,默认使用 data/ip2region_v4.xdb 和 data/ip2region_v6.xdb,可支持同时输入 IPv4 和 IPv6,测试方式如下:
➜ golang git:(master) ./xdb_searcher search
ip2region search service test program
+-v4 db: /data01/code/c/ip2region/data/ip2region_v4.xdb (vectorIndex)
+-v6 db: /data01/code/c/ip2region/data/ip2region_v6.xdb (vectorIndex)
type 'quit' to exit
ip2region>> 1.2.3.4
{region: 美国|华盛顿|0|谷歌, took: 62.504µs}
ip2region>> 240e:3b7:3272:d8d0:db09:c067:8d59:539e
{region: 中国|广东省|深圳市|家庭宽带, took: 79.571µs}
ip2region>>