春季云流运动结合器

时间:2018-09-18 02:56:21

标签: spring amazon-web-services spring-integration spring-cloud-stream

我正在尝试实现一个能够自动缩放以与原始实例共享负载(拆分处理碎片)的spring boot aws kinesis使用者。

我能做的:使用定义明确的自述文件和此处提供的示例Kinesis binder docs,我已经能够启动多个使用方,这些提供方实际上通过提供这些属性来对碎片进行处理。

在生产者上,我通过应用程序属性提供partitionCount:2。 在消费者上,我同时提供了instanceIndex和instanceCount。

在消费者1上,我具有instanceIndex = 0和InstantCount = 2, 在消费者2上,我具有instanceIndex = 1和InstantCount = 2

这很好用,我有两个处理它们特定碎片的spring boot应用程序。但是在这种情况下,每个引导应用程序都必须有一个预先配置的属性文件,该文件需要在加载时可用,以便他们拆分负载。并且,如果我仅启动第一个使用者(未自动缩放),则仅处理特定于索引0的碎片,而未处理其他碎片。

我想做的,但不确定是否可以部署单个使用者(处理所有分片)。如果我部署另一个实例,我希望该实例重现某些负载的第一个使用者,换句话说,如果我有2个分片和一个使用者,它将同时处理两个负载,如果我再部署另一个应用程序,则我希望该第一个使用者到现在,仅从单个分片进行处理,将第二个分片留给第二个使用者。

我试图通过不在使用者上指定instanceIndex或instanceCount并仅提供组名来做到这一点,但这使第二个使用者处于空闲状态,直到第一个使用者关闭。仅供参考,我还创建了自己的元数据和锁定表,以防止活页夹创建默认的元数据和锁定表。

配置: 生产者-----------------

originator: KinesisProducer
server:
 port: 8090

    spring: 
      cloud: 
        stream: 
          bindings:
            output: 
              destination: <stream-name> 
              content-type: application/json
              producer: 
                headerMode: none
                partitionKeyExpression: headers.type

消费者-------------------------------------

originator: KinesisSink
server:
 port: 8091

spring:
  cloud:
    stream:
      kinesis:
        bindings:
          input:
            consumer:
              listenerMode: batch
              recordsLimit: 10
              shardIteratorType: TRIM_HORIZON
        binder:
          checkpoint:
            table: <checkpoint-table>
          locks:
            table: <locking-table
      bindings:
        input:
          destination: <stream-name>
          content-type: application/json
          consumer:
            concurrency: 1
            listenerMode: batch
            useNativeDecoding: true
            recordsLimit: 10
            idleBetweenPolls: 250
            partitioned: true
          group: mygroup

1 个答案:

答案 0 :(得分:0)

是正确的。这就是现在的工作方式:如果有一个使用者在这里,它将处理所有碎片。仅当第一个碎片至少以某种方式折断时,第二个碎片才会采取操作。

我们的路线图上有适当的类似卡夫卡的重新平衡。我们还没有确定的愿景,因此欢迎您对此事发表意见并作出后续贡献!