# HStream Server
HStream Server (HSQL) 作为 HStreamDB 的核心计算组件,其本身被设计为无状态的。它主要负责客户端的连接管理,安全认证,SQL 解析,SQL 优化,以及流计算任务的创建、调度、执行和管理等。 HStream Server
# HStream Server (HSQL) 自顶向下可具体分为以下几层结构
# 接入层
主要负责客户端请求的协议处理、连接管理、以及安全认证和访问控制。
# SQL 层
客户端主要通过 SQL 语句与 HStreamDB 交互,来完成大部分流处理和实时分析的任务。该层主要负责将用户提交的 SQL 语句编译成逻辑数据流图。 与经典的数据库系统一样,这里包含两个核心的子组件:SQL 解析器 和 SQL 优化器。 SQL 解析器负责负责完成词法分析、语法分析,将 SQL 语句编译到对应的关系代数表达式;SQL 优化器负责根据各种规则和 Context 信息对生成的执行计划进行优化。
# Stream 层
该层包含各种常见的流处理算子的实现,以及表达数据流图的数据结构和 DSL,还支持用户自定义函数作为处理算子。 主要负责为 SQL 层传递下来的逻辑数据流图选择对应的算子实现和优化,生成可执行的数据流图。
# Runtime 层
该层负责实际执行数据流图的计算任务并返回结果。主要包含任务调度器、状态管理器以及执行优化器等组件。其中调度器负责计算任务在可用计算资源之间的调度,可能是在单个处理的多线程之间调度,也可能是在单机的多处理器之间调度,或者是在分布式集群的多台机器或容器之间调度。状态管理器负责协调流出里算子的状态维护和容错。执行优化器可以通过自动化并行等手段加速数据流图的执行。