首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哈泽尔广播的分布式缓存如何比对数据库的调用更快?

哈泽尔广播的分布式缓存如何比对数据库的调用更快?
EN

Stack Overflow用户
提问于 2016-01-07 20:07:35
回答 1查看 3.3K关注 0票数 3

假设有两个服务器正在使用Hazelcast分布式缓存。如果在服务器#1上,我将2项存储在该分布式缓存中的映射中。其中一项将保存在本地备份中,另一项将存储在其他服务器Hazelcast实例的备份中(如果不正确,请更正我)。

我的问题是,如果我试图从缓存中检索第二项(存储在服务器#2上的备份中),就会发出TCP调用来检索该数据。这怎么比调用DB更快呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-08 06:58:06

首先,让我纠正在Hazelcast上存储数据的方式。

Hazelcast使用基于一致散列的分布算法,这意味着哈希算法始终对相同的输入返回相同的输出。这种分布不是100%相等的分布,而是对高数量的元素相当好和成本效益。也就是说,在最坏的情况下,并不意味着每个节点上都有一个元素。

默认情况下,Hazelcast也会继续备份,这意味着每个节点都有两个元素(在一个2节点的设置中),要么拥有数据,要么作为失败案例的备份。您可以使备份具有可读性(从读到备份=真),但是这会给读取陈旧数据带来很小的机会(所有者之间的时间已经更新,但备份还没有)。

此外,默认情况下,Hazelcast中的数据也是以序列化形式存储的,这意味着二进制流表示。

那么,所有这些怎么能比到数据库的TCP连接更快呢?

答案有两个:

  1. 哈泽尔卡斯特是一个关键的价值商店。因此,它被优化用于按键请求数据,并尽可能快地以该值进行应答。
  2. 数据已经被序列化,因此字节流只是被“粉碎”到套接字中,而没有任何真正的工作要做。

另一方面,您的数据库必须真正从表中查询数据。保存信息的内部数据结构是针对复杂查询进行优化的,而不是针对密钥基础进行访问的。但是,这一点很重要,目前的数据库实现优化了内部(在RAM中),以实现快速访问。因此,这种效果只会发生在高负载下服务的数据库。缓存(本地缓存或分布式缓存)的设计是为了加快缓慢的操作,结果是:如果数据库速度太快,您将看不到任何好处。

无论如何,设计一个期望以指数级增长的系统时,您应该从一开始就考虑缓存。关于缓存和幕后想法的全面介绍可以在缓存白皮书中获得,我不久前写的一篇文章是:https://dzone.com/articles/caching-why-you-should-care

我希望这回答你的问题:-)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34664205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档