ip2region — это библиотека для офлайн-определения местоположения по IP-адресу и управления данными о локализации IP. Она обладает скоростью запросов в десятках микросекунд и предоставляет реализацию клиентских библиотек для генерации и запросов данных в формате xdb
для множества популярных языков программирования.
Формат xdb
поддерживает миллионы записей с информацией об IP-адресах. По умолчанию информация о регионе имеет следующий формат: Страна|Регион|Штат|Город|Интернет-провайдер
. В случае отсутствия информации о регионе используется значение по умолчанию равное нулю. Информация о регионах может быть полностью настроена пользователем, допускается добавление специфических данных для бизнес-потребностей, таких как GPS данные, международные коды областей или почтовые индексы. Таким образом, можно использовать ip2region для управления собственными данными о локализации IP.
Программа для создания файла xdb
автоматически удаляет дубликаты и сжимает часть данных. Полностью загруженные данные всех IP адресов занимают около 11МБ. Размер базы данных увеличивается пропорционально детализированности данных.
Даже при полной работе с файлами xdb
, время ответа одного запроса составляет несколько микросекунд. Для повышения производительности могут использоваться два метода:
vIndex
: использование постоянного пространства памяти размером 512КБ для кэширования данных векторного индекса, что позволяет минимизировать операции чтения с диска и поддерживать среднее время выполнения запроса в диапазоне 10-20 микросекунд.xdb
: загрузка всего файла xdb
в память, что обеспечивает скорость выполнения запросов на уровне микросекунд без использования операций чтения с диска.xdb
Приложение API, руководство пользователя и тестовые программы доступны в разделе "ReadMe" каждого клиента поиска. Все реализации клиентских библиотек представлены ниже:
OK? | Статус | Язык программирования | Описание | Автор |
---|---|---|---|---|
![]() |
Выполнено | golang | Реализация клиента поиска для Go | Lion |
![]() |
Выполнено | php | Реализация клиента поиска для PHP | Lion |
![]() |
Выполнено | java | Реализация клиента поиска для Java | Lion |
![]() |
Выполнено | lua | Реализация чистого клиента поиска для Lua | Lion |
![]() |
Выполнено | c | Реализация клиента поиска для ANSI C | Lion |
![]() |
Выполнено | lua_c | Реализация расширения Lua C для клиента поиска | Lion |
![]() |
Выполнено | rust | Реализация клиента поиска для Rust | gongzhengyang |
![]() |
Выполнено | python | Реализация клиента поиска для Python | 厲害的花花 |
![]() |
Выполнено | nodejs | Реализация клиента поиска для Node.js | Wu Jian Ping |
![]() |
Выполнено | csharp | Реализация клиента поиска для C# | Alen Lee |
![]() |
Выполнено | erlang | Реализация клиента поиска для Erlang | leihua996 |
Начало планируется | php_ext | Реализация расширения PHP C для клиента поиска | Подтверждение требуется | |
![]() |
Выполнено | nginx | Реализация расширения Nginx для клиента поиска | Wu Jian Ping |
![]() |
Выполнено | C++ | Реализация клиента поиска для C++ | Yunbin Liu |
![]() |
Выполнено | Typescript | Реализация клиента поиска для TypeScript | Alan Lee |
Следующие реализации инструментов были предоставлены сообществом через внешние репозитории:
OK? | Статус | Язык программирования | Описание | Автор |
---|---|---|---|---|
![]() |
Выполнено | ruby-ip2region | Реализация клиента поиска для Ruby | jicheng1014 |
![]() |
Выполнено | Ip2regionTool | Инструмент для преобразования данных ip2region | orestonce |
xdb
Приложение API, руководство пользователя и тестовые программы доступны в разделе "ReadMe" каждого генератора данных.
OK? | Статус | Язык программирования | Описание | Автор |
---|---|---|---|---|
![]() |
Выполнено | golang | Реализация генератора данных для Go | Lion |
![]() |
Выполнено | java | Реализация генератора данных для Java | Lion |
Начало планируется | c | Реализация генератора данных для ANSI C | Lion | |
![]() |
Выполнено | python | Реализация генератора данных для Python | leolin49 |
![]() |
Выполнено | csharp | Реализация генератора данных для C# | Alan Lee |
![]() |
Выполнено | rust | Реализация генератора данных для Rust | KevinWang |
![]() |
Выполнено | C++ | Реализация генератора данных для C++ | Yunbin Liu |
xdb
Цель проекта ip2region заключается в исследовании дизайна и реализации хранения данных IP и быстрого поиска. Проект не предоставляет первичных данных IP и не предлагает коммерческую версию. Исходные данные ./data/ip.merge.txt
давно не обновляются и больше не будут обновлены. Для случаев, требующих высокой точности и частоты обновления данных, рекомендовано приобретение коммерческих данных от сторонних источников. Можно использовать следующие способы для самостоятельного обновления данных:Вы можете использовать исходные данные IP, предоставленные ip2region, и редакторы данных, предлагаемые ip2region, чтобы самостоятельно модифицировать данные. Доступны следующие источники данных:
[数据源补充]
Инструкция по использованию редакторов данных представлена в разделе "ReadMe" каждого генератора данных:
OK? | Статус | Язык программирования | Описание | Автор |
---|---|---|---|---|
![]() |
Выполнено | golang | Редактор исходных данных IP для Go | Lion |
Начало планируется | java | Редактор исходных данных IP для Java | Lion | |
![]() |
Выполнено | C++ | Редактор исходных данных IP для C++ | Yunbin Liu |
Если вы хотите обновлять данные с помощью своего API или другого источника данных, вы можете воспользоваться алгоритмом обновления, представленным в видео:
Параллельное использование кэша всего файла xdb
безопасно. Однако параллельное использование запросов на основе файлов не является безопасным. Различные процессы/потоки/корутины должны создавать отдельные объекты запросов для безопасного использования. При большом количестве параллельных запросов возможно возникновение ошибок из-за недостаточного количества открытых файлов. В этом случае следует увеличить максимальное количество открытых файлов (fs.file-max=выше значение).
xdb
: "ip2region xdb структура данных и процесс поиска"
xdb
: "ip2region xdb структура данных и процесс поиска"
xdb
: "ip2region xdb двоичная структура данных и процесс генерации"
xdb
: "ip2region обновление данных и использование редактора данных xdb"
Пожалуйста, подпишитесь на официальный WeChat-канал Lionsoul-org (狮子的魂).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )