故障转移(failover)
a
.sources = s1
a
.sinks = k1 k2
a
.channels = c1
a
.sinkgroups = g1
a
.sources
.s1
.type =exec
a
.sources
.s1
.command = tail
-F
/tmp
/test
.log
a
.sinks
.k1
.type = avro
a
.sinks
.k1
.hostname = localhost
a
.sinks
.k1
.port = 44444
a
.sinks
.k2
.type = avro
a
.sinks
.k2
.hostname = localhost
a
.sinks
.k2
.port = 44445
a
.channels
.c1
.type = memory
a
.channels
.c1
.capacity=1000
a
.channels
.c1
.transactionCapacity=100
a
.sources
.s1
.channels = c1
a
.sinkgroups
.g1
.sinks = k1 k2
a
.sinkgroups
.g1
.processor
.type = failover
a
.sinkgroups
.g1
.processor
.priority
.k1 = 5
a
.sinkgroups
.g1
.processor
.priority
.k2 = 10
a
.sinkgroups
.g1
.processor
.maxpenalty = 300000
a
.sinks
.k1
.channels = c1
a
.sinks
.k2
.channels = c1
负载均衡(load_balance)
a
.sources = s1
a
.sinks = k1 k2
a
.channels = c1
a
.sinkgroups = g1
a
.sources
.s1
.type =exec
a
.sources
.s1
.command = tail
-F
/tmp
/test
.log
a
.sinks
.k1
.type = avro
a
.sinks
.k1
.hostname = localhost
a
.sinks
.k1
.port = 44444
a
.sinks
.k2
.type = avro
a
.sinks
.k2
.hostname = localhost
a
.sinks
.k2
.port = 44445
a
.channels
.c1
.type = memory
a
.channels
.c1
.capacity=1000
a
.channels
.c1
.transactionCapacity=100
a
.sources
.s1
.channels = c1
a
.sinkgroups
.g1
.sinks = k1 k2
a
.sinkgroups
.g1
.processor
.type = load_balance
a1
.sinkgroups
.g1
.processor
.backoff = true
a1
.sinkgroups
.g1
.processor
.selector = random
a
.sinks
.k1
.channels = c1
a
.sinks
.k2
.channels = c1
注意:一般情况下,如果数据sources通过channels进入两个不同的sinks,需要保证sinks数据一致的话,必须每个sinks有自己单独的channel,共用一个channel会产生一个sinkgroups,sinkgroups的几种模式内部:failover/load_balance或者default,一般都是轮询或者随机发送数据到sinks,造成数据不一致。(failover按照权重,服务正常情况下,全部发送给权重高的sinks)