适用于Linux的顶级开源缓存工具有哪些

62次阅读
没有评论

共计 6614 个字符,预计需要花费 17 分钟才能阅读完成。

本篇内容主要讲解“适用于 Linux 的顶级开源缓存工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“适用于 Linux 的顶级开源缓存工具有哪些”吧!

什么是缓存或内容缓存?

缓存(或称为内容缓存)是一种广泛使用的技术,它将数据的副本存储在临时存储位置(也称为缓存)中,因此与从原始存储中检索数据相比,可以轻松,快速地访问数据。根据缓存的类型和目的,存储在缓存中的数据可能包括文件或文件片段(例如 HTML 文件,脚本,图像,文档等),数据库操作或记录,API 调用,DNS 记录等。

缓存可以采用硬件或软件的形式。基于软件的缓存(这是本文的重点)可以在应用程序堆栈的不同层上实现。

缓存可以在客户端侧被施加(或在应用程序展现层)中,例如,浏览器高速缓存或高速缓存的应用程序(或离线模式)。大多数(如果不是全部)现代浏览器都附带有 HTTP 缓存的实现。当您访问 Web 应用程序以使您能够查看网站或应用程序上的最新数据或内容,而不是浏览器使用本地存储的内容的旧副本时,您可能已经听说过流行的短语“清除缓存”。

客户端缓存的另一个示例是 DNS 缓存,它发生在操作系统(OS)级别。它是有关操作系统或 Web 浏览器以前的 DNS 查找信息的临时存储。

也可以通过代理在 LAN 或 WAN 中的网络级别上实现缓存。这种缓存的一个常见示例是 CDN(内容交付网络),它是 Web 代理服务器的全局分布式网络。

第三,您还可以在源服务器或后端服务器上实现缓存。服务器级缓存有不同形式,包括:

Web 服务器缓存(用于缓存图像,文档,脚本等)。

应用程序缓存或记忆(用于从磁盘读取文件,从其他服务或进程读取数据或从 API 请求数据等)。

数据库缓存(提供对常用数据(例如请求的数据库行,查询结果和其他操作)的内存访问)。

请注意,缓存数据可以存储在任何存储系统中,包括数据库,文件,系统内存等,但是应该是比主要源更快的介质。在这方面,内存缓存是最有效和最常用的缓存形式。

为什么要使用缓存?

缓存具有许多优点,包括:

在数据库级别,它将缓存数据的读取性能提高到微秒。您还可以使用回写式高速缓存来提高写入性能,在这种情况下,数据以指定的间隔写入内存中,然后再写入磁盘或主存储中。但是它的数据完整性方面可能会带来灾难性的影响。例如,当系统在即将数据提交到主存储之前崩溃时。在应用程序级别,缓存可以在应用程序进程本身中存储频繁读取的数据,从而将数据查找时间从几秒钟减少到几微秒,尤其是在网络上。考虑到整个应用程序和服务器的性能,缓存有助于减少服务器的负载,延迟和网络带宽,因为缓存的数据被提供给客户端,从而提高了响应时间和向客户端的交付速度。缓存还允许内容可用性(尤其是通过 CDN),以及许多其他好处。

1. Redis

Redis(完整的 REmote DIctionary Server)是一个免费,开源,快速,高性能,灵活的分布式内存计算系统,可以在大多数(即使不是全部)编程语言中使用。

它是内存中的数据结构存储,用作缓存引擎,内存中的持久磁盘数据库和消息代理。尽管 Redis 是在 Linux(推荐的部署平台)和 OS X 上进行开发和测试的,但它也可以在其他 POSIX 系统(例如 * BSD)中运行,而无需任何外部依赖。

Redis 支持许多数据结构,例如字符串,哈希,列表,集合,排序集合,位图,流等。这使程序员可以使用特定的数据结构来解决特定的问题。它支持对其数据结构进行自动操作,例如追加到字符串,将元素推送到列表,增加哈希值,计算集合交集等。

它的主要功能包括 Redis 主从复制(默认情况下是异步的),使用 Redis Sentinel 提供的高可用性和自动故障转移,Redis 集群(您可以通过添加更多集群节点来水平扩展)和数据分区(在多个 Redis 实例之间分配数据))。它还具有对事务,Lua 脚本,一系列持久性选项以及客户端 - 服务器通信加密的支持。

