SinkGroup允许组织多个sink到一个实体上。SinkProcessors 能够提供在组内所有sink之间实现负载均衡的能力。而且在失败的情况下能够进行故障转移。
sinks: 空格分隔的多个sink
processor.type:default|failover|load_balance
一 DefaultSink Processor
只允许接收单个sink,不强制用户为sink创建processor.
二FailoverSink Processor
它维护着一个sink的优先级列表,保证event只要有效就会被处理。
failover机制工作原理把失败的sinks放到一个池里,然后给他分配一个冷冻期。一旦一个event被成功发送,重新会把这个sink放入live池子里。
对于这个配置,我们要设置sinkgroups processor为failover,为每一个单独的sink设置优先级,另外failover的上限可以通过maxpenalty属性设置。
a1.sinkgroups= g1
a1.sinkgroups.g1.sinks= k1 k2
a1.sinkgroups.g1.processor.type= failover
a1.sinkgroups.g1.processor.priority.k1= 5
a1.sinkgroups.g1.processor.priority.k2= 10
a1.sinkgroups.g1.processor.maxpenalty= 10000
三Loadbalancing Sink Processor
LoadBalancing Sink Processor 提供另一种可以在多个sink之间平衡负载的能力。
实现支持通过round_robin(轮询)或者random(随机)参数来实现负载分发,默认情况下使用round_robin。
processor.sinks:多个空格分割的sink
processor.type:load_balance
processor.backoff:
processor.selector:round_robin|random|继承AbstractSinkSelector的类
processor.selector.maxTimeOut:
a1.sinkgroups= g1
a1.sinkgroups.g1.sinks= k1 k2
a1.sinkgroups.g1.processor.type= load_balance
a1.sinkgroups.g1.processor.backoff= true
a1.sinkgroups.g1.processor.selector= random