我们需要运行订单管理器应用程序的主动-主动实例以实现弹性。在我们的团队中,Hazelcast是跨弹性实例共享状态的首选分布式缓存。
在应用程序中,我使用了单写入器模式和LMAX破坏器库。因此,基本上我有一个繁忙的旋转主线程,它从中断器(环形缓冲区)读取传入的订单事件,并快速处理它,而不涉及任何阻塞操作。
现在唯一的问题是,只要我的主线程接收到一个事件,它首先在Hazelcast分布式映射中执行一个查找(以获取当前订单的状态),而hazelcast查找是一个相对较慢的操作(大约5-10毫秒)。我想知道:
1)如果这仍然是可接受的事情,即使用LMAX disruptor时从分布式地图读取
2)另外,由于Hazelcast调用是涉及分布式锁的线程安全的,LMAX专家建议在主业务线程中避免线程相关的锁,以便CPU优化的代码缓存保持热,从LMAX Disruptor的主处理线程调用hazelcast是否是反模式?
有人能在这上面加上他们的2美分吗?
发布于 2020-01-04 19:31:45
当然,我会说这是不可接受的。IMap不仅会无限期地阻塞,它还会进行网络调用。
我认为有一种方法是
https://stackoverflow.com/questions/59579079
复制相似问题