作为一个内存中但持久的磁盘数据库,Redis 在与内存中数据集配合使用时表现最佳。但是,您可以将其与磁盘数据库一起使用,例如 MySQL,PostgreSQL 等。例如,您可以在 Redis 中获取大量写操作的小数据,并将其他数据块保留在磁盘数据库中。

Redis 通过多种方式支持安全性:一种是使用“保护模式”功能来保护 Redis 实例不被外部网络访问。它还支持客户端 - 服务器身份验证(在服务器中配置密码并在客户端中提供密码)以及所有通信通道(例如客户端连接,复制链接和 Redis Cluster 总线协议等)上的 TLS。

Redis 有很多用例,包括数据库缓存,全页缓存,用户会话数据管理,API 响应存储,发布 / 订阅消息传递系统,消息队列等等。这些可以应用于游戏,社交网络应用程序,RSS 提要,实时数据分析,用户推荐等。

2. Memcached

Memcached 是一个免费,开源,简单但功能强大的分布式内存对象缓存系统。它是内存中的键值存储区,用于存储少量数据,例如数据库调用,API 调用或页面呈现的结果。它可以在类似 Unix 的操作系统(包括 Linux 和 OS X)上运行,也可以在 Microsoft Windows 上运行。

作为开发人员工具,它旨在通过缓存内容(默认情况下为最近最少使用(LRU)缓存)来提高动态 Web 应用程序的速度,从而减少磁盘上的数据库负载–它充当以下任务的短期内存应用程序。它提供了最流行的编程语言的 API。

Memcached 支持将字符串作为唯一的数据类型。它具有客户端 - 服务器体系结构,其中一半逻辑发生在客户端,另一半发生在服务器端。重要的是,客户了解如何为项目选择要写入或读取的服务器。此外,如果客户端无法连接到服务器,则客户端非常了解该怎么办。

尽管它是一个分布式缓存系统,因此支持群集,但 Memcached 服务器彼此断开连接(即,它们彼此之间不知道)。这意味着没有像 Redis 这样的复制支持。他们还了解如何存储和获取项目,管理何时驱逐或重新使用内存。您可以通过添加更多服务器来增加可用内存。

从 Memcached 1.5.13 开始,它支持通过 TLS 进行身份验证和加密,但是此功能仍处于试验阶段。

3. Apache Ignite

Apache Ignite,也是一个免费的开放源代码,可水平扩展的分布式内存中键值存储,高速缓存和多模型数据库系统,它提供了强大的处理 API,可用于在分布式数据上进行计算。它也是一个内存中的数据网格,可以在内存中使用,也可以与 Ignite 本机持久性一起使用。它可以在类似 UNIX 的系统(例如 Linux 和 Windows)上运行。

它具有多层存储,完整的 SQL 支持以及跨多个集群节点的 ACID(原子性,一致性,隔离性,耐久性)事务(仅在键值 API 级别上受支持),共处一地处理和机器学习。它支持与任何第三方数据库(包括任何 RDBMS(例如 MySQL,PostgreSQL,Oracle 数据库等)或 NoSQL 存储)的自动集成。

重要的是要注意,尽管 Ignite 用作 SQL 数据存储,但它并不完全是 SQL 数据库。与传统数据库相比,它可以明显地处理约束和索引。它支持主索引和辅助索引,但是只有主索引用于强制唯一性。此外,它不支持外键约束。

Ignite 还通过允许您在服务器上启用身份验证并在客户端上提供用户凭据来支持安全性。还支持 SSL 套接字通信,以在所有 Ignite 节点之间提供安全连接。

Ignite 有许多用例,包括缓存系统,系统工作负载加速,实时数据处理和分析。它也可以用作以图形为中心的平台。

4.Couchbase Server

Couchbase Server 还是一个开放源代码,分布式,NoSQL 面向文档的参与数据库,以键 - 值格式将数据存储为项目。它可以在 Linux 以及 Windows 和 Mac OS X 等其他操作系统上运行。它使用功能丰富的面向文档的查询语言 N1QL,该语言提供了强大的查询和索引服务,以支持对数据的亚毫秒级操作。

