10 top de código de cache de código aberto para o Linux em 2023

10 top de código de cache de código aberto para o Linux em 2023

Sistemas e aplicativos de computação distribuídos confiáveis ​​tornaram-se a pedra angular de negócios de destaque, especialmente na automação e gerenciamento de processos de negócios críticos e entregando serviços aos clientes.

Como desenvolvedores e administradores de sistemas desses sistemas e aplicações, você deve fornecer todos os tipos de soluções de tecnologia da informação (TI) que garantirão que você tenha os sistemas mais eficientes disponíveis.

Isso inclui tarefas como projetar, testar e implementar estratégias para desempenho do sistema/aplicativo, confiabilidade, disponibilidade e escalabilidade, para dar aos usuários finais um nível de serviço satisfatório.

Cache é uma das muitas técnicas de entrega de aplicativos muito básicas, mas eficazes, em que você pode confiar. Antes de prosseguirmos, vejamos brevemente o que é o cache, onde e/ou como ele pode ser aplicado, e seus benefícios.

Índice

1
  • O que é cache ou cache de conteúdo?
  • Por que usar o cache?
  • 1. Redis
  • 2. Memcached
  • 3. Apache Ignite
  • 4. Servidor Couchbase
  • 5. Hazelcast IMDG
  • 6. Mcrouter
  • 7. Cache de verniz
  • 8. Proxy de cache de lula
  • 9. Nginx
  • 10. Servidor de tráfego Apache
      • Comentários finais

O que é cache ou cache de conteúdo?

Cache (ou Cache de conteúdo) é uma técnica amplamente usada para armazenar cópias de dados em um local de armazenamento temporário (também conhecido como um cache) para que os dados possam ser acessados ​​com facilidade e rapidez quando são recuperados do armazenamento original.

Os dados armazenados em cache podem incluir arquivos ou fragmentos de arquivos (como arquivos HTML, scripts, imagens, documentos, etc.), operações ou registros de banco de dados, chamadas de API, registros DNS, etc., dependendo do tipo e propósito de armazenamento em cache.

Um cache pode estar na forma de hardware ou software. O cache baseado em software (que é o foco deste artigo) pode ser implementado em diferentes camadas de uma pilha de aplicativos.

Cache pode ser aplicado no lado do cliente (ou na camada de apresentação do aplicativo), por exemplo, cache de navegador ou cache de aplicativos (ou modo offline). A maioria, se não todos os navegadores modernos, são enviados com uma implementação de um cache HTTP.

Você pode ter ouvido falar da frase popular “Limpe seu cache”Ao acessar um aplicativo da Web para permitir que você veja os dados ou conteúdo mais recente em um site ou aplicativo, em vez do navegador usando uma cópia antiga do conteúdo armazenado localmente.

Outro exemplo de cache do lado do cliente é Cache de DNS o que acontece no nível do sistema operacional (SO). É um armazenamento temporário de informações sobre as pesquisas anteriores do DNS pelo sistema operacional ou navegador da web.

O cache também pode ser implementado no nível da rede, seja em um LAN ou Wan via proxies. Um exemplo comum desse tipo de cache está em CDNs (Redes de entrega de conteúdo), que são redes distribuídas globalmente de servidores de proxy da Web.

Em terceiro lugar, você também pode implementar o cache nos servidores de origem ou back -end. Existem diferentes formas de cache no nível do servidor, eles incluem:

  • Cache do servidor da web (para cache imagens, documentos, scripts e assim por diante).
  • cache de aplicação ou memorização (usado na leitura de arquivos do disco, dados de outros serviços ou processos ou solicitando dados de uma API, etc.).
  • Cache de banco de dados (Para fornecer acesso na memória a dados usados ​​com frequência, como linhas de banco de dados solicitadas, resultados de consultas e outras operações).

Observe que os dados do cache podem ser armazenados em qualquer sistema de armazenamento, incluindo um banco de dados, arquivo, memória do sistema e assim por diante, mas deve ser um meio mais rápido que a fonte primária. Nesse sentido, o cache na memória é a forma mais eficaz e comumente usada de cache.

Por que usar o cache?

