美文网首页
kylin-stream source

kylin-stream source

作者: qingshuiting | 来源:发表于2020-12-01 15:44 被阅读0次

    kylin—stream source

    本篇文章主要介绍kylin stream中的source的对接内容;目前kylin对接的stream source只有kafka。

    概述

    在kylin中,一个cube对应的data source中的topic会按照partitions进行划分。按照kylin的算法,一个cube对应的多个partitions可能会被分配到多个repliaca set上进行处理。每一个replica set仅仅处理部分partition即可。如下图所示,一个model/cube对应的topic的数据可能会被划分到多个replica set中。

    image.png

    概要设计

    receiver server 需要消费对应source(指定的partition)的数据。需要根据对应的partition内容构造出对应的consumer(在kylin中为connector)。通过connector中封装的source consumer来进行读取数据,并且处理对应的position信息。

    详细内部实现

    StreamingSourceFactory

    作用:根据不同的source类型,获得不同的stream source的实现。

    IStreamingSource

    一个source结构是非常重要的,其表示的是在一个receiver server上消费一个cube数据的综合数据结构(其可以提供connnector,positionhandler等综合结构)。主要功能就是提供了一个adapter的功能。其提供了,产生message template、stream connector等功能。

    loadTableSource()
    getMessageTemplate()
    createStreamingConnector()
    getSourcePositionHandler()
    

    辅助信息结构

    Postion处理结构

    ISourcePosition/IPartitionPosition/ISourcePositionHandler

    • IPartitionPosition:用于表示一个partition的信息。

    • ISourcePosition:用于表示整个source中多个partition信息的集合。

    • ISourcePositionHandler:用于处理整个source的partition的内容的结构。

    Connector

    由于其对应的source产生,包含了整个链接的topic需要的全部的meta信息的内容。connnector的作用其实是直接与对应的stream系统的client交互的。其需要提供的接口就比较简单:

    IConnector {
    open()
    stop()
    next()
    等等其他内容
    }
    

    Channel

    channel就是对connector以及segmentManager的一个封装。channel的主要特性就是:

    • 线程:每一个channel都会启动一个独立的java thread进行处理;在其处理过程中会不停的从connector中读取数据(event message),然后将数据写入到segmentmanager中。

    • cube->channel对应:每一个receiver server中会保存其处理的全部cube的信息,每一个cube都会对应一个channel,以及对应的segmentmanager。

    StreamingSourceConfig

    IStreamingMessageParser

    用于进行一个Message Parser的功能,将其他类型的message,转化为对应的StreamingMessage

    其他基本结构

    • ConsumerStartMode:表示消费数据需要从stream系统的哪个位置开始。

    • ConsumerStartProtocol:包含了ConsumerStartMode的结构,可以定义一些需要从stream中消费的字段范围。

    如何实现一个customer stream source

    通过上面的总结可以了解,需要实现如下内容:

    • IStreamingSource:用于产生对应的Connector。

    • IStreamingConnector:用于真实的open,stop,next对应的stream系统中的数据。

    • IStreamingMessageParser: 用于转化不同format类型的message到标准定义的streaming message。

    相关文章

      网友评论

          本文标题:kylin-stream source

          本文链接:https://www.haomeiwen.com/subject/qlojwktx.html