10 herramientas de almacenamiento de almacenamiento de código abierto para Linux en 2023

10 herramientas de almacenamiento de almacenamiento de código abierto para Linux en 2023

Los sistemas y aplicaciones informáticas distribuidas confiables se han convertido en la piedra angular de las empresas prominentes, especialmente en la automatización y gestión de procesos comerciales de misión crítica y brindar servicios a los clientes.

Como desarrolladores y administradores de sistemas de estos sistemas y aplicaciones, se espera que proporcione todo tipo de soluciones de tecnología de la información (TI) que garantice que tenga los sistemas más eficientes disponibles.

Esto incluye tareas como diseñar, probar e implementar estrategias para el rendimiento del sistema/aplicación, la confiabilidad, la disponibilidad y la escalabilidad, para brindar a los usuarios finales un nivel de servicio satisfactorio.

Almacenamiento en caché es una de las muchas técnicas de entrega de aplicaciones muy básicas pero efectivas en las que puede confiar. Antes de continuar, veamos brevemente qué es el almacenamiento en caché, dónde y/o cómo se puede aplicar, y sus beneficios.

Tabla de contenido

1
  • ¿Qué es el almacenamiento en caché o el contenido almacenado en caché??
  • Por qué usar el almacenamiento en caché?
  • 1. Rehacer
  • 2. Memcached
  • 3. Apache encender
  • 4. Servidor couchbase
  • 5. Hazelcast IMDG
  • 6. Crouter
  • 7. Caché de barniz
  • 8. Proxy de almacenamiento en caché
  • 9. Nginx
  • 10. Servidor de tráfico de Apache
      • Observaciones finales

¿Qué es el almacenamiento en caché o el contenido almacenado en caché??

Almacenamiento en caché (o Almacenamiento en caché de contenido) es una técnica ampliamente utilizada para almacenar copias de datos en una ubicación de almacenamiento temporal (también conocida como cache) para que se puedan acceder de manera fácil y rápida cuando se recupere del almacenamiento original.

Los datos almacenados en un caché pueden incluir archivos o fragmentos de archivos (como archivos HTML, scripts, imágenes, documentos, etc.), Operaciones o registros de la base de datos, llamadas API, registros DNS, etc. dependiendo del tipo y el propósito del almacenamiento en caché.

Un caché puede ser en forma de hardware o software. El caché basado en software (que es el enfoque de este artículo) se puede implementar en diferentes capas de una pila de aplicaciones.

Almacenamiento en caché Se puede aplicar en el lado del cliente (o en la capa de presentación de la aplicación), por ejemplo, almacenamiento en caché del navegador o almacenamiento en caché de aplicaciones (o modo fuera de línea). La mayoría de los navegadores modernos, si no todos, se envían con una implementación de un caché HTTP.

Es posible que hayas oído hablar de la frase popular "borra tu caché"Al acceder a una aplicación web para permitirle ver los últimos datos o contenido en un sitio web o aplicación, en lugar del navegador utilizando una copia antigua del contenido almacenado localmente.

Otro ejemplo de almacenamiento en caché del lado del cliente es DNS almacenado en caché lo que sucede en el nivel del sistema operativo (OS). Es un almacenamiento temporal de información sobre las búsquedas DNS anteriores por parte del sistema operativo o el navegador web.

El almacenamiento en caché también se puede implementar a nivel de red, ya sea en un Lan o PÁLIDO a través de proxies. Un ejemplo común de este tipo de almacenamiento en caché está en CDNS (Redes de entrega de contenido), que son redes distribuidas globalmente de servidores proxy web.

En tercer lugar, también puede implementar el almacenamiento en caché en los servidores de origen o backend backend (s). Existen diferentes formas de almacenamiento en caché a nivel de servidor, incluyen:

  • almacenamiento de almacenistas web en caché (para almacenar imágenes, documentos, scripts, etc.).
  • almacenamiento en caché de la aplicación o memorización (Utilizado en la lectura de archivos del disco, datos de otros servicios o procesos, o solicitar datos de una API, etc.).
  • almacenamiento en caché de la base de datos (Para proporcionar acceso en memoria a datos de uso frecuente, como filas de bases de datos solicitadas, resultados de consulta y otras operaciones).