O cache oferece inúmeros benefícios, incluindo o seguinte:

  • No nível do banco de dados, melhora o desempenho da leitura em microssegundos para dados em cache. Você também pode usar um cache de gravação para melhorar o desempenho da gravação, onde os dados são escritos na memória e posteriormente escritos para disco ou armazenamento principal em intervalos especificados. Mas o aspecto da integridade dos dados pode ter implicações potencialmente desastrosas. Por exemplo, quando o sistema trava pouco antes de os dados se comprometeram com o armazenamento principal.
  • No nível do aplicativo, um cache pode armazenar frequentemente os dados no próprio processo de aplicativo, reduzindo assim os tempos de pesquisa de dados de segundos para microssegundos, especialmente sobre a rede.
  • Considerando o desempenho geral do aplicativo e do servidor, o cache ajuda a reduzir a carga do servidor, a latência e.
  • O cache também permite a disponibilidade de conteúdo, especialmente por meio de CDNs e muitos outros benefícios.

Neste artigo, revisaremos alguns dos principais fontes de código aberto (cache de aplicativos/banco de dados e Servidores proxy de cache) Ferramentas para implementar o cache do lado do servidor no Linux.

1. Redis

Redis (Servidor de dicionário remoto na íntegra) é um sistema de computação interno de memória, rápido, rápido, de alto desempenho e de alta desempenho, que pode ser usado na maioria das linguagens de programação, senão todas as linguagens de programação.

É um armazenamento de estrutura de dados na memória que funciona como um mecanismo de cache, um banco de dados no disco persistente na memória e corretor de mensagens. Embora seja desenvolvido e testado no Linux (a plataforma recomendada para implantação) e OS X, o Redis também funciona em outros sistemas POSIX, como *BSD, sem dependências externas.

Redis Suporta inúmeras estruturas de dados, como cordas, hashes, listas, conjuntos, conjuntos classificados, bitmaps, fluxos e muito mais. Isso permite que os programadores usem uma estrutura de dados específica para resolver um problema específico. Ele suporta operações automáticas em sua estrutura de dados, como anexar a uma string, empurrar elementos para uma lista, incrementando o valor de um hash, o cruzamento de computação e mais.

Seus principais recursos incluem a replicação do escravo mestre Redis (que é assíncrono por padrão), alta disponibilidade e failover automático oferecido usando Redis Sentinel, Redis Cluster (você pode escalar horizontalmente adicionando mais nós de cluster) e particionamento de dados (distribuindo dados entre vários redis instâncias). Ele também apresenta suporte para transações, scripts Lua, uma variedade de opções de persistência e criptografia de comunicação cliente-servidor.

Sendo um banco de dados na memória, mas persistente no disco, o Redis oferece o melhor desempenho quando funciona melhor com um conjunto de dados na memória. No entanto, você pode usá-lo com um banco de dados no disco como MySQL, PostgreSQL e muito mais. Por exemplo, você pode tomar pequenos dados muito pesados ​​em redis e deixar outros pedaços dos dados em um banco de dados no disco.

Redis suporta a segurança de várias maneiras: uma usando um “modo protegido”Recurso para proteger as instâncias Redis de serem acessados ​​de redes externas. Ele também suporta autenticação cliente-servidor (onde uma senha é configurada no servidor e fornecida no cliente) e TLS em todos os canais de comunicação, como conexões de clientes, links de replicação, o protocolo de barramento de cluster redis e mais.

Redis tem muitos casos de uso que incluem cache de banco de dados, cache de página inteira, gerenciamento de dados de sessões de usuário, armazenamento de respostas da API, sistema de mensagens de publicação/inscrição, fila de mensagens e muito mais. Eles podem ser aplicados em jogos, aplicativos de redes sociais, feeds RSS, análise de dados em tempo real, recomendações de usuário e assim por diante.

2. Memcached

O Memcached é um sistema de cache de objetos de memória distribuído e de código aberto, simples, mas poderoso e poderoso, distribuído. É um armazenamento de valor-chave na memória para pequenos pedaços de dados, como resultados de chamadas de banco de dados, chamadas de API ou renderização de páginas. Ele é executado em sistemas operacionais do tipo UNIX, incluindo Linux e OS X e também no Microsoft Windows.

Sendo uma ferramenta de desenvolvedor, ela destina -se ao uso em aumentos de velocidades de aplicativos dinâmicos da Web por conteúdo de cache (por padrão, um Menos usado recentemente (Lru) cache) reduzindo assim a carga de banco de dados no disco-ele atua como uma memória de curto prazo para aplicativos. Oferece uma API para as linguagens de programação mais populares.

Memcached suporta strings como o único tipo de dados. Possui uma arquitetura cliente-servidor, onde metade da lógica acontece no lado do cliente e a outra metade do lado do servidor. É importante ressaltar que os clientes entendem como escolher qual servidor para escrever ou ler, para um item. Além disso, um cliente sabe muito bem o que fazer, caso não possa se conectar a um servidor.

