2023-01-14 10:37:53 +08:00
..
2023-01-14 10:37:53 +08:00
2023-01-14 10:17:21 +08:00
2023-01-13 21:41:43 +08:00
2023-01-13 21:41:43 +08:00
2023-01-13 21:41:43 +08:00

ip2region xdb erlang 查询客户端

编译

$ rebar3 compile

运行

启动erlang节点

$ rebar3 shell

在erlang节点中执行以下指令查询Ip地址信息

1> ip2region:search("1.0.8.0").
#{city => <<229,185,191,229,183,158,229,184,130>>,
  country => <<228,184,173,229,155,189>>,
  isp => <<231,148,181,228,191,161>>,
  province => <<229,185,191,228,184,156,231,156,129>>,
  region => <<>>}
2>

使用方法

  • 在rebar.config中引入依赖
{deps, [
  ip2region
]}.

  • 启动ip2region Application
......

application:ensure_started(ip2region),

......
  • 调用ip2region:search/1接口查询IP信息
......

ip2region:search("1.0.8.0"),

......

单元测试

$ rebar3 eunit
===> Verifying dependencies...
===> Analyzing applications...
===> Compiling ip2region
===> Performing EUnit tests...
=INFO REPORT==== 13-Jan-2023::21:26:15.137021 ===
XdbFile:/home/admin/erl-workspace/ip2region/binding/erlang/_build/test/lib/ip2region/priv/ip2region.xdb
...
Finished in 0.085 seconds
3 tests, 0 failures

基准测试

$ cd benchmarks/
$ sh ip2region-benchmark.sh
CPU info:
model name      : AMD EPYC 7K62 48-Core Processor
cache size      : 512 KB
cpu MHz         : 2595.124
bogomips        : 5190.24
cores/threads   : 2

Erlang info:
system_version:Erlang/OTP 24 [erts-12.3.2.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [jit]
load test data use 2.724344s

start run benchmark tests

search from file:
ip count:683844,
total time: 25.56304s,
search 26751.27840820184 times per second,
use 37.381391077497206 micro second per search

search from cache:
ip count:683844,
total time: 0.670307s,
search 1020195.2239794602 times per second,
use 0.9802045495756342 micro second per search

benchmark test finish