ip2region 3.11.0 发布 - Go 并发安全支持 / Java 优化
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>>