Embora seja um sistema de cache distribuído, suporta o agrupamento, os servidores memcachados são desconectados um do outro (i.e eles não têm conhecimento um do outro). Isso significa que não há suporte de replicação como em redis. Eles também entendem como armazenar e buscar itens e gerenciar quando despejar ou reutilizar a memória. Você pode aumentar a memória disponível adicionando mais servidores.

Ele suporta autenticação e criptografia via TLS a partir de Memcached 1.5.13, mas esse recurso ainda está na fase experimental.

3. Apache Ignite

O Apache Ignite, também é uma loja de chaves distribuídas e de código aberto e de código aberto, cache e sistema de banco de dados de vários modelos que fornecem poderosos APIs de processamento para calcular dados distribuídos. É também uma grade de dados na memória que pode ser usada na memória ou com a persistência nativa Ignite. Ele é executado em sistemas semelhantes a Unix, como Linux e também janelas.

Possui armazenamento de várias camadas, suporte completo ao SQL e ÁCIDO (Atomicidade, consistência, isolamento, durabilidade) Transações (suportadas apenas no nível da API de valor-chave) em vários nós de cluster, processamento co-localizado e aprendizado de máquina. Ele suporta integração automática com bancos de dados de terceiros, incluindo qualquer Rdbms (como MySQL, PostgreSQL, Oracle Database, e assim por diante) ou NOSQL Stores.

É importante notar que embora Acender Funciona como um armazenamento de dados SQL, não é totalmente um banco de dados SQL. Ele lida claramente com restrições e índices em comparação com bancos de dados tradicionais; Ele suporta índices primários e secundários, mas apenas os índices primários são usados ​​para aplicar a singularidade. Além disso, não tem apoio a restrições de chave estrangeira.

A Ignite também suporta segurança, permitindo que você habilite a autenticação no servidor e fornecendo credenciais de usuário aos clientes. Também há suporte para a comunicação de soquete SSL para fornecer uma conexão segura entre todos os nós de ignição.

Acender tem muitos casos de uso que incluem sistemas de cache, aceleração de carga de trabalho do sistema, processamento de dados em tempo real e análise. Também pode ser usado como uma plataforma centrada no gráfico.

4. Servidor Couchbase

O Couchbase Server também é um banco de dados de engajamento orientado a documentos de código aberto, distribuído e orientado para documentos que armazena dados como itens em um formato de valor-chave. Funciona no Linux e em outros sistemas operacionais, como Windows e Mac OS X. Ele usa uma linguagem de consulta rica em documentos e rica em documentos chamada N1QL, que fornece serviços poderosos de consulta e indexação para oferecer suporte a operações de sub-milissegundos em dados.

Seus recursos notáveis ​​são uma loja de valor-chave rápida com cache gerenciado, indexadores criados para propósitos, um poderoso mecanismo de consulta, arquitetura de expansão (escala multidimensional), integração de big data e SQL, segurança de pilha completa e alta disponibilidade.

Servidor Couchbase Vem com suporte nativo de cluster de múltiplas instâncias, onde um gerente de cluster coordena todas as atividades de nós e fornece simplesmente uma interface em todo o cluster para os clientes. É importante ressaltar que você pode adicionar, remover ou substituir os nós conforme necessário, sem tempo de inatividade. Ele também suporta a replicação de dados entre nós de um cluster e replicação seletiva de dados entre data centers.

Ele implementa a segurança através do TLS usando portas de servidores de Couchbase dedicadas, diferentes mecanismos de autenticação (usando credenciais ou certificados), controle de acesso baseado em funções (para verificar cada usuário autenticado para funções definidas pelo sistema que são atribuídas), auditoria, logs e sessões.

Seus casos de uso incluem uma interface de programação unificada, pesquisa de texto completo, processamento de consultas paralelas, gerenciamento de documentos, indexação e muito mais, foi projetado especificamente para fornecer gestão de dados de baixa latência para aplicativos interativos, móveis e IoT em larga escala.

5. Hazelcast IMDG

O Hazelcast IMDG (Grid de dados na memória) é um middleware de grade de dados em memória de código aberto, leve, rápido e extensível, que fornece computação interna de memória distribuída elasticamente escalável. Hazelcast IMDG Também é executado no Linux, Windows, Mac OS X e qualquer outra plataforma com Java instalado. Ele suporta uma ampla variedade de estruturas de dados flexíveis e nativas de idioma, como mapa, conjunto, lista, multimap, ringbuffer e hyperloglog.