它的显着功能是具有托管缓存的快速键值存储,专用索引器,强大的查询引擎,横向扩展体系结构(多维扩展),大数据和 SQL 集成,全栈安全性和高可用性。

Couchbase Server 附带了本机多实例集群支持,其中集群管理器工具协调所有节点活动,并仅向客户端提供集群范围的接口。重要的是,您可以根据需要添加,删除或替换节点,而无需停机。它还支持跨集群节点的数据复制,跨数据中心的选择性数据复制。

它使用专用的 Couchbase 服务器端口,不同的身份验证机制(使用凭据或证书),基于角色的访问控制(以检查每个经过身份验证的用户来检查分配给他们的系统定义的角色),审计,日志和会话,通过 TLS 实现安全性。

它的用例包括统一的编程界面,全文搜索,并行查询处理,文档管理和索引等等。它是专门为大型交互式 Web,移动和 IoT 应用程序提供低延迟数据管理而设计的。

5.Hazelcast IMDG

Hazelcast IMDG(内存中数据网格)是一种开源,轻量级,快速且可扩展的内存中数据网格中间件,可提供弹性可扩展的分布式内存中计算。Hazelcast IMDG 还可以在 Linux,Windows 和 Mac OS X 以及安装了 Java 的任何其他平台上运行。它支持各种灵活的语言本机数据结构,例如 Map,Set,List,MultiMap,RingBuffer 和 HyperLogLog。

Hazelcast 是对等的,支持简单的可伸缩性,集群设置(具有用于收集统计信息,通过 JMX 协议进行监视以及使用有用的实用程序管理集群的选项),分布式数据结构和事件,数据分配和事务的功能。这也是冗余的,因为它可以将每个数据条目的备份保留在多个成员上。要扩展群集,只需启动另一个实例,数据和备份就会自动且均匀地平衡。

它提供了一组有用的 API 来访问群集中的 CPU,以实现最大处理速度。它还提供了来自 Java 的大量开发人员友好接口的分布式实现,例如 Map,Queue,ExecutorService,Lock 和 JCache。

它的安全功能包括群集成员和客户端身份验证,以及通过基于 JAAS 的安全功能对客户端操作进行访问控制检查。它还允许拦截客户端执行的套接字连接和远程操作,集群成员之间的套接字级通信加密以及启用 SSL / TLS 套接字通信。但是根据官方文档,其中大多数安全功能都在企业版中提供。

它最流行的用例是分布式内存中缓存和数据存储。但是,它也可以部署用于 Web 会话群集,NoSQL 替换,并行处理,简单的消息传递等等。

6.Mcrouter

Mcrouter 是一个免费的开源 Memcached 协议路由器,用于扩展由 Facebook 开发和维护的 Memcached 部署。它具有 Memcached ASCII 协议,灵活的路由,多集群支持,多级缓存,连接池,多种哈希方案,前缀路由,复制池,生产流量影子,在线重新配置以及目标运行状况监视 / 自动故障转移的功能。

此外,它支持冷缓存预热,丰富的统计信息和调试命令,可靠的删除流服务质量,较大的值,广播操作,并具有 IPv6 和 SSL 支持。

它已在 Facebook 和 Instagram 中用作缓存基础结构的核心组件,高峰时每秒处理近 50 亿个请求。

7.Varnish Cache

Varnish Cache 是位于 Web 客户端和原始服务器之间的开源灵活,现代且多功能的 Web 应用程序加速器。它可以在所有现代 Linux,FreeBSD 和 Solaris(仅 x86)平台上运行。它是一个出色的缓存引擎和内容加速器,您可以将其部署在 Web 服务器(如 NGINX,Apache 等)的前面,以侦听默认的 HTTP 端口以接收客户端请求并将其转发到 Web 服务器,并交付 Web 服务器响应客户端。

在客户端和原始服务器之间充当中间人的同时,Varnish Cache 提供了许多好处,其基本要素是将 Web 内容缓存在内存中,以减轻 Web 服务器的负载并提高向客户端的交付速度。

从客户端收到 HTTP 请求后,它将请求转发到后端 Web 服务器。Web 服务器响应后,Varnish 将内容缓存在内存中,并将响应传递给客户端。当客户端请求相同的内容时,Varnish 将从缓存提升应用程序响应中为其提供服务。如果它不能提供缓存中的内容,则将请求转发到后端,然后将响应缓存并传递给客户端。

