当前位置: 首页 > 知识库问答 >
问题:

将Hazelcast映射与LMAX disruptor一起使用-性能影响

马才
2023-03-14

我们需要运行订单管理器应用程序的Active-Active实例以实现弹性。在我们的团队中,Hazelcast是跨弹性实例共享状态的首选分布式缓存。

在应用程序中,我使用单写入器模式以及LMAX中断器库。因此,基本上我有一个繁忙的主线程,它从中断器(环形缓冲区)读取传入的订单事件,并快速处理它,而不涉及任何阻塞操作。

现在唯一的问题是,只要我的主线程接收到一个事件,它就会首先在Hazelcast分布式映射中执行查找(以获取当前订单的状态),而Hazelcast查找操作相对较慢(约5-10毫秒)。我想了解:

1) 如果这仍然是一件可以接受的事情,即使用LMAX disruptor时从分布式地图读取数据

2) 此外,由于Hazelcast调用是线程安全的,涉及分布式锁,LMAX人员建议避免主业务线程中与线程相关的锁,以便CPU优化的代码缓存保持热状态,因此调用Hazelcast是否是LMAX Disruptor主处理线程的反模式?

有人能在这上面加上2美分吗?

共有1个答案

戚兴邦
2023-03-14

当然,我会说这是不可接受的。IMap不仅会无限期地阻塞,还会进行网络调用。

我想一个办法是

  • 将IMap访问拆分为另一个线程,并在单独的环形缓冲区中使用异步事件与之通信
  • 或者订阅IMap条目侦听器并将数据存储在内存中(如果合适)
 类似资料:
  • 问题内容: 我有一个复杂的背景图片,其中有很多小区域,需要滚动插图高亮显示,以及每个地方的附加文本显示和关联链接。最终的插图使用z- index堆叠了几张具有透明度的静态图像,并且高光翻转插图需要显示在中间的“三明治”层之一中,以实现所需的效果。 在对块进行一些不成功的摆弄之后,我决定可以使用老式的图像映射来完成。我制作了具有四个几何形状轮廓的示意图测试图,并使用png翻转“填充”了它们。这个想法

  • 我在中遇到了一个性能问题,它大约需要4-5秒来完成执行。场景如下: 我有一个employeeList,它根据员工列表()存储。每个值(Arraylist)可以包含1500000名雇员。 是一个POJO定义如下。 为了添加一个新员工,我编写了一个条目处理器,它将向列表中添加一个新员工并返回true。 为了打印驱逐时的键,我在EmployeeMap中添加了以下MapListener。 IMap配置如下

  • 问题内容: 有什么方法可以将列表项与参数一起映射到函数。我有一个清单: 而且我必须调用与每个列表元素相对应的函数以及其他参数,以便可以计算以下内容 等等… 有什么优雅的方法可以做到这一点吗?我是新手,所以请不要介意。 问题答案: 使用列表理解:

  • 问题内容: 不知道这是我对Groovy的有限了解还是Pipeline 步骤中的怪癖。如果我使用map而不是单独传递每个闭包,则无法接受它: 例外是: 问题答案:

  • Note 本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 阴影是光线被阻挡的结果;当一个光源的光线由于其他物体的阻挡不能够达到一个物体的表面的时候,那么这个物体就在阴影中了。阴影能够使场景看起来真实得多,并且可以让观察者获得物体之间的空间位置关系。场景和物体的深度感因此能够得到极大提升,下图展示了有阴影和没有阴影的情况下

  • 我有大块的对象数组。我想得到一些东西然后把它分配给一个新的财产,我这样做了 问题是,仍然是一个,为什么?