事件驱动架构Event-driven Architecture(EDA) ,异步领域事件,并发策略, 懒惰加载,异步消息机制,结合JMS可实现大型分布式可伸缩的架构, 6.4整合入号称最快的并发框架Disruptor。
请问Disruptor 如何做扩展呢?加机器+轮询?
还有就是Jdon +Disruptor 如何去查看delivery history ?
要知道如果采用 akka + rabbitmq, 支持很好的扩展。
请问Disruptor 如何做扩展呢?加机器+轮询?
还有就是Jdon +Disruptor 如何去查看delivery history ?
要知道如果采用 akka + rabbitmq, 支持很好的扩展。
将Disruptor的消费者作为rabbitMQ的生产者即可。
Model--->Disruptor--->rabbitMQ ----->DB
关于in-memory cache的横向扩展主要选用分布式缓存,hazelcast 等都可以或兵马俑 ehcache+terracotta,memcached和redis由于不是Java,只能做JVM之外的二级缓存,in-memory cache需要和Java应用在同一个JVM中。
关于是否需要Event Store,也就是保存事件还是保存领域模型状态,取决于你是否需要事务机制,Event Store可替代传统意义上的JTA等事务,实现回放,但是事件保存时需要根据先后排队,不能前后顺序搞错了,还要解决两个事件同时发生问题,后者可参考LMAX架构,使用两个Queue.如下:
Comand--->Disruptor1---> Model--->Disruptor2--->rabbitMQ ----->DB
在Disruptor1处就进行Event Store比较准确,直接将用户发出的命令按照他们先后次序储存。
总之,用事件的event store想法虽然好,但是真正替代JTA之类成熟同步事务,还需要一段路。
目前Jdonframework默认采取的是保存被事件改变状态,类似传统的一种储存方式,也能遵循DDD+仓储的原本意义。
使用 local cache + memcached/redis都是可以的,但是注意这里local cache其实是in-memory cache,这也是in-memory 本身的含义。