本文来自开源云中文社区。
分布式缓存是基于云的应用程序的一个重要方面,适用于内部部署、公共或混合云环境。它有助于增量扩展,允许缓存增长并合并数据增长。在这篇文章中,我们将探讨云上的分布式缓存,以及为什么它对有高数据量和负载的环境很有用。这篇文章将涵盖:
传统缓存的挑战;
什么是分布式缓存;
云上分布式缓存的好处;
推荐的分布式缓存数据库工具;
在云上部署分布式缓存的方法;
传统缓存挑战
传统的缓存服务器通常以有限的存储和CPU速度部署。这些缓存基础设施通常驻留在内部的数据中心上。也就是非分布式缓存服务器。传统的分布式缓存带来了许多挑战,例如:
非云节点服务器上难以扩展的缓存存储和CPU速度。
管理基础设施和未使用的硬件资源的高运维成本。
传统的分布式缓存不是容器化的。这就是为什么它不具备可扩展性、弹性和自我管理能力。
如果客户端负载高于实际负载,服务器可能会崩溃。
与多个数据中心服务器进行程序同步期间数据过时的可能性。
服务器和各个数据中心之间的数据同步慢。
什么是分布式缓存
缓存是一种将数据状态存储在主存储之外并将其存储在高速内存中以提高性能的技术。在微服务环境中,所有应用程序都使用它们的多个实例部署在混合云上的各种服务器/容器中。在云上的多集群Kubernetes环境中需要一个缓存源来集中保存数据并将其复制到自己的缓存集群上。它将用作在分布式环境中缓存数据的单点存储。
云上分布式缓存的好处
定期缓存经常使用的读取REST API响应可确保更快的API读取性能。
通过直接从分布式缓存数据库访问缓存数据来减少数据库网络调用。
通过在集群中的各种缓存数据库中维护多个数据副本来实现弹性和容错。
通过根据负载或客户端请求自动缩放缓存数据库来实现高可用性。
存储会话秘密令牌,例如JSON Web Token(ID/JWT),用于微服务应用程序容器的身份验证和授权。
如果将其用作高负载关键任务应用程序的专用数据库解决方案,则可以在内存中进行更快的读写访问。
避免对持久数据库的不必要的往返数据调用。
可自动扩展的云基础设施部署。
分布式缓存库/解决方案的容器化。
从任何同步连接的缓存数据中心一致地读取数据。
缓存数据的最小到无中断高可用性。
缓存数据服务器之间更快的数据同步。
推荐的分布式缓存数据库工具
以下是流行的行业认可的缓存服务器:
Redis
Memcache
GemFire
Hazelcast databases
Redis:它是最流行的分布式缓存服务之一,它支持不同的数据结构。它是一种开源的内存内数据存储,被数百万开发人员用作数据库、缓存、流引擎和消息代理。它还有一个企业版。它可以部署在私有云、公共云和混合云等容器中,并在不同的数据中心之间提供一致和更快的数据同步。
Hazelcast:Hazelcast是一个分布式计算和存储平台,用于针对事件流和传统数据源进行一致的低延迟查询、聚合和有状态计算。它允许你快速构建资源高效的实时应用程序。你可以在任何规模上部署它,从小型边缘设备到大型云实例集群。Hazelcast节点集群共享数据存储和计算负载,可以动态扩展和缩减。当你向集群添加新节点时,数据会自动在集群中重新平衡。当前处于运行状态的计算任务(作业)对它们的状态进行快照,并通过处理保证进行扩展。
Memcached:它是一个开源、高性能、分布式的内存对象缓存系统。它本质上是通用的,但旨在通过减轻数据库负载来加速动态Web应用程序。Memcached是一种内存键值存储,用于存储来自数据库调用、API调用或页面渲染结果的任意数据(字符串、对象)的小块。Memcached简单但功能强大。其简单的设计促进了简单、快速的部署和开发。它解决了许多数据缓存问题,其API支持各种常用语言。
GemFire:它提供分布式内存内数据网格缓存,由Apache Geode开源提供支持。它按需扩展数据服务以支持高性能。它是一种键值存储,可以快速执行读写操作。它提供高度可用的并行消息队列、连续可用性和事件驱动的架构,可在不停机的情况下动态扩展。
它提供多站点复制。随着数据大小要求的增加以支持高性能的实时应用程序,它可以轻松线性扩展。应用程序获得对数据访问请求的低延迟响应,并始终返回新数据。它维护跨分布式节点的事务完整性,并支持应用程序的高并发、低延迟数据操作。它还提供节点故障转移和跨数据中心或多数据中心复制,以确保应用程序具有弹性,无论是在内部还是在云中。
在混合云上部署分布式缓存的方法
以下是部署和设置分布式缓存的推荐方法,无论是在公共云还是混合云上:
——传统VM实例上的开源分布式缓存。
——Kubernetes容器上的开源分布式缓存。笔者建议在Kubernetes容器上部署以获得高可用性、弹性、可扩展性和更快的性能。
——在VM和容器上部署企业商业现成的分布式缓存。笔者会推荐企业版,因为它们会提供额外的功能和支持。
——公共云为Redis、Hazelcast和Memcache等开源和企业工具提供分布式缓存托管服务。
——缓存服务器可以部署在多个源上,例如本地和公共云、公共服务器或不同可用区中的仅一台公共服务器。
结论
分布式缓存现在是混合云上分布式部署环境中分布式微服务应用程序的事实上的要求。它解决了重要用例中的问题,例如在Web浏览器上禁用cookie时维护用户会话、提高API查询读取性能、避免相同类型请求的操作成本和数据库命中、管理用于身份验证和授权的秘密令牌等。
分布式缓存自动同步混合云上的数据,无需任何手动操作,始终提供最新数据。笔者推荐行业标准的分布式缓存解决方案Redis、Hazelcast、Memcached和GemFire。我们需要根据用例在云端选择更好的分布式缓存技术。