Hazelcast é ponto a ponto e suporta escalabilidade simples, configuração de cluster (com opções para reunir estatísticas, monitorar via protocolo JMX e gerenciar o cluster com utilitários úteis), estruturas e eventos de dados distribuídos, porção de dados e transações. Também é redundante, pois mantém o backup de cada entrada de dados em vários membros. Para escalar seu cluster, basta iniciar outra instância, dados e backups são automaticamente e uniformemente equilibrados.

Ele fornece uma coleção de APIs úteis para acessar as CPUs em seu cluster para velocidade máxima de processamento. Ele também oferece implementações distribuídas de um grande número de interfaces amigáveis ​​para desenvolvedores de Java, como mapa, fila, executores Service, Lock e JCache.

Seus recursos de segurança incluem membros do cluster e autenticação de cliente e verificações de controle de acesso nas operações do cliente por meio dos recursos de segurança baseados em JaaS. Ele também permite interceptar conexões de soquete e operações remotas executadas pelos clientes, criptografia de comunicação no nível do soquete entre os membros do cluster e a ativação da comunicação de soquete SSL/TLS. Mas, de acordo com a documentação oficial, a maioria desses recursos de segurança é oferecida na versão corporativa.

Seu caso de uso mais popular é distribuído em cache de memória e armazenamento de dados. Mas também pode ser implantado para agrupamento de sessões na web, substituição de noSQL, processamento paralelo, mensagens fáceis e muito mais.

6. Mcrouter

O McRouter é um roteador de protocolo de memória livre e de código aberto para dimensionar implantações de memcach, desenvolvidas e mantidas por Facebook. Possui protocolo ASCII Memcacached, roteamento flexível, suporte a vários cluster, caches em vários níveis, agrupamento de conexões, vários esquemas de hash, roteamento de prefixo, pools replicados, sombreamento de tráfego de produção, reconfiguração on-line e monitoramento de saúde de destino/fracasso automático.

Além disso, ele suporta o aquecimento do cache frio, estatísticas ricas e comandos de depuração, qualidade de serviço de exclusão confiável, valores grandes e operações de transmissão, e vem com suporte IPv6 e SSL.

Ele está sendo usado no Facebook e Instagram como um componente central da infraestrutura de cache, para lidar com quase 5 bilhões de solicitações por segundo no pico.

7. Cache de verniz

O Varnish Cache é um acelerador de aplicativos da Web flexível, moderno e multiuso de código aberto que fica entre clientes da Web e um servidor de origem. Ele é executado em todas as plataformas Modern Linux, FreeBSD e Solaris (somente x86). É um excelente mecanismo de cache e um acelerador de conteúdo que você pode implantar na frente de um servidor da web, como Nginx, Apache e muitos outros, para ouvir na porta HTTP padrão para receber e encaminhar solicitações de clientes ao servidor da Web e entregar a Web Resposta dos servidores ao cliente.

Enquanto agia como um homem intermediário entre os clientes e os servidores de origem, Cache de verniz Oferece vários benefícios, o elemento sendo o conteúdo da Web em cache na memória para aliviar a carga do servidor da web e melhorar as velocidades de entrega para os clientes.

Depois de receber uma solicitação HTTP de um cliente, ele a encaminhará para o setor web back -end. Depois que o servidor da web responde, o verniz cache o conteúdo na memória e entrega a resposta ao cliente. Quando o cliente solicita o mesmo conteúdo, o Varnish o servirá da resposta do aplicativo para aumentar o cache. Se não pode servir o conteúdo do cache, a solicitação será encaminhada para o back -end e a resposta será armazenada em cache e entregue ao cliente.

Verniz características Vcl (Linguagem de configuração de verniz - uma linguagem flexível específica do domínio) usada para configurar como as solicitações são tratadas e mais, Módulos de verniz (Vmods) que são extensões para cache de verniz.

Em termos de segurança, o cache de verniz suporta registro, inspeção de solicitação, aceleração, autenticação e autorização via Vmods, Mas falta suporte nativo para SSL/TLS. Você pode ativar Https para cache de verniz usando um proxy SSL/TLS, como Pegar ou nginx.

Você também pode usar o cache de verniz como um firewall de aplicativos da web, o defensor do ataque DDoS, o protetor de hotlinking, o balanceador de carga, o ponto de integração, o gateway de sinal único, o mecanismo de política de autenticação e autorização, correção rápida para back-ends instáveis ​​e roteador de solicitação HTTP.

