Disruptor单写原则的疑惑

    
lzupb 14-09-29

我的理解是:单写原则适用于单机情况,并且只能启动一个服务实例,这种情况下的确可以做到单线程写入操作。
但是如果是集群的环境下,或者是单机启动多个服务实例,如何保证单写原则呢?
进一步考虑如果是集群环境下,领域模型的自身一致性规则(写入操作改变状态),是否也会冲突呢?

1
banq
2014-09-29 13:54

2014-09-29 11:56 "@lzupb"的内容
如果是集群的环境下,或者是单机启动多个服务实例,如何保证单写原则呢 ...


集群如果是内存矩阵也就是数据网格情况下,一台机器内存更改会立即同时复制到其他机器,是一种主从关系,一个领域模型只能允许在一台服务器上发生更改,类似数据库分区。

lzupb
2014-09-29 14:42

2014-09-29 13:54 "@banq"的内容
一个领域模型只能允许在一台服务器上发生更改,类似数据库分区 ...

多谢板桥回复,但是这个要怎么做到呢?如果在高并发情况下,请求落到不同的节点上,有很大几率多台服务器同时操作领域模型吧?
领域模型在内存中in-memory,但是不同的线程操作相同的模型,造成冲突也是有可能的吧?关于这点我一直挺疑惑的。。。

banq
2014-09-29 14:46

2014-09-29 14:42 "@lzupb"的内容
请求落到不同的节点上,有很大几率多台服务器同时操作领域模型吧? ...


分区分区,所谓分区,就是用户表模型在A服务器,产品表模型在B服务器。请求发送到B服务器想操作用户表模型也无法成功。让负载平衡根据概率随机乱发的那是无状态服务,领域模型修改属于有状态的操作。

lzupb
2014-09-29 15:15

原来如此,多谢板桥答疑解惑!!

2Go 1 2 下一页