内存缓存VS.分布式系统中的集中式缓存 [英] In-memory cache VS. centralized cache in a distributed system

查看:139
本文介绍了内存缓存VS.分布式系统中的集中式缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们目前正在寻找最合适的解决方案,用于访问分布式系统上的关键数据,并且我们正在考虑是否使用内存缓存,而不是集中式缓存.

We're currently looking for the most suitable solution for accessing critical data on a distributed system, and we're considering whether to use in memory caching, versus a centralized cache.

一些有关我们希望存储/访问的数据的信息:

Some information about the data we wish to store/access:

  • 数据量很小
  • 数据非常冷;意味着它几乎没有变化,只有在人类改变了我们的后台系统中的某些东西时才会发生变化
  • 更改后必须保持最新(延迟几百毫秒即可)
  • 我们应用程序的关键路径,要求非常高的SLA(可靠性和响应时间(访问时间不超过20ms)
  • 经常读取数据(每秒最多读取数千次)

我们的观察方式如下-

在内存缓存中

优点:

  • 比网络访问+序列化更快
  • 在分发方面具有更高的可靠性(如果一个实例死亡,则其他实例上的数据仍然存在)

缺点:

  • 编码和维护要复杂得多
  • 发生更改后需要通知实例,并且需要分别更新每个实例+需要在每个服务器启动时加载数据
  • 增加了数据不一致的风险(一个实例具有与其他实例不同或过时的数据)

集中式缓存

为了便于讨论,我们考虑使用Redis.

For the sake of conversation, we've considered using Redis.

优点:

  • 易于维护
  • 非常可靠,我们在分布式系统中使用Redis有很多经验
  • 只有一个地方可以更新
  • 确保数据一致性

缺点:

  • 单点故障(对我们来说这是一个很大的问题);即使我们采用这种解决方案,我们也会部署一个集群
  • 如果出于某种原因刷新了缓存会发生什么情况

推荐答案

在使用Redis进行集中式缓存时,我没有发现任何问题.

I don't find any problem in going for a centralized cache using Redis.

  1. 无论如何,您都将具有集群设置,因此如果主服务器失败,则从服务器将占据该位置.
  2. 如果由于某种原因刷新了缓存,则必须构建缓存,同时请求将从主源(DB)获取数据
  3. 您可以启用持久性并加载持久化在磁盘中的数据,并且可以在几秒钟内获取数据(即插即用).如果您认为不一致,请按照以下方法进行.

即使高速缓存不可用,系统也应该可以工作(显然延迟了时间).意思是应用逻辑应该检查redis中的缓存,如果缓存不存在或者系统本身不可用,它应该从dB中获取值,然后将其填充到redis中,然后再提供给客户端.

Even if cache is not available system should work (with delayed time obviously). Meaning app logic should check for cache in redis if it's not there or system itself is not available it should get the value from dB and then populate it to redis and then serve to the client.

通过这种方式,即使您的Redis主服务器和从服务器都关闭了,您的应用程序也可以正常运行,但会延迟.而且您的缓存也会保持最新状态.

In this way even if your redis master and slave are down your application will work fine but with a delay. And also your cache will be up to date.

希望这会有所帮助.

这篇关于内存缓存VS.分布式系统中的集中式缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