Varnish 具有 VCL(Varnish 配置语言,一种灵活的域特定语言),用于配置请求的处理方式以及 Varnish 模块(VMODS),它们是 Varnish Cache 的扩展。

在安全方面,Varnish Cache 支持通过 VMODS 进行日志记录,请求检查以及限制,身份验证和授权,但它缺乏对 SSL / TLS 的本机支持。您可以使用 Hitch 或 NGINX 等 SSL / TLS 代理为 Varnish Cache 启用 HTTPS。

您还可以将 Varnish Cache 用作 Web 应用程序防火墙,DDoS 攻击防御程序,热链接保护程序,负载平衡器,集成点,单点登录网关,身份验证和授权策略机制,用于不稳定后端的快速修复程序以及 HTTP 请求路由器。

8.Squid Caching Proxy

Squid 是另一个针对 Linux 的免费,开源,杰出且广泛使用的代理和缓存解决方案。它是功能丰富的 Web 代理缓存服务器软件,可为流行的网络协议(包括 HTTP,HTTPS 和 FTP)提供代理和缓存服务。它还可以在其他 UNIX 平台和 Windows 上运行。

就像 Varnish Cache 一样,它接收来自客户端的请求并将它们传递到指定的后端服务器。后端服务器响应时,会将内容的副本存储在缓存中,然后将其传递给客户端。将来对相同内容的请求将从缓存中得到处理,从而将内容更快地传递到客户端。因此,它可以优化客户端和服务器之间的数据流以提高性能,并缓存常用内容以减少网络流量并节省带宽。

Squid 具有一些功能,例如在代理服务器的相互通信的层次结构上分配负载,生成有关 Web 使用模式的数据(例如,有关访问量最大的站点的统计信息),使您能够分析,捕获,阻止,替换或修改正在代理的消息。

它还支持安全功能,例如丰富的访问控制,授权和身份验证,SSL / TLS 支持以及活动日志记录。

9.NGINX

NGINX(发音为 Engine-X)是一种开放源代码,高性能,功能齐全且非常流行的整合解决方案,用于设置 Web 基础架构。它是 HTTP 服务器,反向代理服务器,邮件代理服务器和通用 TCP / UDP 代理服务器。

NGINX 提供基本的缓存功能,其中缓存的内容存储在磁盘上的持久性缓存中。NGINX 中有关内容缓存的有趣之处在于,当它无法从原始服务器获取新鲜内容时,可以将其配置为从其缓存中传递陈旧的内容。

NGINX 提供了多种安全功能来保护您的 Web 系统,这些功能包括 SSL 终止,使用 HTTP 基本身份验证限制访问,基于子请求结果的身份验证,JWT 身份验证,限制对代理 HTTP 资源的访问,按地理位置限制的访问,以及更多。

它通常被部署为应用程序堆栈中的反向代理,负载平衡器,SSL 终结器 / 安全网关,应用程序加速器 / 内容缓存和 API 网关。它还用于流媒体。

10. Apache Traffic Server

最后但并非最不重要的一点是,我们有 Apache Traffic Server,这是一种开源,快速,可扩展且可扩展的缓存代理服务器,支持 HTTP/1.1 和 HTTP/2.0。它旨在通过为企业,ISP(Internet 服务器提供商),骨干网提供商等在网络边缘缓存经常访问的内容来提高网络效率和性能。

它支持 HTTP/HTTPS 通信的正向和反向代理。它也可以配置为同时以一种或两种模式运行。它具有持久性缓存,插件 API;支持 ICP(Internet 缓存协议),ESI(包括边);Keep-Alive 等。

在安全性方面,Traffic Server 支持控制客户端访问,方法是允许您配置允许使用代理缓存的客户端,客户端与自身之间以及自身与原始服务器之间的连接的 SSL 终止。它还通过插件支持身份验证和基本授权,记录(接收到的每个请求和检测到的每个错误)以及进行监视。

Traffic Server 可以用作 Web 代理缓存,正向代理,反向代理,透明代理,负载均衡器或在缓存层次结构中使用。

到此,相信大家对“适用于 Linux 的顶级开源缓存工具有哪些”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-17发表,共计6614字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)