1单纯归纳
1 Ip2region是甚么?2 Ip2region优点2.199.9%精确度2.2技术标准的统计数据库系统2.3重量轻2.4查阅速度慢2.5多查阅应用流程的全力支持3 ip2region加速试验4 ip2region加装4.1 maven库房门牌号4.2 nodejs4.3 nuget加装4.4 php composer5 ip2region mammalian采用6 ip2region.db的聚合
gitee门牌号:https://gitee.com/lionsoul/ip2region#php-composer2主要就如是说
2.1 Ip2region是甚么?
ip2region -精确度99.9%的appIP门牌号功能定位库,0.0x微秒级查阅,ip2region.db统计数据库多于数MB,提供更多了java,php,c,python,nodejs,golang,c#等查阅存取和Binary,B树,缓存四种查阅演算法。
2.2 Ip2region优点
2.2.199.9%精确度
统计数据裂解了许多著名ip到路名查阅服务项目供应商的统计数据,那些是她们非官方的的精确度,经试验虽说比经典之作的天真IP功能定位精确许多。ip2region的统计数据裂解自下列服务项目供应商的开放API或是统计数据(升级换代流程每秒钟允诺单次2到4次):01,>80%,淘宝网IP门牌号库, http://ip.taobao.com/02,10%, GeoIP, https://geoip.com/03,2%,天真IP库, http://www.cz88.net/附注:假如前述对外开放API或是统计数据都不给对外开放统计数据时ip2region将暂停统计数据的预览服务项目。
2.2.2技术标准的统计数据库系统
每一ip统计数据段都一般来说了文件格式:
卫星城Id北欧国家地区省市卫星城ISP
多于我国的统计数据精确到了卫星城,其它北欧国家有部份统计数据根本无法功能定位到北欧国家,而前的快捷键全数是0,早已包涵了全数你能查到的大大小小的北欧国家(请忽略前面的卫星城Id,个人项目需求)。
2.2.3重量轻
包涵了全数的IP,聚合的统计数据库文件ip2region.db多于几MB,最小的版本多于1.5MB,随着统计数据的详细度增加统计数据库的大小也慢慢增大,目前还没超过8MB。
2.2.4查阅速度慢
全数的查阅客户端单次查阅都在0.x微秒级别,内置了四种查阅演算法
1 memory演算法:整个统计数据库全数载入缓存,单次查阅都在0.1x微秒内,C语言的应用流程单次查阅在0.00x微秒级别。2 binary演算法:基于二分查找,基于ip2region.db文件,不需要载入缓存,单次查阅在0.x微秒级别。3 b-tree演算法:基于btree演算法,基于ip2region.db文件,不需要载入缓存,单词查阅在0.x微秒级别,比binary演算法更快。
任何应用流程b-tree都比binary演算法快,当然memory演算法固然是最快的!
2.2.5多查阅应用流程的全力支持
早已集成的应用流程有:java、C#、php、c、python、nodejs、php扩展(php5和php7)、golang、rust、lua、luac, nginx。
2.3 ip2region加速试验
请参考每个binding下的README说明去运行cli试验流程,例如C语言的demo运行如下:
cd binding/c/gcc -g -O2 testSearcher.c ip2region.c./a.out ../../data/ip2region.db
会看到如下cli界面:
initializing B-tree …+———————————-+ ip2region test script Author: Type quit to exit program +———————————-+p2region>>101.105.35.572163我国华南广东省深圳市鹏博士 in 0.02295 millseconds
输入IP门牌号开始试验,第一次会稍微有点慢,在运行命令后面接入binary,memory来尝试其它演算法,建议采用b-tree演算法,速度和mammalian需求的可以采用memory演算法,具体集成请参考不同binding下的试验源码。
2.4 ip2region加装
具体请参考每个binding下的README文档和试验demo,下列是许多可用的快捷加装方式:
2.4.1 maven库房门牌号
org.lionsoulip2region1.7.2
2.4.2 nodejs
npm install node-ip2region –save
2.4.3 nuget加装
Install-Package IP2Region
2.4.4 php composer
#插件来自:https://github.com/zoujingli/ip2regioncomposer require zoujingli/ip2region
2.5 ip2region mammalian采用
1全数binding的各个search接口都不是线程安全的实现,不同线程可以通过创建不同的查阅对象来采用,mammalian量很大的情况下,binary和b-tree演算法可能会打开文件数过多的错误,请修改内核的最大允许打开文件数(fs.file-max=一个更高的值),或是采用持久化的memory演算法。2 memorySearch接口,在发布对象前进行一次预查阅(本质上是把ip2region.db文件加载到缓存),可以安全用于多线程环境。
2.6 ip2region.db的聚合
从1.8版本开始,ip2region开源了ip2region.db聚合流程的java实现,提供更多了ant编译全力支持,编译后会得到下列提到的dbMaker-{version}.jar,对于需要研究聚合流程的或是更改自定义聚合配置的请参考${ip2regionroot}/maker/java内的java源码。
从ip2region 1.2.2版本开始里面提交了一个dbMaker-{version}.jar的可以执行jar文件,用它来完成这个工作:
1确保你加装好了java环境(不玩Java的童鞋就自己谷歌找找拉,临时用一用,几分钟的事情)
2 cd到${ip2regionroot}/maker/java,然后运行如下命令:
java -jar dbMaker-{version}.jar -src 文本统计数据文件-region 地域csv文件[-dst 聚合的ip2region.db文件的目录]#文本统计数据文件:db文件的原始文本统计数据文件路径,自带的ip2region.db文件就是/data/ip.merge.txt聚合而来的,你可以换成自己的或是更改/data/ip.merge.txt重新聚合#地域csv文件:该文件目的是方便配置ip2region进行统计数据关系的存储,得到的统计数据包含一个cityid,这个直接采用/data/origin/globalregion.csv文件即可# ip2region.db文件的目录:是可选参数,没有指定的话会在当前目录聚合一份./data/ip2region.db文件
4默认的ip2region.db文件聚合命令:
cd ${ip2regionroot}/java/java -jar dbMaker-1.2.2.jar -src ./data/ip.merge.txt -region ./data/globalregion.csv#会看到一大片的输出
《github优选系列产品》,会持续预览,想了解的朋友可以关注,文章有帮助的话可以长按点赞有惊喜!!!文章比较长,大家可以先收藏、转发后再看,有甚么补充可以在下面评论,谢谢大家!