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