gydtep 发表于 2022-4-6 19:19:59
当前,AIoT浪潮已席卷而来,RISC-V或许是AIoT时代万物互联的关键,是拓宽物联网生态圈的钥匙。平头哥在RISC-V上的探索和布局,对于推进AIoT战略具有重要意义,此次开源玄铁RISC-V系列处理器,将有力推动RISC-V生态发展、助力万物互联,惠及全球RISC-V社区。gydtep 发表于 2022-4-6 20:32:47
同时,RISC-V的想象空间巨大,玄铁910全球首次实现兼容安卓,证明了RISC-V朝高性能方向发展的可能。平头哥也将持续探索RISC-V这一架构在更多场景和领域的落地,向“云端一体“迈进。gydtep 发表于 2022-4-7 15:59:19
是表达了:流计算要求对状态的更新只提交一次到持久后端存储,但这里的状态一般不包括「输出到下游结果」,而仅指引擎内部的状态,譬如各个算子的状态、实时流的消费偏移等,流计算引擎内部状态变更的保证,并不能等价于从输入到输出的一致性,端到端一致性需要你自己关心。gydtep 发表于 2022-4-7 19:54:19
在存在不确定性计算的流计算中,不确定性计算的(中间)结果可视为流计算引擎状态的一部分。从整体上看,任何一个时间点的引擎状态等于之前所有事件计算结果(中间结果和输出结果)的累计。gydtep 发表于 2022-4-7 20:35:34
时刻以来的输入集合为 E(t),输出集合为 Sink(t),引擎此时状态为 State(t),State(t) 包括各个算子的状态(包括上面提到的不确定性计算)、数据源的消费偏移量(或文件读取偏移等)等:gydtep 发表于 2022-4-7 20:59:32
我们在这里将引擎状态作为一种特殊输出的考虑有两点。其一,引擎的状态一般也是输出到外部存储如 RocksDB/HDFS,这和计算下游的输出别无二致。其二,通过屏蔽引擎内部的容错机制实现,简化端到端一致性问题的抽象过程,便于更好地理解问题本身。gydtep 发表于 2022-4-8 10:30:38
态更新,若引擎下游系统也实现了数据幂等,当在 t ~ t + n 间内出现 FailOver 时,引擎可以通过重新计算 t ~ t + n 之间的所有值,直接输出给下游使用。gydtep 发表于 2022-4-9 10:42:15
进一步分析,每一次存储或者批量事务存储 O(t) 时,引擎到底做了什么?前面我们定义了 O(t) = Sink(t) + State(t) -> O(t) = Sink(t) + OperatorState(t) + SourceState(t) ,对于引擎来说,当出现 FailOver 时,都会通过 SourceState(t) 回拨数据gydtep 发表于 2022-4-9 11:54:49
如果我们的计算过程都是确定性的,那么上述的充分必要条件会有什么变化呢?在确定性计算的前提下,如果引擎输出结果的接受端是可以实现为幂等,则很多约束条件会有所简化。由于 O(t) = Sink(t) + State(t) ,引擎内部很好实现幂等状gydtep 发表于 2022-4-9 13:02:10
因此,在仅有确定性计算的流计算系统中,实现端到端的充分必要条件可退化为:在流计算过程中,需要外部的最终结果接受端实现幂等,实时存储每一条中间和最终计算结果,如果考虑吞吐率不能存储每一条,则需定期批量存储,上述