Tenga en cuenta que los datos de caché se pueden almacenar en cualquier sistema de almacenamiento, incluida una base de datos, archivo, memoria del sistema, etc., pero deben ser un medio más rápido que la fuente principal. En este sentido, el almacenamiento en caché en memoria es la forma de almacenamiento en caché más efectiva y comúnmente utilizada.

Por qué usar el almacenamiento en caché?

El almacenamiento en caché ofrece numerosos beneficios, incluido los siguientes:

  • A nivel de la base de datos, mejora el rendimiento de lectura a los microsegundos para los datos en caché. También puede usar un caché de retroceso para mejorar el rendimiento de la escritura, donde los datos se escriben en la memoria y luego se escriben en disco o almacenamiento principal a intervalos especificados. Pero el aspecto de integridad de datos puede tener implicaciones potencialmente desastrosas. Por ejemplo, cuando el sistema se bloquea justo antes de que los datos se comprometan con el almacenamiento principal.
  • En el nivel de aplicación, un caché puede almacenar datos con frecuencia en el proceso de aplicación en sí, reduciendo así los tiempos de búsqueda de datos desde segundos hasta microsegundos, especialmente a través de la red.
  • Teniendo en cuenta el rendimiento general de la aplicación y el servidor, el almacenamiento en caché ayuda a reducir la carga de su servidor, la latencia y el ancho de banda de la red a medida que los datos en caché se sirven a los clientes, mejorando así las velocidades de respuesta y la entrega a los clientes.
  • El almacenamiento en caché también permite la disponibilidad de contenido, especialmente a través de CDN, y muchos otros beneficios.

En este artículo, revisaremos algunos de los mejores de código abierto (Aplicación/almacenamiento en caché de la base de datos y Servidores proxy de almacenamiento en caché) Herramientas para implementar el almacenamiento en caché del lado del servidor en Linux.

1. Rehacer

Redis (Servidor de diccionario remoto En su totalidad) es un sistema informático en memoria distribuido y de código abierto, rápido, de alto rendimiento y de alto rendimiento que puede usarse desde la mayoría de los lenguajes de programación, si no todos,.

Es un almacén de estructura de datos en memoria que funciona como un motor de almacenamiento en caché, una base de datos persistente en la memoria y un corredor de datos de mensajes. Aunque se desarrolla y prueba en Linux (la plataforma recomendada para la implementación) y OS X, Redis también funciona en otros sistemas POSIX como *BSD, sin dependencias externas.

Rehacer admite numerosas estructuras de datos como cadenas, hashes, listas, conjuntos, conjuntos ordenados, mapas de bits, transmisiones y más. Esto permite a los programadores usar una estructura de datos específica para resolver un problema específico. Admite operaciones automáticas en su estructura de datos, como agregar a una cadena, empujar los elementos a una lista, incrementando el valor de un hash, la intersección del conjunto informático y más.

Sus características clave incluyen Redis Master-Slave Replication (que es asincrónica por defecto), alta disponibilidad y conmutación por conmutación automática ofrecida utilizando Redis Sentinel, Redis Cluster (puede escalar horizontalmente agregando más nodos de clúster) y división de datos (distribuyendo datos entre múltiples Redis instancias). También presenta soporte para transacciones, secuencias de comandos LUA, una gama de opciones de persistencia y cifrado de comunicación de cliente cliente.

Al ser una base de datos en memoria pero persistente en el disco, Redis ofrece el mejor rendimiento cuando funciona mejor con un conjunto de datos en memoria. Sin embargo, puede usarlo con una base de datos en disco como MySQL, PostgreSQL y muchos más. Por ejemplo, puede tomar datos pequeños muy pesados ​​en redis y dejar otras fragmentos de los datos en una base de datos en disco.

