基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用
cz88
基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用
- Go 语言编写
- 进程内缓存结果,重复的 ip 查询响应时间平均为 0.2 ms
- 支持部署后通过 http 协议或 rpc 协议请求服务
- 支持第三方包的方式引入直接使用
- 内置协程数、缓存数、CPU核心数等指标上报(未开放)
czip.txt 文件获取方式
- 通过直接安装纯真网络客户端并将其导出为 txt 文件而获得。将其命名为
czip.txt
并放置在根目录下即可 - github releases 下载地址:czip.zip 。下载得到
czip.zip
,解压得到czip.txt
并放置在根目录下即可
第三方包引入
```go
package mainimport ("fmt"cz88 "github.com/NuoMinMin/cz88/core"
)func main() {fmt.Println(cz88.GetIpInfo("210.35.117.200"))
}
```
部署方法
编译安装
安装 golang 环境。建议 go1.13 以上。
编译运行
go mod download go get github.com/fragmentization/cz88 go build -o ./cz88 github.com/fragmentization/cz88/cmd ./cz88
http 协议请求
接口 | 请求方式 | 请求字段 | 说明 |
---|---|---|---|
/v1/address | GET | ip | 查询 ip 地址相关信息 或 获取访问者自身 ip 地址相关信息(请求字段为空) |
/v1/my_address | GET | 获取访问者自身 ip 地址相关信息 |
rpc 协议请求
请根据 rpc 客户端语言编译 pb/v1/service.proto 得到 pb 文件
go rpc client demo
func GetIpInfo() (*v1.AddressResp, error) {cc, err := grpc.Dial("127.0.0.1:8108", grpc.WithInsecure())if err != nil {panic(err)}resp, err := v1.NewAppClient(cc).Address(context.TODO(), &v1.AddressReq{Ip: "",})if err != nil {errStatus, _ := status.FromError(err)if errStatus.Code() == codes.Unavailable {return nil, errors.New("No connection could be made because the target machine actively refused it. ")}return nil, errors.New(errStatus.Message())}return resp, nil
}
性能测试
- 随机 ip 请求测试中,首次响应时长约 50ms/请求,产生缓存后约 0.2 ms/请求
- 本人开发机压测结果如下所示
min@Rytia-Envy13
------------------
OS: Ubuntu 20.04.1 LTS on Windows 10 x86_64
Kernel: 4.4.0-19041-Microsoft
Uptime: 24 mins
Packages: 761 (dpkg)
Shell: zsh 5.8
Terminal: /dev/tty2
CPU: Intel i5-8250U (8) @ 1.800GHz
Memory: 6088MiB / 8038MiB# ab -c 100 -t 10 "http://127.0.0.1:8109/v1/address?ip=210.35.117.200"
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 127.0.0.1 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Finished 17113 requestsServer Software:
Server Hostname: 127.0.0.1
Server Port: 8109Document Path: /v1/address?ip=210.35.117.200
Document Length: 114 bytesConcurrency Level: 100
Time taken for tests: 10.041 seconds
Complete requests: 17113
Failed requests: 0
Total transferred: 4073370 bytes
HTML transferred: 1951110 bytes
Requests per second: 1704.25 [#/sec] (mean)
Time per request: 58.677 [ms] (mean)
Time per request: 0.587 [ms] (mean, across all concurrent requests)
Transfer rate: 396.15 [Kbytes/sec] receivedConnection Times (ms)min mean[+/-sd] median max
Connect: 0 18 13.8 14 92
Processing: 1 40 20.8 36 197
Waiting: 1 31 17.4 27 180
Total: 1 58 22.8 53 206Percentage of the requests served within a certain time (ms)50% 5366% 6275% 7080% 7690% 9195% 10498% 11699% 123100% 206 (longest request)
基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用相关推荐
- 关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)—的读后感...
关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)- 评论 读后感:里面的内容很经典,很实用 读后感:给初学者是好,但是是比较旧的了!VS2003 C/S的 读后感:< ...
- 从零开始构建自己的爬虫代理IP数据库并定期检验IP有效性...
ProxyIPPool 从零开始构建自己的代理IP池:根据代理IP网址抓取新的代理IP:对历史代理IP有效性验证 源码地址:https://github.com/TOMO-CAT/ProxyIPPoo ...
- 基于容器的AI系统开发——百度PaddlePaddle解析
作者来自百度PaddlePaddle团队:王鹤麟.于洋.王益 责编:何永灿(heyc@csdn.net),本文来源于<程序员>,未经允许不得转载. 基于深度学习的AI系统是由深度学习框架. ...
- 基于安卓的兼职app开发!深度解析跳槽从开始到结束完整流程,分享PDF高清版
开头 最近有粉丝反应,不想做安卓了,有朋友转到前端了,安卓不行了,问我怎么办? 自从RN,Weex这种跨平台编程语言出来以后,安卓将死的言论总是不绝于耳.随着颇有摧枯拉朽之势Flutter的出现,加之 ...
- java读取纯真IP数据库qqwry.dat的源代码
java读取纯真IP数据库QQwry.dat的源代码,要运行此程序必须有 到网上下载QQwry.dat,下载地址 http://www.cz88.net/down/ 由于太大,我这里就不提供了. ...
- 纯真IP数据库的应用!
前一段时间做了一个 利用纯真IP数据库,根据IP显示地址,并利用google获取地址经纬度,用google maps api 在网页显示IP来源的程序! 1.下载了纯真IP数据库,加压为txt文件后, ...
- 纯真IP数据库格式详解
摘要 网络上的IP数据库以纯真版的最为流行,LumaQQ也采用了纯真版IP数据库做为IP查询功能的基础.不过关于其格式的文档却非常之少,后来终于在网上 找到了一份文档,得以了解其内幕,不过那份文档寥寥 ...
- 纯真IP数据库格式详解zt
摘要 网络上的IP数据库以纯真版的最为流行,LumaQQ也采用了纯真版IP数据库做为IP查询功能的基础.不过关于其格式的文档却非常之少,后来终于在网上找到了一份文档,得以了解其内幕,不过那份文档寥寥数 ...
- [转]纯真IP数据库格式详解
纯真IP数据库格式详解 摘要 网络上的IP数据库以纯真版的最为流行,LumaQQ也采用了纯真版IP数据库做为IP查询功能的基础.不过关于其格式的文档却非常之少,后来终于在网上找到了一份文档,得以了解其 ...
最新文章
- 如何将PPT转换成手机APP
- mysql索引组织结构_MySQL中创建及优化索引组织结构的思路(3)
- Jupyter Notebook 访问密码重置
- POJ - 2828 Buy Tickets(线段树+思维/Splay+模拟)
- BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )
- spring cloud(2)---微服务写的最全的一篇文章
- 讲一个让你们难过很久的故事吧?
- linux配置erp访问端口_nginx配置相同端口号访问多个项目
- ubuntu播放文件需要MPEG-4 AAC解码器
- 1.1.人工智能的概念
- Log4j2 CVE-2021-45046 鸡肋RCE漏洞复现与浅析
- 新手坐高铁怎么找车厢_坐高铁时如何快速找到自己车票上的车厢和座位! 说出来你都不敢相信...
- win2019服务器版游戏性能,微软win10发布2019年03累积更新,修复游戏和鼠标性能卡顿等问题...
- 分享---蔡康永情商课201集全
- apt-get -yqq install 与apt-get install的区别
- 时间序列模型:AR、MA和ARMA
- PW6513原装现货
- 被误解的C++——法国大革命
- HP L380 G9 centos系统安装
- 从插件中获取资源的几种方式[总结]_FileLocator