Visão Geral do Projeto
O Pegasus é um sistema de armazenamento distribuído de alto desempenho, desenvolvido e disponibilizado como código aberto pela Xiaomi. O cliente Java oficial do Pegasus oferece uma API completa para interagir com o serviço. Ele suporta operações como leitura, escrita e remoção de dados, além de disponibilizar interfaces assíncronas para melhorar a performance.
Início Rápido
Pré‑requisitos
- Ambiente de desevnolvimento Java
- Ferramenta de build (Gradle ou Maven)
- Docker (opcional, para compilar)
Compilando o Projeto
Clone e compile o repositório utilizando o Gradle (alternativa ao Maven):
git clone https://github.com/XiaoMi/pegasus-java-client.git
cd pegasus-java-client
./gradlew clean build
Exemplo de Código
Exemplo simples de uso do cliente Java do Pegasus para manipular dados:
import com.xiaomi.pegasus.client.PegasusClientFactory;
import com.xiaomi.pegasus.client.PegasusTableInterface;
public class ExemploPegasus {
public static void main(String[] args) {
PegasusTableInterface tabela = null;
try {
// Cria a instância do cliente e abre a tabela
tabela = PegasusClientFactory.openTable("minha_tabela");
String chaveHash = "usuario:123";
String chaveOrdenacao = "perfil";
String valor = "João, 30 anos";
// Insere dados
tabela.set(chaveHash, chaveOrdenacao, valor);
// Lê dados
String valorLido = tabela.get(chaveHash, chaveOrdenacao);
System.out.println("Valor recuperado: " + valorLido);
// Remove dados
tabela.del(chaveHash, chaveOrdenacao);
} catch (Exception e) {
System.err.println("Erro ao operar no Pegasus: " + e.getMessage());
e.printStackTrace();
} finally {
if (tabela != null) {
try {
tabela.close();
} catch (Exception ignored) {}
}
}
}
}
Note que o código acima inclui a liberação explícita do recurso (tabela.close()), boa prática para evitar vazamentos.
Casos de Uso e Melhores Práticas
Casos de Uso
Internamente, o Pegasus é empregado em diversos cenários, como armazenamento de dados de usuário, filas de mensagens e análises em tempo real. Um exemplo típico:
- Armazenamento de perfil de usuário: guarda informações básicas e comportamento, suportando alta concorrência e garantindo consistência imediata.
Melhores Práticas
- Particionamento de dados: projete cuidadosamente a estratégia de sharding para escalabilidade e desempenho.
- Operações assíncronas: prefira as interfaces assíncronas (ex.:
asyncSet,asyncGet) para aumentar a taxa de transferência. - Monitoramento e alertas: configure métricas detalhadas e alarmes para detectar e tratar anomalias rapidamente.
Ecossistema Típico
O Pegasus pode ser combinado com outros projetos para formar sistemas mais robustos:
- Apache ZooKeeper: descoberta de serviços e gerenciamento de configuração, aumentando a resiliência.
- Apache Hadoop: atua como fonte de dados para processamento em lote, fornecendo acesso de alta performance.
- Apache Kafka: pode ser usado como backend persistente para tópicos, suportando carga massiva de mensagens.
- Apache Spark: integração para análise de streaming e machine learning usando dados do Pegasus.
Essas integrações permitem construir arquiteturas distribuídas flexíveis e poderosas.