Redis admite la seguridad de muchas maneras: uno mediante el uso de un "modo protegido"La característica para asegurar las instancias de Redis se accede desde redes externas. También es compatible con la autenticación del cliente-servidor (donde una contraseña se configura en el servidor y se proporciona en el cliente) y TLS en todos los canales de comunicación, como conexiones del cliente, enlaces de replicación, el protocolo de bus de clúster Redis y más.

Redis tiene muchos casos de uso que incluyen almacenamiento en caché de bases de datos, almacenamiento en caché de página completa, gestión de datos de sesión de usuarios, almacenamiento de respuestas de API, sistema de mensajería de publicación, cola de mensajes y más. Estos se pueden aplicar en juegos, aplicaciones de redes sociales, feeds RSS, análisis de datos en tiempo real, recomendaciones de usuarios, etc.

2. Memcached

Memcached es un sistema de almacenamiento en caché de objetos de memoria de memoria gratuitos y de código abierto, simple pero potente,. Es un almacén de valor clave en memoria para pequeñas fragmentos de datos, como resultados de llamadas de base de datos, llamadas de API o representación de páginas. Se ejecuta en sistemas operativos similares a unix, incluidos Linux y OS X y también en Microsoft Windows.

Al ser una herramienta de desarrollador, está destinado a su uso en las velocidades de impulso de las aplicaciones web dinámicas al almacenar contenido de almacenamiento (por defecto, un Menos usado recientemente (LRU) caché) reduciendo así la carga de la base de datos en disco: actúa como una memoria a corto plazo para las aplicaciones. Ofrece una API para los lenguajes de programación más populares.

Memcached admite cadenas como el único tipo de datos. Tiene una arquitectura de cliente cliente, donde la mitad de la lógica ocurre en el lado del cliente y la otra mitad en el lado del servidor. Es importante destacar que los clientes entienden cómo elegir qué servidor escribir o leer, para un elemento. Además, un cliente sabe muy bien qué hacer en caso de que no pueda conectarse a un servidor.

Aunque es un sistema de almacenamiento de caché distribuido, admite la agrupación, los servidores memcachados se desconectan entre sí (I.e ellos no son conscientes del otro). Esto significa que no hay soporte de replicación como en Redis. También entienden cómo almacenar y buscar elementos, y administran cuándo desalojar o reutilizar la memoria. Puede aumentar la memoria disponible agregando más servidores.

Admite autenticación y cifrado a través de TLS a partir de Memcached 1.5.13, pero esta característica todavía está en la fase experimental.

3. Apache encender

Apache Ignite, también es un sistema de bases de datos de valor, caché y de valor de valor de valor de nivel gratuito y de código abierto, horizontalmente escalable que proporciona potentes API de procesamiento para calcular datos distribuidos. También es una cuadrícula de datos en memoria que se puede usar en la memoria o con persistencia nativa de encendido. Se ejecuta en sistemas similares a unix como Linux y también Windows.

Cuenta con almacenamiento de varios niveles, soporte SQL completo y ÁCIDO (Atomicidad, consistencia, aislamiento, durabilidad) transacciones (compatibles solo en el nivel de API de valor clave) en múltiples nodos de clúster, procesamiento ubicado y aprendizaje automático. Admite la integración automática con cualquier base de datos de terceros, incluida cualquier RDBMS (como MySQL, PostgreSQL, Oracle Database, etc.) o tiendas nosql.

Es importante tener en cuenta que aunque Encender Funciona como un almacén de datos SQL, no es completamente una base de datos SQL. Maneja claramente restricciones e índices en comparación con las bases de datos tradicionales; Admite índices primarios y secundarios, pero solo los índices primarios se utilizan para hacer cumplir la singularidad. Además, no tiene apoyo para las limitaciones de clave extranjera.