8. Proxy de cache de lula

Outro proxy gratuito e de código aberto, excelente e amplamente usado e solução de cache para Linux é a lula. É um software de servidor de cache de proxy da web rico em recursos que fornece serviços de proxy e cache para protocolos de rede populares, incluindo HTTP, HTTPS e FTP. Ele também é executado em outras plataformas e janelas do Unix.

Assim como Cache de verniz, Ele recebe solicitações de clientes e os passa para servidores de back -end especificados. Quando o servidor de backend responde, ele armazena uma cópia do conteúdo em um cache e passa para o cliente. Pedidos futuros para o mesmo conteúdo serão servidos do cache, resultando em entrega mais rápida de conteúdo ao cliente. Portanto, ele otimiza o fluxo de dados entre cliente e servidor para melhorar o desempenho e os caches com frequência conteúdo para reduzir o tráfego da rede e salvar a largura de banda.

O Squid vem com recursos como distribuir a carga sobre hierarquias intercomunicantes dos servidores proxy, produzindo dados sobre padrões de uso da Web (e.g Estatísticas sobre sites mais visitados), permite analisar, capturar, bloquear, substituir ou modificar as mensagens que estão sendo proxiadas.

Ele também suporta recursos de segurança, como controle de acesso rico, autorização e autenticação, suporte SSL/TLS e registro de atividades.

9. Nginx

Nginx (pronunciado como Engine-X) é uma solução consolidada de código aberto, de alto desempenho, completo e muito popular para configurar a infraestrutura da Web. É um servidor HTTP, um servidor proxy reverso, um servidor proxy de correio e um servidor proxy TCP/UDP genérico.

Nginx Oferece recursos básicos de cache, onde o conteúdo em cache é armazenado em um cache persistente no disco. A parte fascinante sobre o cache de conteúdo no Nginx é que ele pode ser configurado para fornecer conteúdo obsoleto de seu cache quando não pode buscar um novo conteúdo dos servidores de origem.

O NGINX oferece uma infinidade de recursos de segurança para proteger seus sistemas da Web, incluem terminação SSL, restringir o acesso à autenticação básica HTTP, autenticação com base no resultado da sub-referência, autenticação JWT, restringir o acesso a recursos HTTP proxiados, restringir o acesso por localização geográfica, e muito mais.

É comumente implantado como proxy reverso, balanceador de carga, terminador SSL/gateway de segurança, acelerador de aplicativos/cache de conteúdo e gateway API em uma pilha de aplicativos. Também é usado para transmitir mídia.

10. Servidor de tráfego Apache

Por último, mas não menos importante, temos o Apache Traffic Server, um servidor proxy de código aberto, rápido, escalável e extensível com suporte para HTTP/1.1 e http/2.0. Ele foi projetado para melhorar a eficiência e o desempenho da rede, armazenando conteúdo frequentemente acessível à beira de uma rede, para empresas, ISPs (provedores de servidores da Internet), provedores de backbone e muito mais.

Ele suporta o proxy para a frente e o reverso do tráfego HTTP/HTTPS. Também pode ser configurado para executar um ou ambos os modos simultaneamente. Possui cache persistente, APIs de plug -in; Suporte para ICP (Internet Cache Protocol), ESI (lado da borda inclui); Keep-alive e mais.

Em termos de segurança, o servidor de tráfego suporta o controle do acesso ao cliente, permitindo que você configure clientes que podem usar o cache proxy, o término SSL para ambas as conexões entre os clientes e entre si e entre si e o servidor de origem. Ele também suporta autenticação e autorização básica por meio de um plug -in, registro (de cada solicitação que recebe e todos os erros que detecta) e monitoramento.

O servidor de tráfego pode ser usado como um cache de proxy da web, proxy para a frente, proxy reverso, proxy transparente, balanceador de carga ou hierarquia de cache.

Comentários finais

Cache é uma das tecnologias de entrega de conteúdo da Web mais benéficas e estabelecidas há muito tempo que são projetadas principalmente para aumentar a velocidade de sites ou aplicativos. Ajuda a reduzir a carga do servidor, a latência e.

Neste artigo, revisamos as melhores ferramentas de cache de código aberto para usar em sistemas Linux. Se você conhece outras ferramentas de cache de código aberto não listadas aqui, compartilhe-as conosco através do formulário de feedback abaixo. Você também pode compartilhar seus pensamentos sobre este artigo conosco.