Amazon Managed Streaming for Kafka-MSK 功能和性能
Amazon Managed Streaming for Kafka- MSK features and performance
我正在评估 AWS Managed Service Kafka (MSK),我知道它目前处于预览模式,因此可能没有所有功能或适当的文档。我尝试搭建了msk集群,正在验证msk是否可以满足我们公司的所有使用case/requirement,但是目前,它缺少文档和示例。
https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html
我有以下疑问:
i) 如何在本地系统上使用 Kafka 客户端 运行 访问 AWS MSK?
ii) MSK 是否支持模式演化和恰好一次语义?
iii) MSK 会提供一些方法来更新某些集群或调整配置吗?像 aws glue 在其托管环境中为 spark executr 和驱动程序内存提供参数更改。
iv) 是否可以将 MSK 与其他 AWS 服务(例如 Redshift、EMR 等)集成?
v) 我可以通过 ksql 将流媒体 sql 与 MSK 一起使用吗?如何使用 MSK 设置 KSQL?
vi) 如何对流经 MSK 的数据进行实时预测分析?
vii) 另外,与 Azure/confluent 的其他基于云的 kafka 集群相比,MSK 的可靠性如何,以及与 vanilla kafka 相比的任何性能基准?集群最多可以启动多少个broker?
MSK 基本上是由 aws 定制和管理的 vanilla apache kafka 集群(具有基于集群实例类型、代理数量等的预定义配置设置),针对云环境进行了调整。
理想情况下,它应该能够执行 all/most 开源 Kafka 支持的事情。
此外,如果您有未记录的特定用例或要求,我建议您联系 AWS 支持以进一步澄清有关 kafka 集群的托管部分(允许的最大代理数量、可靠性、成本)。
我会尽量根据我的个人经验来回答你的问题:
i) 如何在我的本地系统上使用 kafka 客户端 运行ning 访问 AWS MSK?
您无法使用 kafka 客户端或 kafka 流直接从本地或本地计算机访问 MSK。因为 broker url,zookeeper 连接字符串是 msk 集群 vpc/subnet 的私有 ip。通过kafka client访问,需要在MsK的同一个vpc中启动ec2实例,执行kafka client(producer/consumer)访问msk集群。
要从本地机器或本地系统访问MSK集群,您可以设置由Confluent开源的kafka Rest Proxy框架从外部访问MSK集群世界通过休息 api。这个框架不是成熟的kafka客户端,不允许kafka客户端的所有操作,但是你可以在集群上做大部分操作,从获取集群的元数据、主题信息、生产和消费消息等开始
首先设置 confluent repo 和 ec2 实例安全组(参考 - 第 1 节:预安装或设置 - 其他 kafka 组件)然后 install/setup卡夫卡休息代理。
sudo yum install confluent-kafka-rest
创建文件名kafka-rest.properties并添加如下内容-
bootstrap.servers=PLAINTEXT://10.0.10.106:9092,PLAINTEXT://10.0.20.27:9092,PLAINTEXT://10.0.0.119:9092
zookeeper.connect=10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181
schema.registry.url=http://localhost:8081
** 修改 bootstrap 服务器和动物园管理员 url/ips。
启动休息服务器
kafka-rest-start kafka-rest.properties &
使用 curl 或 rest client/browser.
通过 rest API 访问 MSK
获取主题列表
curl "http://localhost:8082/topics"
curl "http://<ec2 instance public ip>:8082/topics"
为了从本地或本地机器访问,请确保其余服务器所在的 ec2 实例 运行ning 具有 public ip 或 elastic ip 附加。
更多休息API操作
https://github.com/confluentinc/kafka-rest
ii) MSK 是否支持模式演化和恰好一次语义?
您可以使用 avro 消息和 'Schema Registry' 来实现模式演化和模式维护。
安装和设置架构注册表类似于 confluent kafka-rest 代理。
sudo yum install confluent-schema-registry
创建文件名架构-registry.propertie并添加以下内容-
listeners=http://0.0.0.0:8081
kafkastore.connection.url=10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181
kafkastore.bootstrap.servers=PLAINTEXT://10.0.10.106:9092,PLAINTEXT://10.0.20.27:9092,PLAINTEXT://10.0.0.119:9092
kafkastore.topic=_schemas
debug=false
** 修改 bootstrap 服务器和 zookeeper(连接)url/ips。
启动架构注册服务
schema-registry-start schema-registry.properties &
更多信息请参考:
https://github.com/confluentinc/schema-registry
https://docs.confluent.io/current/schema-registry/docs/schema_registry_tutorial.html
Exactly once 语义是 apache kafka 的特性,虽然我没有在 msk 上测试它,但我相信它应该支持这个特性,因为它只是开源 apache kafka 的一部分。
iii) MSK 会提供一些方法来更新某些集群或调整配置吗? 就像 aws glue 在其托管环境中为 spark 执行器和驱动程序内存提供参数更改。
是的,可以在 运行 时更改配置参数。我已经通过使用 kafka 配置工具更改 retention.ms 参数进行了测试,并且更改立即应用于该主题。所以我认为你也可以更新其他参数,但 MSK 可能不允许所有配置更改,就像 AWS glue 只允许很少的 spark 配置参数更改一样,因为允许用户更改所有参数可能容易受到托管环境的影响。
通过kafka配置工具更改
kafka-configs.sh --zookeeper 10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181 --entity-type topics --entity-name jsontest --alter --add-config retention.ms=128000
使用 rest 验证更改
curl "http://localhost:8082/topics/jsontest"
现在 Amazon MSK 让您可以创建自定义 MSK 配置。
可以更新的config/parameters请参考以下文档:
https://docs.aws.amazon.com/msk/latest/developerguide/msk-configuration-properties.html
也是MSK Kafka的默认配置:
https://docs.aws.amazon.com/msk/latest/developerguide/msk-default-configuration.html
iv) 是否可以将 MSK 与其他 AWS 服务(例如 Redshift、EMR 等)集成?
是的,您可以 connect/integrate 使用 MSK 访问其他 aws 服务。例如,您可以 运行 Kafka 客户端(消费者)从 kafka 读取数据并写入 redshift、rds、s3 或 dynamodb。确保 kafka 客户端在 ec2 实例(在 msk vpc 内)上 运行ning 具有适当的 iam 角色来访问这些服务,并且 ec2 实例位于 public 子网或私有子网(具有 NAT 或s3 的 vpc 端点)。
您还可以在 MSK 集群中启动 EMR vpc/subnet,然后通过 EMR(spark) 连接到其他服务。
使用 AWS Managed Service Kafka 的 Spark 结构流
在 MSK 集群的 vpc 中启动 EMR 集群
MSK集群安全组9092端口入站规则允许EMR主从安全组
启动 Spark shell
spark-shell --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0
从 spark 结构流连接到 MSK 集群
val kafka = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "10.0.10.106:9092,10.0.20.27:9092,10.0.0.119:9092").option("subscribe", "jsontest") .load()
启动reading/printing控制台上的消息
val df=kafka.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)").writeStream.format("console").start()
或
val df=kafka.selectExpr("CAST(value AS STRING)").writeStream.format("console").start()
v) 我可以通过 ksql 将流媒体 sql 与 MSK 一起使用吗?如何使用 MSK 设置 KSQL?
是的,您可以使用 MSK 集群设置 KSQL。基本上,您需要在 MSK 集群的同一 vpc/subnet 中启动一个 ec2 实例。然后在ec2实例中安装ksql server+ client即可使用。
首先设置 confluent repo 和 ec2 实例安全组(参考 - Section-1: Pre Install or set up- additional kafka components)然后 install/setup K sql server/client.
之后安装ksql服务器
sudo yum install confluent-ksql
创建文件名ksql-server.properties并添加以下内容-
bootstrap.servers=10.0.10.106:9092,10.0.20.27:9092,10.0.0.119:9092
listeners=http://localhost:8088
** 修改 bootstrap 服务器 ips/url.
启动 ksql 服务器
ksql-server-start ksql-server.properties &
之后启动 ksql cli
ksql http://localhost:8088
最后运行获取主题列表的命令
ksql> SHOW TOPICS;
Kafka Topic | Registered | Partitions | Partition Replicas | Consumers | ConsumerGroups
-----------------------------------------------------------------------------------------
_schemas | false | 1 | 3 | 0 | 0
jsontest | false | 1 | 3 | 1 | 1
----------------------------- --------------------------------------------------
参考更多信息-
https://github.com/confluentinc/ksql
vi) 如何对流经 MSK 的数据进行实时预测分析?
进行预测分析或实时机器学习并不是 MSK 特有的。使用 kafka 集群(或任何流媒体管道)的方式同样适用于 MSK。有多种方法可以根据您的具体要求实现,但我将描述整个行业最常见或广泛使用的方法:
将 Spark 与 MSK (kafka) 结合使用,并通过结构流和 MLIB(具有您的预测模型)进行分析。
您可以在 H20.ai 框架中训练您的预测模型,然后将模型导出为 java pojo。然后将 java pojo 模型与 kafka 消费者代码集成,该代码将处理来自 msk(kafka) 主题的消息并进行实时分析。
您可以在sagemaker中训练模型并部署,然后从kafka客户端消费者代码调用基于kafka的sagemaker模型推理端点进行实时预测data/message.
vii) 另外,与来自 Azure/confluent 的其他基于云的 kafka 集群 相比,MSK 的可靠性如何以及与 vanilla kafka 相比的任何性能基准?集群最多可以启动多少个broker?
如您所知,MSK 处于预览阶段,因此现在谈论其可靠性还为时过早。但总的来说,与所有其他 AWS 服务一样,随着时间的推移,它应该会随着新功能和更好的文档而变得更加可靠。
我不认为 AWS 或任何云供应商是天真的,google 云提供了他们服务的性能基准,所以你必须从你这边尝试性能测试。而kafkaclients/tools(kafka-producer-perf-test.sh,kafka-consumer-perf-test.sh) 提供一个性能基准脚本,可以执行该脚本以了解集群的性能。同样,在实际生产场景中服务的性能测试会因各种因素而有很大差异,例如(消息大小、进入 kafka 的数据量、同步或异步生产者、有多少消费者等),性能将归结为特定的用例而不是通用基准。
关于集群中支持的最大代理数,最好通过他们的支持系统询问 AWS 人员。
第 1 部分:预安装或设置 - 其他 kafka 组件:
在 MSK 集群的 vpc/subnet.
中启动 Ec2 实例
登录ec2实例
设置yum repo通过yum下载confluent kafka组件包
sudo yum install curl which
sudo rpm --import https://packages.confluent.io/rpm/5.1/archive.key
导航到 /etc/yum.repos.d/ 并创建一个名为 confluent.repo 的文件并添加以下内容
[Confluent.dist]
name=Confluent repository (dist)
baseurl=https://packages.confluent.io/rpm/5.1/7
gpgcheck=1
gpgkey=https://packages.confluent.io/rpm/5.1/archive.key
enabled=1
[Confluent]
name=Confluent repository
baseurl=https://packages.confluent.io/rpm/5.1
gpgcheck=1
gpgkey=https://packages.confluent.io/rpm/5.1/archive.key
enabled=1
下一步清理 yum 仓库
sudo yum clean all
在MSK集群安全组的入站规则中允许ec2实例的安全组对端口9092(连接broker)和2081(连接zookeeper)
第 2 部分:获取 MSK 集群代理和 zookeeper 的命令 url/ip 信息
Zookeeper 连接url端口
aws kafka describe-cluster --region us-east-1 --cluster-arn <cluster arn>
代理连接url端口
aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn <cluster arn>
---------------------------------------- ------------------------------
注:
MSK 概述和组件设置:
请参考 MSK 高级架构以及如何设置各种组件(rest、模式注册表、粘性负载平衡器等)。还有它将如何与其他 aws 服务连接。只是一个简单的参考架构而已。
此外,除了在 ec2 实例上设置 rest、schema registry 和 ksql,您还可以在容器内部进行 dockerize。
并且如果您正在设置多个 rest 代理,那么您需要将该 rest-proxy 服务放在一个粘性负载均衡器后面,例如(nginx 使用 ip hash)以确保相同的客户端消费者映射到相同的消费者组,以避免跨数据读取获取数据 mismatch/inconsistencies。
希望以上信息对您有用!!
我正在评估 AWS Managed Service Kafka (MSK),我知道它目前处于预览模式,因此可能没有所有功能或适当的文档。我尝试搭建了msk集群,正在验证msk是否可以满足我们公司的所有使用case/requirement,但是目前,它缺少文档和示例。
https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html
我有以下疑问:
i) 如何在本地系统上使用 Kafka 客户端 运行 访问 AWS MSK?
ii) MSK 是否支持模式演化和恰好一次语义?
iii) MSK 会提供一些方法来更新某些集群或调整配置吗?像 aws glue 在其托管环境中为 spark executr 和驱动程序内存提供参数更改。
iv) 是否可以将 MSK 与其他 AWS 服务(例如 Redshift、EMR 等)集成?
v) 我可以通过 ksql 将流媒体 sql 与 MSK 一起使用吗?如何使用 MSK 设置 KSQL?
vi) 如何对流经 MSK 的数据进行实时预测分析?
vii) 另外,与 Azure/confluent 的其他基于云的 kafka 集群相比,MSK 的可靠性如何,以及与 vanilla kafka 相比的任何性能基准?集群最多可以启动多少个broker?
MSK 基本上是由 aws 定制和管理的 vanilla apache kafka 集群(具有基于集群实例类型、代理数量等的预定义配置设置),针对云环境进行了调整。
理想情况下,它应该能够执行 all/most 开源 Kafka 支持的事情。 此外,如果您有未记录的特定用例或要求,我建议您联系 AWS 支持以进一步澄清有关 kafka 集群的托管部分(允许的最大代理数量、可靠性、成本)。
我会尽量根据我的个人经验来回答你的问题:
i) 如何在我的本地系统上使用 kafka 客户端 运行ning 访问 AWS MSK?
您无法使用 kafka 客户端或 kafka 流直接从本地或本地计算机访问 MSK。因为 broker url,zookeeper 连接字符串是 msk 集群 vpc/subnet 的私有 ip。通过kafka client访问,需要在MsK的同一个vpc中启动ec2实例,执行kafka client(producer/consumer)访问msk集群。
要从本地机器或本地系统访问MSK集群,您可以设置由Confluent开源的kafka Rest Proxy框架从外部访问MSK集群世界通过休息 api。这个框架不是成熟的kafka客户端,不允许kafka客户端的所有操作,但是你可以在集群上做大部分操作,从获取集群的元数据、主题信息、生产和消费消息等开始
首先设置 confluent repo 和 ec2 实例安全组(参考 - 第 1 节:预安装或设置 - 其他 kafka 组件)然后 install/setup卡夫卡休息代理。
sudo yum install confluent-kafka-rest
创建文件名kafka-rest.properties并添加如下内容-
bootstrap.servers=PLAINTEXT://10.0.10.106:9092,PLAINTEXT://10.0.20.27:9092,PLAINTEXT://10.0.0.119:9092
zookeeper.connect=10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181
schema.registry.url=http://localhost:8081
** 修改 bootstrap 服务器和动物园管理员 url/ips。
启动休息服务器
kafka-rest-start kafka-rest.properties &
使用 curl 或 rest client/browser.
通过 rest API 访问 MSK获取主题列表
curl "http://localhost:8082/topics"
curl "http://<ec2 instance public ip>:8082/topics"
为了从本地或本地机器访问,请确保其余服务器所在的 ec2 实例 运行ning 具有 public ip 或 elastic ip 附加。
更多休息API操作 https://github.com/confluentinc/kafka-rest
ii) MSK 是否支持模式演化和恰好一次语义?
您可以使用 avro 消息和 'Schema Registry' 来实现模式演化和模式维护。
安装和设置架构注册表类似于 confluent kafka-rest 代理。
sudo yum install confluent-schema-registry
创建文件名架构-registry.propertie并添加以下内容-
listeners=http://0.0.0.0:8081
kafkastore.connection.url=10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181
kafkastore.bootstrap.servers=PLAINTEXT://10.0.10.106:9092,PLAINTEXT://10.0.20.27:9092,PLAINTEXT://10.0.0.119:9092
kafkastore.topic=_schemas
debug=false
** 修改 bootstrap 服务器和 zookeeper(连接)url/ips。
启动架构注册服务
schema-registry-start schema-registry.properties &
更多信息请参考: https://github.com/confluentinc/schema-registry
https://docs.confluent.io/current/schema-registry/docs/schema_registry_tutorial.html
Exactly once 语义是 apache kafka 的特性,虽然我没有在 msk 上测试它,但我相信它应该支持这个特性,因为它只是开源 apache kafka 的一部分。
iii) MSK 会提供一些方法来更新某些集群或调整配置吗? 就像 aws glue 在其托管环境中为 spark 执行器和驱动程序内存提供参数更改。
是的,可以在 运行 时更改配置参数。我已经通过使用 kafka 配置工具更改 retention.ms 参数进行了测试,并且更改立即应用于该主题。所以我认为你也可以更新其他参数,但 MSK 可能不允许所有配置更改,就像 AWS glue 只允许很少的 spark 配置参数更改一样,因为允许用户更改所有参数可能容易受到托管环境的影响。
通过kafka配置工具更改
kafka-configs.sh --zookeeper 10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181 --entity-type topics --entity-name jsontest --alter --add-config retention.ms=128000
使用 rest 验证更改
curl "http://localhost:8082/topics/jsontest"
现在 Amazon MSK 让您可以创建自定义 MSK 配置。
可以更新的config/parameters请参考以下文档:
https://docs.aws.amazon.com/msk/latest/developerguide/msk-configuration-properties.html
也是MSK Kafka的默认配置:
https://docs.aws.amazon.com/msk/latest/developerguide/msk-default-configuration.html
iv) 是否可以将 MSK 与其他 AWS 服务(例如 Redshift、EMR 等)集成?
是的,您可以 connect/integrate 使用 MSK 访问其他 aws 服务。例如,您可以 运行 Kafka 客户端(消费者)从 kafka 读取数据并写入 redshift、rds、s3 或 dynamodb。确保 kafka 客户端在 ec2 实例(在 msk vpc 内)上 运行ning 具有适当的 iam 角色来访问这些服务,并且 ec2 实例位于 public 子网或私有子网(具有 NAT 或s3 的 vpc 端点)。
您还可以在 MSK 集群中启动 EMR vpc/subnet,然后通过 EMR(spark) 连接到其他服务。
使用 AWS Managed Service Kafka 的 Spark 结构流
在 MSK 集群的 vpc 中启动 EMR 集群 MSK集群安全组9092端口入站规则允许EMR主从安全组
启动 Spark shell
spark-shell --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0
从 spark 结构流连接到 MSK 集群
val kafka = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "10.0.10.106:9092,10.0.20.27:9092,10.0.0.119:9092").option("subscribe", "jsontest") .load()
启动reading/printing控制台上的消息
val df=kafka.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)").writeStream.format("console").start()
或
val df=kafka.selectExpr("CAST(value AS STRING)").writeStream.format("console").start()
v) 我可以通过 ksql 将流媒体 sql 与 MSK 一起使用吗?如何使用 MSK 设置 KSQL?
是的,您可以使用 MSK 集群设置 KSQL。基本上,您需要在 MSK 集群的同一 vpc/subnet 中启动一个 ec2 实例。然后在ec2实例中安装ksql server+ client即可使用。
首先设置 confluent repo 和 ec2 实例安全组(参考 - Section-1: Pre Install or set up- additional kafka components)然后 install/setup K sql server/client.
之后安装ksql服务器
sudo yum install confluent-ksql
创建文件名ksql-server.properties并添加以下内容-
bootstrap.servers=10.0.10.106:9092,10.0.20.27:9092,10.0.0.119:9092
listeners=http://localhost:8088
** 修改 bootstrap 服务器 ips/url.
启动 ksql 服务器
ksql-server-start ksql-server.properties &
之后启动 ksql cli
ksql http://localhost:8088
最后运行获取主题列表的命令
ksql> SHOW TOPICS;
Kafka Topic | Registered | Partitions | Partition Replicas | Consumers | ConsumerGroups
-----------------------------------------------------------------------------------------
_schemas | false | 1 | 3 | 0 | 0
jsontest | false | 1 | 3 | 1 | 1
----------------------------- --------------------------------------------------
参考更多信息- https://github.com/confluentinc/ksql
vi) 如何对流经 MSK 的数据进行实时预测分析?
进行预测分析或实时机器学习并不是 MSK 特有的。使用 kafka 集群(或任何流媒体管道)的方式同样适用于 MSK。有多种方法可以根据您的具体要求实现,但我将描述整个行业最常见或广泛使用的方法:
将 Spark 与 MSK (kafka) 结合使用,并通过结构流和 MLIB(具有您的预测模型)进行分析。
您可以在 H20.ai 框架中训练您的预测模型,然后将模型导出为 java pojo。然后将 java pojo 模型与 kafka 消费者代码集成,该代码将处理来自 msk(kafka) 主题的消息并进行实时分析。
您可以在sagemaker中训练模型并部署,然后从kafka客户端消费者代码调用基于kafka的sagemaker模型推理端点进行实时预测data/message.
vii) 另外,与来自 Azure/confluent 的其他基于云的 kafka 集群 相比,MSK 的可靠性如何以及与 vanilla kafka 相比的任何性能基准?集群最多可以启动多少个broker?
如您所知,MSK 处于预览阶段,因此现在谈论其可靠性还为时过早。但总的来说,与所有其他 AWS 服务一样,随着时间的推移,它应该会随着新功能和更好的文档而变得更加可靠。
我不认为 AWS 或任何云供应商是天真的,google 云提供了他们服务的性能基准,所以你必须从你这边尝试性能测试。而kafkaclients/tools(kafka-producer-perf-test.sh,kafka-consumer-perf-test.sh) 提供一个性能基准脚本,可以执行该脚本以了解集群的性能。同样,在实际生产场景中服务的性能测试会因各种因素而有很大差异,例如(消息大小、进入 kafka 的数据量、同步或异步生产者、有多少消费者等),性能将归结为特定的用例而不是通用基准。
关于集群中支持的最大代理数,最好通过他们的支持系统询问 AWS 人员。
第 1 部分:预安装或设置 - 其他 kafka 组件:
在 MSK 集群的 vpc/subnet.
中启动 Ec2 实例登录ec2实例
设置yum repo通过yum下载confluent kafka组件包
sudo yum install curl which
sudo rpm --import https://packages.confluent.io/rpm/5.1/archive.key
导航到 /etc/yum.repos.d/ 并创建一个名为 confluent.repo 的文件并添加以下内容
[Confluent.dist]
name=Confluent repository (dist)
baseurl=https://packages.confluent.io/rpm/5.1/7
gpgcheck=1
gpgkey=https://packages.confluent.io/rpm/5.1/archive.key
enabled=1
[Confluent]
name=Confluent repository
baseurl=https://packages.confluent.io/rpm/5.1
gpgcheck=1
gpgkey=https://packages.confluent.io/rpm/5.1/archive.key
enabled=1
下一步清理 yum 仓库
sudo yum clean all
在MSK集群安全组的入站规则中允许ec2实例的安全组对端口9092(连接broker)和2081(连接zookeeper)
第 2 部分:获取 MSK 集群代理和 zookeeper 的命令 url/ip 信息
Zookeeper 连接url端口
aws kafka describe-cluster --region us-east-1 --cluster-arn <cluster arn>
代理连接url端口
aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn <cluster arn>
---------------------------------------- ------------------------------
注:
MSK 概述和组件设置:
请参考 MSK 高级架构以及如何设置各种组件(rest、模式注册表、粘性负载平衡器等)。还有它将如何与其他 aws 服务连接。只是一个简单的参考架构而已。
此外,除了在 ec2 实例上设置 rest、schema registry 和 ksql,您还可以在容器内部进行 dockerize。
并且如果您正在设置多个 rest 代理,那么您需要将该 rest-proxy 服务放在一个粘性负载均衡器后面,例如(nginx 使用 ip hash)以确保相同的客户端消费者映射到相同的消费者组,以避免跨数据读取获取数据 mismatch/inconsistencies。
希望以上信息对您有用!!