axon改造现有系统,旧数据适配的问题
来源:10-1 分布式事务实现-总结

慕娘1436387
2019-01-01
老师,我最近在思考旧系统改造工程,涉及旧数据适配的问题,因为旧数据在新系统中没有聚合记录导致无法识别,第二个问题是假如某些bug导致聚合数据与query数据不一致的话有没有好的解决方案。第一次用axon,没经验还请多关照
4回答
-
明白了,那你是想把现有的传统方式开发的应用,改成用事件驱动的方式,那这就比较麻烦了,就像你说的,无法生成聚合对象,是因为我们没有历史的事件数据,只有业务状态数据。像这种情况下要改造,我们几乎不可能从当前业务数据重新生成事件。
因为事件数据,你可以把它看作为时序数据,包含所有的历史。而传统的系统的数据库,只是保存系统当前的业务状态,不包含历史过程,只有最终结果。这时候,虽然可以根据最终业务状态模拟一些事件,让我们的聚合对象能处理这些事件生成当前的状态。但是,这样往往需要写很多代码来生成事件,以及专门处理这些事件。
所以,想要将原系统重构成事件溯源的方式,几乎是不太可能的。
我觉得,你是觉得以前的业务代码里面用了太多的if/else来处理业务分支,你觉得可以使用事件处理,其实,这就是状态机模式。大概思路是这样:
每个领域对象就是一个状态机,每一种事件作用在这个状态机上,产生新的状态,这和事件溯源的事件处理是类似的,只不过,每次处理完事件以后,你需要保存数据库,这又跟传统方法类似。
其实,axon框架不仅可以用来实现事件溯源模式,和读写分离的方式,也可以只是单纯的用事件处理方式实现service的逻辑。
012019-01-08 -
慕娘1436387
提问者
2019-01-04
老师我可能没有把场景说详细,我们的老系统是传统mvc,没有任何的事件数据。因为迭代很频繁或说修改的频率很高,大多时候是在现有业务里添加if else,虽然后面加了些设计模式在上面,但还是很艰难。看了您的课程,看到axon有了些想法,如果改造成axon,那旧的数据必然要生成聚合,在这块我查了好久没有相关的资料,也没个思路,就过来讨教了@@
00 -
慕娘1436387
提问者
2019-01-04
老师我可能没有把场景说详细,我们的老系统是传统mvc,没有任何的事件数据。因为迭代很频繁或说修改的频率很高,大多时候是在现有业务里添加if else,虽然后面加了些设计模式在上面,但还是很艰难。看了您的课程,看到axon有了些想法,如果改造成axon,那旧的数据必然要生成聚合,在这块我查了好久没有相关的资料,也没个思路,就过来讨教了@@
00 -
大漠风
2019-01-03
第一:对于旧数据,我的理解是,你的旧系统不是基于事件溯源的,导致,无法通过事件生成聚合对象。对于这个,我的理解是,只要有事件数据,我们就应该能聚合出聚合对象。如果不能,那是因为事件数据的兼容性问题?这只能通过代码实现对旧数据的适配。虽然这会让代码很复杂,但是这也不可避免,这也是我们在做业务分析的时候应该提前考虑,尽量避免。
第二个问题就很容易了,我们之所以用事件溯源,就是因为我们可以删除业务数据重新生成,如果query数据因为有bug导致不一致了,那就删了重新生成就好,我记得axon框架有这个功能,可以重新运行events。
00
相似问题