联机交易就意味着系统对外直接提供的交易,该类交易具有事务性——可回滚;实时性——交易有
生命周期,并有超时机制等,调用方需实时等待被调方的反馈,成功或失败皆有反馈;并发性——同一类甚至同一个交易可同时被多个线程调用,相互间有锁处理机制。
批量处理则意味着该交易相关的参数、系统状态已经锁定,系统需要进行的是某一类操作,该类操作具有统一性——使用相同的规则处理大量数据;串行性——并不是说批量交易中不能有并发,而是有固定的步骤,先做哪一步,再做哪一步,每一步都有对某些条件的依赖;可重复性——这个不是必须的,但强烈建议批量程序在设计之初就考虑可重复运行,否则后续的运行与维护会带来诸多麻烦;
典型联机为取款交易,余额的查询(可能出现余额不足的情况)及更新、交易流水的生成、账户使用记录的生成、
会计凭证的生成、存款及现金科目
总账的登记、需要一次完成,如果其中某一步产生异常,则整个交易回退;典型的批量交易为对账交易,对账的先决条件为上一日的处理已经全部结束,系统需要的是对上一日处理结果的验证,验证的方式是设定一些筛选规则,检查是否有不符合规则的数据,如果有,将其自身及相关数据生成对账差错日志,供运营人员查询及处理,如果对账结果完全无误,则交易通过,进行下一个批量程序(比如生成日增量数据文件,发送给下游系统)。
批处理与流处理
在了解这两个概念之前先来了解一下下面的概念:
有边界数据和无边界数据
无边界数据,其实就是一种可增长,无限的
数据集。我们也可以称他为”流数据(Streaming Data)“。
有边界数据,其实就是一种保存好了的数据,例如数据库中的数据或者csv中的数据等
拿我们之前的交易数据来说,如果按照一定的时间窗口,拿取一小部分数据,那么提取出来的数据也是有边界数据了。例如我提取2019年08月19日这天地数据来做处理,我们提取出来地这份数据就是有边界数据。
事件时间和处理时间
事件时间(Event Time)指的是一个数据实际产生的时间,处理时间(Precessing Time)指的是这条数据实际被处理数据的系统接收的时间。