ip2region: es una biblioteca de ubicación de direcciones IP fuera de línea y un marco de gestión de datos de ubicación IP. Tiene una eficiencia de consulta de 10 microsegundos y proporciona generación de datos xdb
e implementación de cliente de consulta para muchos lenguajes de programación convencionales.
xdb
admite cientos de millones de filas de segmentos de datos IP. La información de la región predeterminada tiene un formato fijo:国家|区域|省份|城市|ISP
. La información de la región admite una personalización completa. Por ejemplo, puede agregar datos con necesidades comerciales específicas en la región, como información de GPS/Código de información regional unificada internacional/Código postal, etc. Es decir, puedes usar ip2region para administrar tus propios datos de ubicación IP.
El programa de generación de formato xdb
deduplicará y comprimirá automáticamente algunos datos. De forma predeterminada, se generan todos los datos IP. La base de datos ip2region.xdb generada es de 11 MiB. A medida que aumentan los detalles de los datos, el tamaño de la base de datos aumenta gradualmente.
Incluso para consultas basadas exclusivamente en archivos xdb
, el tiempo de respuesta para una sola consulta está en el nivel de diez microsegundos. Las consultas aceleradas por memoria se pueden activar de las dos maneras siguientes:
vIndex
: utilice un espacio de memoria fijo 512KiB
para almacenar en caché los datos del índice vectorial, reducir una operación de disco IO y mantener estable la eficiencia promedio de las consultas entre 10 y 20 microsegundos.xdb
: cargue todo el archivo xdb
en la memoria. El uso de la memoria es igual al tamaño del archivo xdb
. No hay operación de E/S del disco y se mantiene la eficiencia de las consultas a nivel de microsegundos.xdb
Para obtener información sobre la introducción de la API, la documentación de uso y los procedimientos de prueba, consulte la introducción del Léame en el cliente de consulta searcher
correspondiente. La implementación de todos los enlaces de consulta es la siguiente:
¿De acuerdo? | estado | lenguaje de programación | describir | Contribuyente |
---|---|---|---|---|
✅ | Terminado | golang | Implementación del cliente de consulta golang xdb | León |
✅ | Terminado | PHP | Implementación del cliente de consulta PHP xdb | León |
✅ | Terminado | Java | Implementación del cliente de consulta Java xdb | León |
✅ | Terminado | lua | Implementación del cliente de consulta Pure Lua xdb | León |
✅ | Terminado | do | Implementación del cliente de consulta ANSC c xdb | León |
✅ | Terminado | lua_c | Implementación del cliente de consulta xdb extendido de Lua c | León |
✅ | Terminado | óxido | implementación del cliente de consulta Rust xdb | gongzhengyang |
✅ | Terminado | pitón | implementación del cliente de consulta Python xdb | Impresionante Huahua |
✅ | Terminado | nodejs | Implementación del cliente de consulta nodejs xdb | Wu Jian Ping |
✅ | Terminado | csharp | Implementación del cliente de consultas csharp xdb | Alan Lee |
✅ | Terminado | erlang | Implementación del cliente de consultas Erlang xdb | leihua996 |
Para empezar | php_ext | Implementación del cliente de consulta xdb de extensión PHP c | Por determinar | |
✅ | Terminado | nginx | nginx extiende la implementación del cliente de consultas xdb | Wu Jian Ping |
✅ | Terminado | C++ | Implementación del cliente de consulta C++ xdb | Yunbin Liu |
Los desarrolladores de la comunidad aportan las siguientes implementaciones de cadenas de herramientas a través de repositorios de terceros:
¿De acuerdo? | estado | lenguaje de programación | describir | Contribuyente |
---|---|---|---|---|
✅ | Terminado | ruby-ip2región | Implementación del cliente de consulta Ruby XDB | jicheng1014 |
✅ | Terminado | Herramienta Ip2region | herramienta de conversión de datos ip2region | piedra mineral |
xdb
Para conocer la introducción de la API, la documentación de uso y los procedimientos de prueba, consulte el documento Léame en maker
a continuación:
¿De acuerdo? | estado | lenguaje de programación | describir | Contribuyente |
---|---|---|---|---|
✅ | Terminado | golang | Implementación del programa de generación Golang xdb | León |
✅ | Terminado | Java | Implementación del programa de generación Java xdb | León |
Para empezar | do | Implementación del programa de generación ANSC c xdb | León | |
✅ | Terminado | pitón | Implementación del programa de generación Python xdb | leolin49 |
✅ | Terminado | csharp | implementación del programa de generación csharp xdb | Alan Lee |
✅ | Terminado | óxido | Implementación del generador Rust xdb | KevinWang |
✅ | Terminado | C++ | Implementación del programa de generación C ++ xdb | Yunbin Liu |
xdb
ip2region tiene como objetivo estudiar el diseño y la implementación del almacenamiento de datos IP y la consulta rápida . No tiene soporte para datos IP originales y no habrá una versión comercial. Los datos originales ./data/ip.merge.txt
que vienen con este proyecto no se han actualizado durante mucho tiempo y no se actualizarán nuevamente. Para escenarios de uso que requieren alta precisión de datos y frecuencia de actualización, se recomienda comprarlos por terceros. -Datos comerciales de terceros que puedes utilizar. Hay varias formas de intentar actualizar los datos tú mismo:
Puede utilizar las herramientas de edición proporcionadas por ip2region para modificarlos en función de los datos de IP originales de ./data/ip.merge.txt
que viene con ip2region. Actualmente, existen varias formas de obtener datos:
[数据源补充]
en ip2region Github/Gitee Para saber cómo utilizar la herramienta de edición de datos IP original, consulte el documento Léame en el programa de generación maker
a continuación:
¿De acuerdo? | estado | lenguaje de programación | describir | Contribuyente |
---|---|---|---|---|
✅ | Terminado | golang | editor de datos IP original de golang | León |
Para empezar | Java | editor de datos IP sin procesar de Java | León | |
✅ | Terminado | C++ | Editor de datos IP sin procesar de C++ | Yunbin Liu |
Si desea actualizar los datos a través de su propia API o fuente de datos, puede consultar el algoritmo de actualización基于检测算法
compartido en el siguiente video para escribir un programa de actualización usted mismo:
Toda la consulta en caché de xdb es segura para la concurrencia. Las consultas basadas en archivos no son seguras para la concurrencia. Cuando la cantidad de concurrencia es grande, se deben utilizar diferentes procesos/subprocesos/corrutinas para crear diferentes objetos de consulta. El método de consulta puede causar un error con demasiados archivos abiertos. Modifique la cantidad máxima de archivos abiertos permitidos por el kernel (fs.file-max=un valor más alto) o cargue todo el xdb en la memoria para un uso concurrente seguro.
Siga primero la cuenta pública de WeChat lionsoul-org (Lion's Soul)