ip2region - est une bibliothèque de localisation d'adresses IP hors ligne et un cadre de gestion des données de localisation IP. Il a une efficacité de requête de 10 microsecondes et fournit la génération de données xdb
et l'implémentation de clients de requêtes pour de nombreux langages de programmation courants.
xdb
prend en charge des centaines de millions de lignes de segments de données IP. Les informations de région par défaut ont un format fixe :国家|区域|省份|城市|ISP
. Les informations régionales prennent en charge une personnalisation complète. Par exemple, vous pouvez ajouter des données avec des besoins commerciaux spécifiques dans la région, telles que des informations GPS/Code d'information régional unifié international/Code postal, etc. C'est-à-dire que vous pouvez utiliser ip2region pour gérer vos propres données de localisation IP.
Le programme de génération du format xdb
dédupliquera et compressera automatiquement certaines données. Par défaut, toutes les données IP sont générées. La base de données ip2region.xdb générée est de 11 Mo. À mesure que le détail des données augmente, la taille de la base de données augmente progressivement.
Même pour les requêtes entièrement basées sur des fichiers xdb
, le temps de réponse pour une seule requête est de l'ordre de dix microsecondes. Les requêtes à mémoire accélérée peuvent être activées des deux manières suivantes :
vIndex
: utilisez un espace mémoire fixe 512KiB
pour mettre en cache les données d'index vectoriel, réduisez une opération de disque d'E/S et maintenez l'efficacité moyenne des requêtes stable entre 10 et 20 microsecondes.xdb
complet : chargez l'intégralité du fichier xdb
en mémoire. L'utilisation de la mémoire est égale à la taille du fichier xdb
. Il n'y a pas d'opération d'E/S sur le disque et l'efficacité des requêtes au niveau de la microseconde est maintenue.xdb
Pour l'introduction de l'API, la documentation d'utilisation et les procédures de test, veuillez vous référer à l'introduction ReadMe sous le client de requête searcher
correspondant. L'implémentation de toutes les liaisons de requête est la suivante :
D'accord? | État | langage de programmation | décrire | Donateur |
---|---|---|---|---|
✅ | Complété | golang | implémentation du client de requête Golang XDB | Lion |
✅ | Complété | php | Implémentation du client de requête PHP XDB | Lion |
✅ | Complété | Java | Implémentation du client de requête Java XDB | Lion |
✅ | Complété | Lua | Implémentation du client de requête Pure Lua xdb | Lion |
✅ | Complété | c | Implémentation du client de requête ANSC c xdb | Lion |
✅ | Complété | lua_c | Implémentation du client de requête XDB étendu Lua C | Lion |
✅ | Complété | rouiller | Implémentation du client de requête Rust XDB | Gongzhengyang |
✅ | Complété | python | Implémentation du client de requête Python XDB | Génial Huahua |
✅ | Complété | noeudjs | Implémentation du client de requête nodejs xdb | Wu Jianping |
✅ | Complété | cpointu | Implémentation du client de requête Csharp XDB | Alan Lee |
✅ | Complété | erlang | Implémentation du client de requête Erlang XDB | leihua996 |
A commencer | php_ext | Implémentation du client de requête XDB de l'extension PHP C | A déterminer | |
✅ | Complété | nginx | nginx étend la mise en œuvre du client de requête xdb | Wu Jianping |
✅ | Complété | C++ | Implémentation du client de requête C++ xdb | Yunbin Liu |
Les implémentations de chaîne d'outils suivantes sont fournies par les développeurs de la communauté via des référentiels tiers :
D'accord? | État | langage de programmation | décrire | Donateur |
---|---|---|---|---|
✅ | Complété | ruby-ip2region | Implémentation du client de requête Ruby XDB | jicheng1014 |
✅ | Complété | Ip2regionTool | outil de conversion de données ip2region | minerai |
xdb
Pour l'introduction de l'API, la documentation d'utilisation et les procédures de test, veuillez vous référer au document ReadMe sous maker
ci-dessous :
D'accord? | État | langage de programmation | décrire | Donateur |
---|---|---|---|---|
✅ | Complété | golang | Implémentation du programme de génération Golang XDB | Lion |
✅ | Complété | Java | Implémentation du programme de génération Java XDB | Lion |
A commencer | c | Implémentation du programme de génération ANSC c xdb | Lion | |
✅ | Complété | python | Implémentation du programme de génération Python XDB | léolin49 |
✅ | Complété | cpointu | mise en œuvre du programme de génération csharp xdb | Alan Lee |
✅ | Complété | rouiller | implémentation du générateur rust xdb | KevinWang |
✅ | Complété | C++ | Implémentation du programme de génération C++ xdb | Yunbin Liu |
xdb
ip2region vise à étudier la conception et la mise en œuvre du stockage de données IP et des requêtes rapides . Il ne prend pas en charge les données IP originales et n'aura pas de version commerciale. Les données originales ./data/ip.merge.txt
fournies avec ce projet n'ont pas été mises à jour depuis longtemps et ne seront plus mises à jour. Pour les scénarios d'utilisation qui nécessitent une précision des données et une fréquence de mise à jour élevées, il est recommandé d'en acheter un troisième. -partie données commerciales Vous pouvez utiliser Il existe plusieurs manières d'essayer de mettre à jour les données vous-même :
Vous pouvez utiliser les outils d'édition fournis par ip2region pour le modifier en fonction des données IP d'origine de ./data/ip.merge.txt
fournies avec ip2region. Actuellement, il existe plusieurs façons de générer des données :
[数据源补充]
dans ip2region Github/Gitee Pour savoir comment utiliser l'outil d'édition de données IP d'origine, veuillez vous référer au document ReadMe sous le programme de génération maker
ci-dessous :
D'accord? | État | langage de programmation | décrire | Donateur |
---|---|---|---|---|
✅ | Complété | golang | éditeur de données IP original de Golang | Lion |
A commencer | Java | éditeur de données IP brutes java | Lion | |
✅ | Complété | C++ | Éditeur de données IP brutes C++ | Yunbin Liu |
Si vous souhaitez mettre à jour les données via votre propre API ou source de données, vous pouvez vous référer à l'algorithme de mise à jour基于检测算法
partagé dans la vidéo suivante pour écrire vous-même un programme de mise à jour :
L'intégralité de la requête mise en cache de xdb est sécurisée pour la concurrence. Les requêtes basées sur des fichiers ne sont pas sécurisées pour la concurrence. Différents processus/threads/coroutines doivent être utilisés en toute sécurité en créant différents objets de requête. Lorsque le nombre de requêtes basées sur des fichiers est important. La méthode de requête peut provoquer une erreur avec trop de fichiers ouverts. Veuillez modifier le nombre maximum de fichiers ouverts autorisés par le noyau (fs.file-max=une valeur plus élevée) ou charger l'intégralité de la base de données xdb en mémoire pour une utilisation simultanée en toute sécurité.
Veuillez d'abord suivre le compte public WeChat lionsoul-org (Lion's Soul)