关于jdon框架 in-memery 模式的状态和线程问题
另外,如果内存中存在几万、几十万乃至上百万的模型对象,按系统并发达到单机每秒1000算,可能会同时需要上万的线程执行,如果使用线程池,想知道jdon框架如何对模型分配线程的?
希望banq大神能够解答下!
[该贴被yxh1122于2017-04-03 17:41修改过]
前端--->-command ----1:1--->in-memory领域模型聚合根 -----事件-1:N-->事件消费者
command修改聚合根实体状态时是单线程,确保并发时不会扰乱状态。状态改变后发出的事件是1:N,这个事件如果需要更新分布式系统的其他机器上的状态,那么保证事件顺序很重要(通过Kafka),否则更新其他机器上状态会出错。前面command更新的是本地内存中状态。
in-memory集群有开源Hazelcast(Java),Redis(非Java),和ORacle的coherence。
领域对象放入缓存只是暂存,将内存当成临时存储的地方,等下次使用时直接从缓存中拿出,免除了对数据库的开销。从缓存拿出后还是原来的内存对象,方法和数据都没有变化
Jdon框架在command处使用ringbuffer保证某个时刻只能一个command访问。