axon改造现有系统,旧数据适配的问题

来源:10-1 分布式事务实现-总结

慕娘1436387

2019-01-01

老师,我最近在思考旧系统改造工程,涉及旧数据适配的问题,因为旧数据在新系统中没有聚合记录导致无法识别,第二个问题是假如某些bug导致聚合数据与query数据不一致的话有没有好的解决方案。第一次用axon,没经验还请多关照

写回答

4回答

大漠风

2019-01-07

明白了,那你是想把现有的传统方式开发的应用,改成用事件驱动的方式,那这就比较麻烦了,就像你说的,无法生成聚合对象,是因为我们没有历史的事件数据,只有业务状态数据。像这种情况下要改造,我们几乎不可能从当前业务数据重新生成事件。

因为事件数据,你可以把它看作为时序数据,包含所有的历史。而传统的系统的数据库,只是保存系统当前的业务状态,不包含历史过程,只有最终结果。这时候,虽然可以根据最终业务状态模拟一些事件,让我们的聚合对象能处理这些事件生成当前的状态。但是,这样往往需要写很多代码来生成事件,以及专门处理这些事件。

所以,想要将原系统重构成事件溯源的方式,几乎是不太可能的。

我觉得,你是觉得以前的业务代码里面用了太多的if/else来处理业务分支,你觉得可以使用事件处理,其实,这就是状态机模式。大概思路是这样:

每个领域对象就是一个状态机,每一种事件作用在这个状态机上,产生新的状态,这和事件溯源的事件处理是类似的,只不过,每次处理完事件以后,你需要保存数据库,这又跟传统方法类似。

其实,axon框架不仅可以用来实现事件溯源模式,和读写分离的方式,也可以只是单纯的用事件处理方式实现service的逻辑。


0
1
慕娘1436387
明白了,感谢老师,我在这个问题上纠结了好久
2019-01-08
共1条回复

慕娘1436387

提问者

2019-01-04

老师我可能没有把场景说详细,我们的老系统是传统mvc,没有任何的事件数据。因为迭代很频繁或说修改的频率很高,大多时候是在现有业务里添加if else,虽然后面加了些设计模式在上面,但还是很艰难。看了您的课程,看到axon有了些想法,如果改造成axon,那旧的数据必然要生成聚合,在这块我查了好久没有相关的资料,也没个思路,就过来讨教了@@

0
0

慕娘1436387

提问者

2019-01-04

老师我可能没有把场景说详细,我们的老系统是传统mvc,没有任何的事件数据。因为迭代很频繁或说修改的频率很高,大多时候是在现有业务里添加if else,虽然后面加了些设计模式在上面,但还是很艰难。看了您的课程,看到axon有了些想法,如果改造成axon,那旧的数据必然要生成聚合,在这块我查了好久没有相关的资料,也没个思路,就过来讨教了@@

0
0

大漠风

2019-01-03

第一:对于旧数据,我的理解是,你的旧系统不是基于事件溯源的,导致,无法通过事件生成聚合对象。对于这个,我的理解是,只要有事件数据,我们就应该能聚合出聚合对象。如果不能,那是因为事件数据的兼容性问题?这只能通过代码实现对旧数据的适配。虽然这会让代码很复杂,但是这也不可避免,这也是我们在做业务分析的时候应该提前考虑,尽量避免。

第二个问题就很容易了,我们之所以用事件溯源,就是因为我们可以删除业务数据重新生成,如果query数据因为有bug导致不一致了,那就删了重新生成就好,我记得axon框架有这个功能,可以重新运行events。

0
0

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程