gydtep 发表于 2022-10-12 08:26:10

当前,全球芯片架构格局由Intel和Arm统领。美国公司英特尔的X86架构称霸个人电脑和服务器两大市场;英国公司Arm架构通行于智能手机和物联网市场。过去几十年,英特尔与微软结盟,Arm与苹果、谷歌结盟,成为各自市场的事实标准。

gydtep 发表于 2022-10-12 15:40:44

事实上,「恰好一次(Exactly-Once)」并不等价于流计算的输出数据就符合一致性的要求,该术语存在很多理解和使用上的误区。

gydtep 发表于 2022-10-13 11:05:11

今天大多数流计算引擎用「Exactly-Once」去暗示用户:既然输入的数据不是静态集合而是会连续变化的,那对每一条消息「恰好处理」了一次,输出的数据肯定是一致的。

gydtep 发表于 2022-10-13 12:36:05

例子1,后接不同的动(名)词:Exactly-once Delivery 和 Exactly-once Process 。前者是对消息传输层面的语义表达,和流计算的一致性关系不是很大,后者是从流计算的应用层面去描述数据处理过程。

gydtep 发表于 2022-10-14 15:46:44

当出现 FailOver 时,都会通过 SourceState(t) 回拨数据源偏移量进行部分重算,即消息读取语义是 At-Least-Once 的,当重复计算时,前面存储的结果(每一次计算)

gydtep 发表于 2022-10-15 09:56:01

流任务执行前后,引擎会对执行流做若干优化,如合并多个逻辑算子至单个算子(类似 Flink 中的 chain 化)、节点内先执行部分合并(count / sum)后再 shuffle等等,种种手段均是为了降低算子间 IO 的数据规模。

gydtep 发表于 2022-10-15 12:07:08

此外,在判断「当前记录」是否已被处理时,MillWheel 使用了布隆过滤器用于前置过滤,因为在一个正常运行的流计算任务中,记录绝大多数的时间都是不重复的

gydtep 发表于 2022-10-16 10:18:58

同时,我们需要注意到的是,Flink 和 Kafaka 中的「事务」提交,和我们常规的操作关系型数据库中的事务还是有所不同的,后者的事务提交对象一般就一个(e.g. MySQL Server),

gydtep 发表于 2022-10-16 12:22:31

但在流计算中,由于结果有下游输出、消费进度、算子状态等,因此流计算引擎需要设计一个全局的事务协议用于和下游待提交的各个存储后端进行交互。

gydtep 发表于 2022-10-16 14:16:00

举例:Kafka Streams 的输出后端需要是 Kafka,以配合在事务提交过程中,屏蔽部分已输出至下游(被 Kafka Broker 持久化),但还不满足事务隔离性的消息(read_committed 级别),从流计算输出的角度来看
页: 507 508 509 510 511 512 513 514 515 516 [517] 518 519 520 521 522 523 524 525 526
查看完整版本: 免费领取阿里云服务器2000元代金券!