Ignite también admite la seguridad al permitirle habilitar la autenticación en el servidor y proporcionar credenciales de usuario a los clientes. También hay soporte para la comunicación del socket SSL para proporcionar una conexión segura entre todos los nodos de Ignite.

Encender tiene muchos casos de uso que incluyen sistemas de almacenamiento en caché, aceleración de la carga de trabajo del sistema, procesamiento de datos en tiempo real y análisis. También se puede utilizar como una plataforma centrada en gráficos.

4. Servidor couchbase

CouchBase Server también es una base de datos de participación de código abierto, distribuida y de código abierto que almacena los datos como elementos en un formato de valor clave. Funciona en Linux y otros sistemas operativos como Windows y Mac OS X. Utiliza un lenguaje de consulta orientado a documentos rico en funciones llamado N1QL que proporciona poderosos servicios de consulta e indexación para admitir las operaciones de sub-milisegundos en los datos.

Sus características notables son una tienda de valor clave rápida con caché administrado, indexadores especialmente diseñados, un potente motor de consulta, arquitectura de escala (escalado multidimensional), integración de big data e SQL, seguridad completa y alta disponibilidad y alta disponibilidad.

Servidor couchbase Viene con soporte de clúster de instancias múltiples nativas, donde una herramienta de clúster Manager coordina todas las actividades de nodo y proporciona simplemente una interfaz de clúster para los clientes. Es importante destacar que puede agregar, eliminar o reemplazar nodos según sea necesario, sin tiempo de inactividad. También admite la replicación de datos en los nodos de un clúster y la replicación selectiva de datos en los centros de datos.

Implementa la seguridad a través de TLS utilizando puertos de servidor CouchBase dedicados, diferentes mecanismos de autenticación (utilizando credenciales o certificados), control de acceso basado en roles (para verificar cada usuario autenticado los roles definidos por el sistema que se les asigna), auditoría, registros y sesiones.

Sus casos de uso incluyen una interfaz de programación unificada, búsqueda de texto completo, procesamiento de consultas paralelas, administración de documentos, indexación y mucho más está diseñado específicamente para proporcionar administración de datos de baja latencia para aplicaciones interactivas de web, móviles e IoT a gran escala.

5. Hazelcast IMDG

Hazelcast IMDG (Grid de datos en memoria) es un middleware de red de datos de código abierto, ligero, rápido y extensible, que proporciona computación en memoria distribuida elásticamente escalable. Hazelcast IMDG También se ejecuta en Linux, Windows, Mac OS X y cualquier otra plataforma con Java instalado. Admite una amplia variedad de estructuras de datos flexibles y nativas de lenguaje, como mapas, set, list, multimap, ringbuffer e hiperloglog.

Avelada es igual a igual y admite escalabilidad simple, configuración del clúster (con opciones para recopilar estadísticas, monitorear a través del protocolo JMX y administrar el clúster con utilidades útiles), estructuras y eventos de datos distribuidos, porciones de datos y transacciones. También es redundante ya que mantiene la copia de seguridad de cada entrada de datos en varios miembros. Para escalar su clúster, simplemente inicie otra instancia, los datos y las copias de seguridad se equilibran automáticamente y uniformemente.

Proporciona una colección de API útiles para acceder a las CPU en su clúster para la máxima velocidad de procesamiento. También ofrece implementaciones distribuidas de una gran cantidad de interfaces amigables para los desarrolladores de Java, como mapas, cola, eCabalorservice, bloqueo y jcache.

Sus características de seguridad incluyen miembros de clúster y comprobaciones de control de la autenticación y acceso del cliente en las operaciones del cliente a través de las características de seguridad basadas en JAAS. También permite interceptar conexiones de socket y operaciones remotas ejecutadas por los clientes, cifrado de comunicación a nivel de socket entre los miembros del clúster y habilitar la comunicación SSL/TLS Socket. Pero según la documentación oficial, la mayoría de estas características de seguridad se ofrecen en la versión empresarial.

