冲着banq大哥来的。顶一个!

拜读了Banq老师的文章,其中“一个ring buffer. 每个生产者和消费者都有一个次序计算器,以显示当前缓冲工作方式.每个生产者消费者写入自己次序计数器,能够读取对方的计数器,生产者能够读取消费者的计算器确保其在没有锁的情况下是可写的,类似地消费者也要通过计算器在另外一个消费者完成后确保它一次只处理一次消息。”。就是不理解。其中的计速器作用是什么,还有如何从ring buff读数据写数据,可否再详细些。谢谢

怎么没见站内收藏,如此好贴想好好保留

请问一下,上文提到的那些结构图用什么软件画的?谢谢

Hi, 我想用disruptor来实现一个RPC的服务器端,因为服务器端在接收消息的时候一般会有一个queue来缓存,有已经封装好的此类的RPC么?

2012-06-12 12:13 "@cintana"的内容
我想用disruptor来实现一个RPC的服务器端,因为服务器端在接收消息的时候一般会有一个queue来缓存,有已经封装好的此类的RPC么? ...

可以使用NIO Socket+ disruptor基于事件的RPC服务器端,类似Node.js服务端那种机制,自己编起来应该不难。

LMAX是一个交易撮合平台,其核心业务逻辑简单。窃以为采用此架构比较容易处理业务,也可以提高速度。对于业务比较复杂的平台、系统这个架构或许还要另说了

请教Banq一个问题:
当1对多消费端顺序消费数据时,其中1个消费端或者多个消费端慢或者异常时,这么协调快消费端和慢消费端及异常消费端的相互影响?Disruptor貌似没有这个问题的处理方式?Disuptor只是分配一个足够大的RingBuffer, 当这个RB达到上限时,限制最慢的消费端前进,阻塞快的消费端,直到慢的消费端前进了RB才会腾出新的空间,这样必然导致快的消费端依赖慢的消费端,对于多个消费端情况下,有写消费端要求低延时就受影响了。如果其中一个消费端挂了,其他消费端也不能一直等着吧。
[该贴被Qianqian于2013-01-08 16:01修改过]

@banq

这里所说的input event
应该不是我们在CQRS中理解的command的吧
这个input event应该是LMAX架构中BLP定义的一种事件

外部command在handler中跑过后,发送input event到blp

请问banq,研究了好久的DDD 和DCI ,但是有一个问题我一直模模糊糊的,那就是在jdonframework中 数据库事务是如何控制的?

非常好!
但是我有一个问题。
我们不可能将所有业务处理程序放到同一个JVM中,必定是需要像外界输出的。
如果output是kafka.使用kafka事务的话它的tps肯定达不到百万级。
在logic processor处理完毕event之后,他是如果确保推送到output的?
谢谢。

 

“banq老泪纵横啊,05年喊出了数据库时代的终结,08年我就喊出数据库已死,被国内很多大牛讥笑为疯子”---
之前学些了领域驱动设计、actor模式,接触到了事件溯源的思想,感觉类似阿里的seata类似的强一致事物解决方案从理念上讲就是有问题的的,在走历史的老路,虽然技术或许很厉害,但思想实在不敢恭维。。不过后续又支持的saga模式也算一种补救