ip2region – ist eine Offline-IP-Adress-Standortbibliothek und ein IP-Standortdaten-Management-Framework. Es verfügt über eine Abfrageeffizienz von 10 Mikrosekunden und bietet xdb
Datengenerierung und Abfrage-Client-Implementierung für viele gängige Programmiersprachen.
xdb
unterstützt Hunderte Millionen IP-Datensegmentzeilen. Die Standardregionsinformationen haben ein festes Format:国家|区域|省份|城市|ISP
. Die Standardregionsinformationen sind standardmäßig 0. Regionsinformationen unterstützen eine vollständige Anpassung. Sie können beispielsweise Daten mit spezifischen Geschäftsanforderungen in der Region hinzufügen, z. B. GPS-Informationen/International Unified Regional Information Code/Postleitzahl usw. Das heißt, Sie können ip2region verwenden, um Ihre eigenen IP-Standortdaten zu verwalten.
Das Programm zur Generierung xdb
Formats dedupliziert und komprimiert standardmäßig alle IP-Daten. Die generierte Datenbank ip2region.xdb ist 11 MB groß.
Selbst bei Abfragen, die vollständig auf xdb
Dateien basieren, liegt die Antwortzeit für eine einzelne Abfrage bei zehn Mikrosekunden. Speicherbeschleunigte Abfragen können auf zwei Arten aktiviert werden:
vIndex
Index-Cache: Verwenden Sie einen festen 512KiB
Speicherplatz, um Vektorindexdaten zwischenzuspeichern, einen E/A-Festplattenvorgang zu reduzieren und die durchschnittliche Abfrageeffizienz stabil zwischen 10 und 20 Mikrosekunden zu halten.xdb
Gesamtdatei-Cache: Laden Sie die gesamte xdb
Datei in den Speicher. Die Speichernutzung entspricht der Größe der xdb
Datei. Es gibt keinen Festplatten-E/A-Vorgang und die Abfrageeffizienz auf Mikrosekundenebene bleibt erhalten.xdb
Datenabfrage Informationen zur API-Einführung, Nutzungsdokumentation und Testverfahren finden Sie in der ReadMe-Einführung unter dem entsprechenden searcher
-Client. Die Implementierung aller Abfragebindungen ist wie folgt:
OK? | Zustand | Programmiersprache | beschreiben | Mitwirkender |
---|---|---|---|---|
✅ | Vollendet | Golang | Implementierung des Golang XDB-Abfrageclients | Löwe |
✅ | Vollendet | php | Implementierung des PHP-XDB-Abfrageclients | Löwe |
✅ | Vollendet | Java | Implementierung des Java-XDB-Abfrageclients | Löwe |
✅ | Vollendet | lua | Pure Lua xdb-Abfrage-Client-Implementierung | Löwe |
✅ | Vollendet | C | Implementierung des ANSC c xdb-Abfrageclients | Löwe |
✅ | Vollendet | lua_c | Lua c erweiterte XDB-Abfrage-Client-Implementierung | Löwe |
✅ | Vollendet | Rost | Implementierung des Rust XDB-Abfrageclients | gongzhengyang |
✅ | Vollendet | Python | Implementierung des Python-XDB-Abfrageclients | Toller Huahua |
✅ | Vollendet | nodejs | Implementierung des NodeJS-XDB-Abfrageclients | Wu Jian Ping |
✅ | Vollendet | csharp | csharp xdb-Abfrage-Client-Implementierung | Alan Lee |
✅ | Vollendet | erlang | Implementierung des Erlang-XDB-Abfrageclients | leihua996 |
Zu beginnen | php_ext | Implementierung des PHP-C-Erweiterungs-XDB-Abfrageclients | Noch festzulegen | |
✅ | Vollendet | Nginx | Nginx erweitert die Implementierung des xdb-Abfrageclients | Wu Jian Ping |
✅ | Vollendet | C++ | C++-xdb-Abfrage-Client-Implementierung | Yunbin Liu |
Die folgenden Toolchain-Implementierungen werden von Community-Entwicklern über Repositorys von Drittanbietern bereitgestellt:
OK? | Zustand | Programmiersprache | beschreiben | Mitwirkender |
---|---|---|---|---|
✅ | Vollendet | ruby-ip2region | Implementierung des Ruby XDB-Abfrageclients | jicheng1014 |
✅ | Vollendet | Ip2regionTool | ip2region-Datenkonvertierungstool | Erzstein |
xdb
Datengenerierung Informationen zur API-Einführung, Nutzungsdokumentation und Testverfahren finden Sie im ReadMe-Dokument unter maker
Generierungsprogramm unten:
OK? | Zustand | Programmiersprache | beschreiben | Mitwirkender |
---|---|---|---|---|
✅ | Vollendet | Golang | Implementierung des Golang XDB-Generierungsprogramms | Löwe |
✅ | Vollendet | Java | Implementierung des Java-XDB-Generierungsprogramms | Löwe |
Zu beginnen | C | Implementierung des ANSC c xdb-Generierungsprogramms | Löwe | |
✅ | Vollendet | Python | Implementierung des Python-XDB-Generierungsprogramms | leolin49 |
✅ | Vollendet | csharp | Implementierung des csharp xdb-Generierungsprogramms | Alan Lee |
✅ | Vollendet | Rost | Implementierung des Rust-XDB-Generators | KevinWang |
✅ | Vollendet | C++ | Implementierung des C++-XDB-Generierungsprogramms | Yunbin Liu |
xdb
Datenaktualisierung Ziel von ip2region ist es , das Design und die Implementierung von IP-Datenspeicherung und schneller Abfrage zu untersuchen . Es bietet keine Unterstützung für Original-IP-Daten und wird keine kommerzielle Version haben. Die mit diesem Projekt gelieferten ./data/ip.merge.txt
wurden lange Zeit nicht aktualisiert und werden nicht erneut aktualisiert. Für Nutzungsszenarien, die eine hohe Datengenauigkeit und Aktualisierungshäufigkeit erfordern, wird der Kauf eines Drittanbieters empfohlen Es gibt mehrere Möglichkeiten, die Daten selbst zu aktualisieren:
Sie können die von ip2region bereitgestellten Bearbeitungstools verwenden, um sie basierend auf den ursprünglichen IP-Daten von ./data/ip.merge.txt
zu ändern, die mit ip2region geliefert werden. Derzeit gibt es mehrere Möglichkeiten, Daten zu beziehen:
[数据源补充]
in ip2region Github/Gitee Informationen zur Verwendung des Original-IP-Datenbearbeitungstools finden Sie im ReadMe-Dokument unter dem maker
Generierungsprogramm unten:
OK? | Zustand | Programmiersprache | beschreiben | Mitwirkender |
---|---|---|---|---|
✅ | Vollendet | Golang | Golang ursprünglicher IP-Dateneditor | Löwe |
Zu beginnen | Java | Java-Roh-IP-Dateneditor | Löwe | |
✅ | Vollendet | C++ | C++-Roh-IP-Dateneditor | Yunbin Liu |
Wenn Sie die Daten über Ihre eigene API oder Datenquelle aktualisieren möchten, können Sie auf den Aktualisierungsalgorithmus zurückgreifen基于检测算法
um selbst ein Aktualisierungsprogramm zu schreiben:
Die gesamte zwischengespeicherte Abfrage von xdb ist parallelitätssicher . Verschiedene Prozesse/Threads/Coroutinen müssen sicher verwendet werden, indem unterschiedliche Abfrageobjekte erstellt werden Die Abfragemethode kann bei zu vielen geöffneten Dateien einen Fehler verursachen. Bitte ändern Sie die vom Kernel maximal zulässige Anzahl geöffneter Dateien (fs.file-max=ein höherer Wert) oder laden Sie die gesamte xdb zur sicheren gleichzeitigen Verwendung in den Speicher.
Bitte folgen Sie zuerst dem öffentlichen WeChat-Konto lionsoul-org (Lion’s Soul).