Su caso de uso más popular se distribuye en caché en memoria y almacenamiento de datos. Pero también se puede implementar para la agrupación de sesión web, reemplazo de NoSQL, procesamiento paralelo, mensajes fáciles y mucho más.

6. Crouter

McRouter es un enrutador de protocolo Memcached gratuito y de código abierto para escalar implementaciones memcached, desarrolladas y mantenidas por Facebook. Cuenta con un protocolo ASCII memcached, enrutamiento flexible, soporte de múltiples clúster, cachés de varios niveles, agrupación de conexión, esquemas de hash múltiples, enrutamiento de prefijo, piscinas replicadas, sombreado de tráfico de producción, reconfiguración en línea y monitoreo de salud de destino/falla automática.

Además, admite calentamiento de caché en frío, estadísticas ricas y comandos de depuración, calidad de servicio de flujo de eliminación confiable, valores grandes y operaciones de transmisión, y viene con soporte IPv6 y SSL.

Se está utilizando en Facebook e Instagram como un componente central de la infraestructura de caché, para manejar casi 5 mil millones de solicitudes por segundo en el pico.

7. Caché de barniz

Varnic Cache es un acelerador de aplicaciones web flexible, moderno y multipropósito que se encuentra entre los clientes web y un servidor de origen. Se ejecuta en todas las plataformas modernas de Linux, FreeBSD y Solaris (solo x86). Es un excelente motor de almacenamiento en caché y un acelerador de contenido que puede implementar frente a un servidor web como NGINX, Apache y muchos otros, para escuchar en el puerto HTTP predeterminado para recibir y reenviar solicitudes del cliente al servidor web y entregar la web Respuesta de servidores al cliente.

Mientras actúa como un hombre medio entre los clientes y los servidores de origen, Caché de barniz Ofrece varios beneficios, el elemento se almacena en caché el contenido web en la memoria para aliviar la carga de su servidor web y mejorar las velocidades de entrega a los clientes.

Después de recibir una solicitud HTTP de un cliente, la reenvía al servidor web de back -end. Una vez que el servidor web responde, barniz almacena en caché el contenido en la memoria y ofrece la respuesta al cliente. Cuando el cliente solicita el mismo contenido, Varnish lo servirá desde la respuesta de la aplicación de refuerzo de caché. Si no puede servir contenido del caché, la solicitud se reenvía al backend y la respuesta se almacena en caché y se entrega al cliente.

Barniz características VCL (Lenguaje de configuración de barniz - un lenguaje flexible específico del dominio) utilizado para configurar cómo se manejan las solicitudes y más, Módulos de barniz (VMODS) que son extensiones para el caché de barniz.

En cuanto a la seguridad, el caché de barniz admite el registro, la inspección de solicitudes, el estrangulamiento, la autenticación y la autorización a través de VMODS, Pero carece de soporte nativo para SSL/TLS. Puedes habilitar Https Para el caché de barniz usando un proxy SSL/TLS como Enganche o nginx.

También puede usar el caché de barniz como firewall de aplicación web, defensor de ataque DDoS, protector de hotinglinking, equilibrador de carga, punto de integración, puerta de enlace de inicio de sesión único, mecanismo de política de autenticación y autorización, solución rápida para backends inestables y enrutador de solicitud HTTP.

8. Proxy de almacenamiento en caché

Otro proxy de código abierto y de código abierto, excepcional y ampliamente utilizado, y la solución de almacenamiento en caché para Linux es calamar. Es un software de servidor de caché de proxy web rico en funciones que proporciona servicios proxy y caché para protocolos de red populares que incluyen HTTP, HTTPS y FTP. También se ejecuta en otras plataformas UNIX y Windows.

Al igual que Caché de barniz, Recibe solicitudes de los clientes y los pasa a servidores de backend especificados. Cuando el servidor de backend responde, almacena una copia del contenido en un caché y lo pasa al cliente. Las solicitudes futuras de el mismo contenido se atenderán desde el caché, lo que dará como resultado una entrega de contenido más rápida al cliente. Por lo tanto, optimiza el flujo de datos entre el cliente y el servidor para mejorar el rendimiento y los cachores se usan contenido frecuentemente para reducir el tráfico de red y guardar el ancho de banda.

