首页 文章

Apache Ignite Locks用于同步网格中的任意计算

提问于
浏览
0

我有一个简单的问题,我无法在Apache Ignite文档中找到明确的答案 .

我看到Apache Ignite中有一个API来创建显式锁 . 我知道这些锁用于写缓存条目,这是隐式完成的 .

但是,我(我是否应该)能够在我的网格中显式创建一个Lock来同步计算某些任意代码 . 这就是我在想的事情:

  • 请求进入我的API .

  • 我尝试在Ignite缓存上输入锁定

  • 如果我可以输入锁,我会进行一些计算(这应该只在我的一个API实例上进行,在任何给定时间)

  • 如果我无法进入锁定,则返回409错误代码(重复请求)

  • 我退出了锁

这样做有潜在的警告吗?我应该留意潜在的陷阱吗?

1 回答

  • 1

    是的,您可以使用缓存锁以分布式方式输入关键部分 . 在这里您可以找到:https://apacheignite.readme.io/docs/distributed-locks

    在这里您可以找到有关Ignite锁的更多文档:https://www.gridgain.com/sdk/pe/latest/javadoc/org/apache/ignite/IgniteLock.html

    Ignite缓存锁实现互斥,因此您可以依赖于没有两个线程或进程同时持有一个锁 . 您应该只确保节点使用相同缓存的副本来获取锁(缓存不是本地等),并且您的缓存是事务性的 .

    通常,锁用于以原子方式对缓存执行复杂操作 . 如果您想在不实际更改缓存的情况下使用锁定,则可能是您实际上不需要此锁定的症状,或者您应该使用您尝试在关键部分内使用的资源的某些同步机制 . 这取决于您尝试执行的计算 .

相关问题