关于jdon框架 in-memery 模式的状态和线程问题

17-04-03 yxh1122
最近研究了jdon框架的 ES 和 CQRS模式,采用disruptor模式的领域事件使用单线程执行。经过测试jdonframework 源码包中的Match实例项目,在领域事件的1:1消费关系中,component中的onEvent方法执行的业务是单线程执行的(1:N应该一样,没有测试),对于一个领域模型内部的多个事件来说,可能会存在同时有多个事件的消费者执行,也就是一个内存模型会同时有多个线程在执行,会同时修改模型状态,这样对领域模型的共享状态是否会存在干扰,导致冲突?

另外,如果内存中存在几万、几十万乃至上百万的模型对象,按系统并发达到单机每秒1000算,可能会同时需要上万的线程执行,如果使用线程池,想知道jdon框架如何对模型分配线程的?

希望banq大神能够解答下!

[该贴被yxh1122于2017-04-03 17:41修改过]

    

1
banq
2017-04-04 19:16
不是很明白你的意思,jdon框架的设计思路如下:

前端--->-command ----1:1--->in-memory领域模型聚合根 -----事件-1:N-->事件消费者

command修改聚合根实体状态时是单线程,确保并发时不会扰乱状态。状态改变后发出的事件是1:N,这个事件如果需要更新分布式系统的其他机器上的状态,那么保证事件顺序很重要(通过Kafka),否则更新其他机器上状态会出错。前面command更新的是本地内存中状态。

kof99
2017-04-10 09:14
in-memory如何集群? 有状态的领域对象,单服务器还能控制线程修改,集群下咋整

[该贴被kof99于2017-04-10 09:25修改过]

banq
2017-04-11 09:31
2017-04-10 09:14 "@

kof99

"的内容

有状态的领域对象 ...

in-memory集群有开源Hazelcast(Java),Redis(非Java),和ORacle的coherence。

kof99
2017-04-11 17:29
不是很明白,如果把领域对象放入缓存,它还能执行方法吗? 

猜你喜欢
3Go 1 2 3 下一页