Squid viene con características como distribuir la carga sobre las jerarquías de intercomunicación de los servidores proxy, produciendo datos sobre patrones de uso web (e.g estadísticas sobre los sitios más visitados), le permite analizar, capturar, bloquear, reemplazar o modificar los mensajes que se están proxyando.

También admite características de seguridad como control de acceso rico, autorización y autenticación, soporte SSL/TLS y registro de actividades.

9. Nginx

Nginx (pronunciado como Motor-x) es una solución consolidada de código abierto, de alto rendimiento, con todas las funciones y muy popular para configurar la infraestructura web. Es un servidor HTTP, un servidor proxy inverso, un servidor proxy de correo y un servidor proxy TCP/UDP genérico.

Nginx Ofrece capacidades básicas de almacenamiento en caché donde el contenido en caché se almacena en un caché persistente en el disco. La parte fascinante sobre el almacenamiento en caché del contenido en Nginx es que se puede configurar para entregar contenido obsoleto desde su caché cuando no puede obtener contenido nuevo de los servidores de origen.

NGINX ofrece una multitud de características de seguridad para asegurar sus sistemas web, estos incluyen la terminación de SSL, restringir el acceso con la autenticación básica HTTP, la autenticación basada en el resultado de la subcestimación, la autenticación JWT, restringir el acceso a los recursos de HTTP proxizados, restringir el acceso por ubicación geográfica, y mucho más.

Se implementa comúnmente como proxy inverso, equilibrador de carga, terminator SSL/puerta de enlace de seguridad, acelerador de aplicaciones/caché de contenido y puerta de enlace API en una pila de aplicaciones. También se usa para transmitir medios.

10. Servidor de tráfico de Apache

Por último, pero no menos importante, tenemos el servidor de tráfico Apache, un servidor proxy de almacenamiento de código abierto, rápido, escalable y extensible con soporte para HTTP/1.1 y http/2.0. Está diseñado para mejorar la eficiencia y el rendimiento de la red al almacenar en caché el contenido con frecuencia en el borde de una red, para empresas, ISP (proveedores de servidores de Internet), proveedores de backbone y más.

Admite la proxy del tráfico HTTP/HTTPS de avance y inversa. También se puede configurar para ejecutarse en uno o ambos modos simultáneamente. Cuenta con almacenamiento en caché persistente, API de complementos; Soporte para ICP (protocolo de caché de Internet), ESI (el lado del borde incluye); Mantener alive y más.

En términos de seguridad, el servidor de tráfico admite controlar el acceso al cliente al permitirle configurar clientes a los que se les permite usar el caché proxy, la terminación SSL tanto para las conexiones entre los clientes como en sí mismo, y entre sí y el servidor de origen. También admite autenticación y autorización básica a través de un complemento, registro (de cada solicitud que recibe y cada error que detecta) y monitoreo.

El servidor de tráfico se puede utilizar como caché proxy web, proxy reenviado, proxy inverso, proxy transparente, equilibrador de carga o en una jerarquía de caché.

Observaciones finales

Almacenamiento en caché es una de las tecnologías de entrega de contenido web más beneficiosas y establecidas que se diseñan principalmente para aumentar la velocidad de sitios web o aplicaciones. Ayuda a reducir la carga de su servidor, la latencia y el ancho de banda de la red porque los datos en caché se sirven a los clientes, lo que mejora el tiempo de respuesta de la aplicación y las velocidades de entrega a los clientes.

En este artículo, revisamos las mejores herramientas de almacenamiento de almacenamiento de código abierto para usar en sistemas Linux. Si conoce otras herramientas de almacenamiento en caché de código abierto que no se enumeran aquí, compártalas con nosotros a través del formulario de comentarios a continuación. También puede compartir sus pensamientos sobre este artículo con nosotros.