0 背景
术语表
术语 | 备注 |
---|---|
akka | 一套运行于JVM上实现了Actor模型的Scala类库,用于构建高并发、基于消息驱动的分布式高性能应用 |
YStream | 基于akka-cluster的流计算引擎 |
Gossip | 基于TCP/IP的用于akka-cluster成员节点间相互通信的网络协议 |
cluster-seed-nodes | Gossip的种子节点,用于管理集群节点的状态。akka-cluster的任意节点启动后,都会试图找到一个种子节点并通过其加入到集群中 |
Job-manager | 简称Jm, 作为种子节点负责管理集群内所有节点的状态,同时对外提供基于jmx以及http的关于引擎核心指标数据监控接口。一般配置2个以满足高可用的需要 |
Task-manager | 简称Tm,流计算引擎的核心,实现了Clock、Source、Filter、Map、Window、Sharding、Routing等常用Transformation。根据应用的数据规模可部署多个节点。同时,负责把常用监控指标数据更新到Redis |
1 架构图
按照功能角色的不同,YStream主要分两个角色: Job-manager以及Task-manager。 这两个角色都是在同一个akka-cluster中的,而每个角色又有多个节点组成。
1.1 Job-manager
Job-manager简称Jm,
1.2 Task-manager
2 核心概念
2.1 时间
2.1.1 事件时间(EventTime)
2.1.2 处理时间(ProcessingTime)
2.1.3 混合时间(EventTimeWithMaxDelay)
基于事件时间的时间生成器, 支持窗口关闭加速(当长时间没事件的时候,允许强制生成时间, 支持“最少xx秒内产生一个时间戳”的语义)