ip2region - é uma biblioteca offline de localização de endereços IP e estrutura de gerenciamento de dados de localização IP. Possui uma eficiência de consulta de 10 microssegundos e fornece geração de dados xdb
e implementação de cliente de consulta para muitas linguagens de programação convencionais.
xdb
suporta centenas de milhões de linhas de segmento de dados IP. As informações de região padrão têm um formato fixo:国家|区域|省份|城市|ISP
. As informações da região suportam personalização completa. Por exemplo, você pode adicionar dados com necessidades comerciais específicas na região, como informações de GPS/Código de Informação Regional Unificado Internacional/Código Postal, etc. Ou seja, você pode usar ip2region para gerenciar seus próprios dados de localização IP.
O programa de geração de formato xdb
irá desduplicar e compactar automaticamente alguns dados. Por padrão, todos os dados IP são gerados. À medida que o detalhe dos dados aumenta, o tamanho do banco de dados aumenta gradualmente.
Mesmo para consultas baseadas inteiramente em arquivos xdb
, o tempo de resposta para uma única consulta está no nível de dez microssegundos. As consultas aceleradas por memória podem ser ativadas das duas maneiras a seguir:
vIndex
: use um espaço de memória fixo 512KiB
para armazenar dados de índice vetorial, reduza uma operação de disco IO e mantenha a eficiência média da consulta estável entre 10-20 microssegundos.xdb
: carrega todo o arquivo xdb
na memória. O uso de memória é igual ao tamanho do arquivo xdb
. Não há operação de E/S de disco e a eficiência da consulta em nível de microssegundos é mantida.xdb
Para introdução à API, documentação de uso e procedimentos de teste, consulte a introdução do ReadMe no cliente de consulta searcher
correspondente. A implementação de todas as ligações de consulta é a seguinte:
OK? | estado | linguagem de programação | descrever | Contribuinte |
---|---|---|---|---|
✅ | Concluído | golang | implementação do cliente de consulta golang xdb | Leão |
✅ | Concluído | php | Implementação do cliente de consulta PHP xdb | Leão |
✅ | Concluído | Java | Implementação do cliente de consulta Java xdb | Leão |
✅ | Concluído | Lua | Implementação do cliente de consulta Pure Lua xdb | Leão |
✅ | Concluído | c | Implementação do cliente de consulta ANSC c xdb | Leão |
✅ | Concluído | lua_c | Implementação do cliente de consulta xdb estendida Lua c | Leão |
✅ | Concluído | ferrugem | implementação do cliente de consulta Rust XDB | gongzhengyang |
✅ | Concluído | píton | implementação do cliente de consulta python xdb | Impressionante Huahua |
✅ | Concluído | nodejs | implementação do cliente de consulta nodejs xdb | Wu Jianping |
✅ | Concluído | csharp | implementação do cliente de consulta csharp xdb | Alan Lee |
✅ | Concluído | erlang | Implementação do cliente de consulta Erlang xdb | leihua996 |
Para ser iniciado | php_ext | Implementação do cliente de consulta xdb extensão PHP c | A ser determinado | |
✅ | Concluído | nginx | nginx estende a implementação do cliente de consulta xdb | Wu Jianping |
✅ | Concluído | C++ | Implementação do cliente de consulta C++ xdb | Yunbin Liu |
As seguintes implementações de conjunto de ferramentas são contribuídas por desenvolvedores da comunidade por meio de repositórios de terceiros:
OK? | estado | linguagem de programação | descrever | Contribuinte |
---|---|---|---|---|
✅ | Concluído | ruby-ip2region | implementação do cliente de consulta Ruby xdb | Jicheng1014 |
✅ | Concluído | Ferramenta IP2region | ferramenta de conversão de dados ip2region | minério |
xdb
Para introdução à API, documentação de uso e procedimentos de teste, consulte o documento Leia-me no programa de geração maker
abaixo:
OK? | estado | linguagem de programação | descrever | Contribuinte |
---|---|---|---|---|
✅ | Concluído | golang | Implementação do programa de geração Golang xdb | Leão |
✅ | Concluído | Java | Implementação do programa de geração Java xdb | Leão |
Para ser iniciado | c | Implementação do programa de geração ANSC c xdb | Leão | |
✅ | Concluído | píton | Implementação do programa de geração Python xdb | leolin49 |
✅ | Concluído | csharp | implementação do programa de geração csharp xdb | Alan Lee |
✅ | Concluído | ferrugem | implementação do gerador ferrugem xdb | Kevin Wang |
✅ | Concluído | C++ | Implementação do programa de geração C++ xdb | Yunbin Liu |
xdb
ip2region tem como objetivo estudar o projeto e implementação de armazenamento de dados IP e consulta rápida . Não possui suporte de dados IP originais e não haverá versão comercial. Os dados originais ./data/ip.merge.txt
que acompanham este projeto não são atualizados há muito tempo e não serão atualizados novamente. Para cenários de uso que exigem alta precisão de dados e frequência de atualização, é recomendável adquirir terceiros. -dados comerciais de terceiros Você pode usar Existem várias maneiras de tentar atualizar os dados você mesmo:
Você pode usar as ferramentas de edição fornecidas pelo ip2region para modificá-lo com base nos dados IP originais de ./data/ip.merge.txt
que acompanham o ip2region. Atualmente, existem várias maneiras de obter dados:
[数据源补充]
em ip2region Github/Gitee Para saber como usar a ferramenta original de edição de dados IP, consulte o documento ReadMe no programa de geração maker
abaixo:
OK? | estado | linguagem de programação | descrever | Contribuinte |
---|---|---|---|---|
✅ | Concluído | golang | editor de dados IP original golang | Leão |
Para ser iniciado | Java | editor de dados IP brutos java | Leão | |
✅ | Concluído | C++ | Editor de dados IP brutos C++ | Yunbin Liu |
Se quiser atualizar os dados por meio de sua própria API ou fonte de dados, você pode consultar o algoritmo de atualização基于检测算法
compartilhado no vídeo a seguir para escrever você mesmo um programa de atualização:
Toda a consulta em cache do xdb é segura para simultaneidade. Consultas baseadas em arquivo não são seguras para simultaneidade. Diferentes processos/threads/corrotinas precisam ser usados com segurança criando diferentes objetos de consulta. O método de consulta pode causar um erro com muitos arquivos abertos. Modifique o número máximo de arquivos abertos permitido pelo kernel (fs.file-max = um valor mais alto) ou carregue o xdb inteiro na memória para uso simultâneo seguro.
Siga primeiro a conta pública do WeChat lionsoul-org (Lion’s Soul)