背景,使用structure streaming 实现类似关系型数据库的update操作。
测试方法:分别采用append和update模式进行,选定一个主键rowkey,进行value的数据更新操作,通过seleep控制数据产生的速度。
通过控制台显示数据,当数据产生速度在间隔1s以上时,数据顺序正确,可以正常显示。当产生速度在800ms以下时,数据会产生顺序错乱。
业务描述,统计卖票钱数,数据来源是更新的(ogg同步的oracle的累计表),当一秒内卖出多张票,kafka会接受到多条数据,需要按照顺序进行更新,但是structure streaming会分批进行处理,导致出现大数在前,小数在后的错乱场景,造成数据错误。不具有事务性。
对于update类的实时报表,采用structure streaming进行处理有潜在风险,需要知道数据的更新频率是否大于structure streaming的处理批次间隔。还有消费历史数据时,出现错乱的机会更大。
正常顺序
错乱顺序(间隔10ms)