Sirius是用 Scala 为 JVM 编写的“用于管理应用程序引用数据的分布式系统库”。 Sirius 的目标是将数据的完整副本分发到每个节点。
我注意到enqueueGet
方法用于处理 GET 请求。这涉及到在处理所有 GET 请求之前对其进行序列化。但是,我想尝试不序列化所有 GET 以避免读取延迟;有什么办法可以避免打电话 enqueueGet
?如果是,我该怎么做?
Sirius 库的设计使每个节点都拥有完整的数据副本。该数据存储在内存中,并且可以直接在应用程序中使用。根据documentation enqueueGet 操作会带来不必要的开销。 enqueueGet 操作将尽快序列化要执行的 get 请求,通常在当前操作完成后立即执行。这是本地序列化,它不经过 Paxos。使用 enqueueGet 可以防止应用程序执行并发获取,并且还可以防止在数据更新时执行获取。
因此您需要注意两件事:
- 您的应用程序需要能够自行处理并发 GET 操作。这可能是也可能不是问题,具体取决于数据和应用程序的性质。
- 您的应用程序需要编写,以便与 PUT 或 DELETE 同时执行的 GET 不会看到部分更新的项目。您的底层数据结构不应允许部分更新,否则您将需要容忍 GET 部分更新。
我是一名优秀的程序员,十分优秀!