Flink-异步operator
当某个operator执行需要很长时间的话,使用异步操作对吞吐量的提升非常有帮助。
当某个operator执行需要很长时间的话,使用异步操作对吞吐量的提升非常有帮助。
ACID是指原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration)。
BASE是指基本可用(Base Available)、柔性状态(Soft State)、最终一致性(Eventual Consistency)。
ACID和BASE代表了两种截然相反的设计哲学。ACID是传统数据库常用的设计理念,追求强一致性模型;BASE支持的是高效的分布式数据库,通过牺牲强一致性来获得高可用性。不同的业务场景对数据的一致性要求不一样,因此这两种设计理念也可能会结合在一起使用。
一致性(consistence)和共识性(consensus)不是完全一致的概念。
在处理数据时候,需要考虑在三种不同的语义会对业务产生什么影响。程序要实现不同的语言代价也是不同的,而且不同的语义对业务的影响也不一样。
数据处理过程对数据一致性的影响是强相关的。
设计一个流式任务的时候,需要从几个方面考虑:
ACID是一种描述一致性的原则,通常出现在数据库系统中。
单机事务一般是需要满足ACID的。
分布式事务需要多节点协作来完成一个事务,其实现方式和单机事务有很大不同,也很难满足ACID原则,实现方式和单机事务的实现方式也有很大不同。目前分布式事务是通过阶段提交来实现的,阶段提交分为二阶段和三阶段提交。
大部分高可用的场景中都会使用到ZooKeeper,例如:Hdfs,Hbase,Flink。
ZooKeeper应用场景非常广泛
分布式锁
高可用
Hbase的Master选举,Flink的JobMaster选举。。
发布/订阅
微服务注册中心
分布式队列
Flink Job有三种部署模式:
LAZY_FROM_SOURCES
仅当Task的上游都产生数据之后,才会真正的部署Task。LAZY_FROM_SOURCES_WITH_BATCH_SLOT_REQUEST
与LAZY_FROM_SOURCES
逻辑基本一致。不同的是在申请Slot的时候有超时时间限制。EAGER
ExecutionGraph在被调度时会将所有Task一次性到各个TaskManager。