我有一个简单的问题,我无法在Apache Ignite文档中找到明确的答案。
我发现Apache Ignite中有一个API来创建显式锁。我知道这些锁用于写缓存条目,这是隐式完成的。
但是,我(我是否应该)能够在我的网格中显式创建一个Lock来同步计算某些任意代码。这就是我正在考虑的事情:
这样做有潜在的警告吗?我应该留意潜在的陷阱吗?
答案 0 :(得分:1)
是的,您可以使用缓存锁以分布式方式输入关键部分。您可以在此处找到:https://apacheignite.readme.io/docs/distributed-locks
在这里,您可以找到有关Ignite锁的更多文档:https://www.gridgain.com/sdk/pe/latest/javadoc/org/apache/ignite/IgniteLock.html
Ignite缓存锁实现互斥,因此您可以依赖于没有两个线程或进程同时持有一个锁。您应该只确保节点使用相同缓存的副本来获取锁(缓存不是本地等),并且您的缓存是事务性的。
通常,锁用于以原子方式对缓存执行复杂操作。如果您想在不实际更改缓存的情况下使用锁定,则可能是您实际上不需要此锁定的症状,或者您应该使用您尝试在关键部分内使用的资源的某些同步机制。这取决于您尝试执行的计算。