- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于 RingBuffer 预先分配给定类型的对象,如何使用单个环形缓冲区来处理各种不同类型的消息?
您不能创建新的对象实例来插入到 ringBuffer 中,这会破坏预先分配的目的。
因此,您可以在异步消息传递模式中有 3 条消息:
最佳答案
一种方法(我们最常见的模式)是以编码形式存储消息,即作为字节数组。对于传入的请求,例如修复消息,二进制消息,被快速拉出网络并放置在环形缓冲区中。不同类型消息的解码和分派(dispatch)由该环形缓冲区上的 EventProcessors(消费者)处理。对于出站请求,消息被序列化为预先分配的字节数组,形成环形缓冲区中的条目。
如果您使用一些固定大小的字节数组作为预分配条目,则需要一些额外的逻辑来处理较大消息的溢出。 IE。选择一个合理的默认大小,如果超过,分配一个更大的临时数组。然后在条目被重用或使用(取决于您的用例)恢复到原始预分配字节数组时丢弃它。
如果您对不同的消息类型有不同的使用者,您可以通过知道携带类型信息的字节数组的偏移量或通过在条目上传递鉴别器值来快速确定您的使用者是否对特定消息感兴趣。
此外,也没有禁止创建对象实例和传递引用的规则(我们也在几个地方这样做)。您确实失去了对象预分配的好处,但是破坏者的设计目标之一是允许用户选择最合适的存储形式。
关于disruptor-pattern - 应该如何使用 Disruptor(Disruptor Pattern)来构建现实世界的消息系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6933347/
笙歌 痞性. 剩余 青怏 洒脱 现实 搁浅° 软萌 路途 娼妓 离骚 逐你 微尘 迷魂 ▼ 扎心 堇夏 残年っ ╭淡妆╮ 24K.纯疯 隐痛
我正在尝试不费吹灰之力地实现完全有效的持久性无知。不过我有很多问题: 最简单的选项 这真的很简单——可以像在 SOA 中那样使用 Spring Data 注释对实体进行注释(但让它们真正执行逻辑)?除
我想完成一项简单的任务。 我在可变宽度容器中有一个图像。 容器的宽度可以为 300、400、700 或 900 像素。这是通过媒体查询完成的图像应占据该容器的所有宽度。所以它也将是 300、400、7
我在使用 Storyboards AutoRotation 和 iPhone 时遇到问题。我已经将一个非常简单的项目与 3 个 View Controller 放在一起,并将其上传到 gitHub 以
我是一名优秀的程序员,十分优秀!