performance - 从 Cassandra 填充缓存的正确方法
问题描述
我想在我的应用程序中有一个内存缓存层。要使用项目填充缓存,我必须从大型 Cassandra 表中获取数据。不推荐全选,因为不使用分区键,读操作很慢。在此之前,我可以使用必须再次读取的其他 Cassandra 表“预测”分区键,但相对而言它是一个较小的卷表。从用户表中读取数据并创建可能存在或不存在于初始表中的潜在分区键(userX,userY)列表之后。使用该列表尝试通过使用每个潜在键执行选择查询来填充缓存。这听起来也不是一个好主意。
那么问题来了?如何使用 Cassandra DB 中的数据正确填充缓存层?
解决方案
第二个选项是预热或预加载缓存的首选。
来自多个客户端/应用程序实例的单分区异步查询比进行全表扫描要好得多。来自大量客户端的异步查询将负载有效地分配到集群中的所有节点,这就是它们性能更好的原因。
应该说,如果您的数据模型正确,并且您的集群规模正确,您可以实现个位数毫秒的延迟。我与许多大型组织合作,他们的 6-8 毫秒读取具有 95% 的 SLA。干杯!
推荐阅读
- google-calendar-api - Google 日历服务帐户和共享资源日历(例如房间):仅限忙时访问
- java - 我们可以序列化 java Socket 对象以通过 Kafka 队列发送吗
- sql - 如何将三个最相似但又有些不同的表合并为一张表?
- java - 在 ArrayList 中存储资源的路径
- python - 减去日期时间对象时如何修复整数溢出错误(使用 Dask)
- android - Dagger 2.21+ 无法在 android 中生成 UnitTest 组件
- perl - Perlbrew 开关在 docker build 上失败
- android - React Native 中的推送通知
- java - 在设计下载文件的系统时如何确保身份验证?
- node.js - 有人可以解释一下路由器在nodejs中是如何工作的吗?