1

我正在尝试以分布式模式配置 spring XD,但不幸的是我无法这样做。我正在尝试使用 redis 支持模块间通道,并且我正在运行一个 3 节点 redis 3.0 集群。

我对配置的更改如下所示,如果我遗漏了什么或者我需要做任何其他事情以使我的 spring 实例以分布式模式运行,请告诉我:

xd-container 的 servers.yml 文件配置如下

            spring:
              profiles: container
            xd:
              transport: redis
            embeddedHsql: false
            .
            .
            .
            .
            spring:
              datasource:
                url: jdbc:mysql://mysql-instance01:3306/springxd
                username: springxd
                password: springxd
                driverClassName: com.mysql.jdbc.Driver
                validationQuery: select 1
            .
            .
            .
            spring:
              redis:
               port: 6379
               host: redis-instance01
               pool:
                 maxIdle: 8
                 minIdle: 0
                 maxActive: -1
                 maxWait: 30000
               sentinel:
                 master: mymaster
                 nodes: redis-instance02:6379,redis-instance03:6379

如果我使用此配置运行 xd-container,我会得到错误堆栈跟踪,如下所示

如果我删除哨兵,哨兵:主,哨兵:节点,容器启动正常但在部署某些流时失败,错误日志如下所示

但是当尝试使用 JedisCluster 从 java 连接时,我的 redis 集群绝对没有问题。

我在这个配置中遗漏了什么吗?有什么想法或意见吗?

提前致谢。

4

1 回答 1

0

增加 Redis maxclients

我的测试应用程序工作(具有 3 个容器的分布式模式)与配置(一台机器):

spring:
  profiles: container
xd:
  transport: redis
---
# Redis properties
spring:
  redis:
    port: 6379
    host: 127.0.0.1
    pool:
      maxIdle: 8
      minIdle: 0
      maxActive: -1
      maxWait: 30000

Redis 主要是单线程应用程序。

Redis 将尝试将数据持久化到磁盘。虽然 redis 为这个过程分叉,但它仍然会减慢一切。

对于分布式模式 - 例如需要使用 kafka。

希望这对您有所帮助。

于 2016-08-04T12:31:26.713 回答