基于kafka的多重订购服务的真正用途是什么

时间:2018-11-16 10:00:57

标签: apache-kafka hyperledger-fabric hyperledger-composer

我是面料技术的新手。我阅读了一些有关基于Kafka的订购服务及其优势的文章。一些文章说基于Kafka的多重订购服务适合容错。现在我只应用3种基于Kafka的订购服务(orderer0,orderer1,orderer2)。然后我使用以下命令停止了2个订购者

docker stop orderer1.example.com
docker stop orderer2.example.com

现在,Rest api可以正常工作了。然后我停止使用

docker stop orderer0.example.com

现在我的Rest api无法正常工作。它面临着网络连接问题。然后我使用以下命令启动了orderer1,orderer2

docker start orderer1.example.com
docker start orderer2.example.com

但是我的Rest api无法正常工作..............它面临着相同的网络连接问题。

最后我开始使用

docker start orderer0.example.com

现在网络运行正常。

我的问题是

  1. 基于Kafka的订购服务的实际用途是什么??

  2. 我们如何实现基于Kafka的订购服务,以防止订购者出现问题... ??

结构:1.1.0
作曲者:0.19.16
节点:8.11.3
操作系统:Ubuntu 16.04

2 个答案:

答案 0 :(得分:0)

当我想设置多个订购者时,我遇到了与您相同的问题。为了解决这个问题,我有2个解决方案:

  1. 我更改了SDK,当前您的SDK尝试联系orderer0,如果失败则返回错误,因此有必要进行更改,以便请求在订单列表上循环并在no无效时返回错误。 / li>
  2. 更轻松:在订购者的上游设置负载均衡器。

回答您的问题。设置基于Kafka的订购服务的优势在于,所建议模块的数据分布在多个服务器上。容错性是因为如果订购者崩溃并重新连接到kafka群集,它将能够重新同步。性能更好(理论上我没有对此进行测试)

答案 1 :(得分:0)

按照Kafka Ordering Services

  

每个频道都映射到Kafka中一个单独的单分区主题

这意味着主题中的所有消息都按照发送的顺序进行了完全排序。

  

[broker的数量]至少应设置为4。(正如我们将在下面的第4步中说明的那样,这是展现崩溃容错能力所必需的最小节点数,即具有4个broker,您可以关闭1个经纪商,所有渠道将继续可读写,并且可以创建新渠道。)

以上假设Kafka复制因子为3,生产客户端最好将min.insync.replicas设置为2,以确保将所有写入均复制到至少两个服务器上。

基于您的网络问题,这听起来像是您实际上没有正确配置所有三个代理(需要查看整个Docker设置以及Dockerfile的实际操作)。但是,假设您确实为此“ REST API”配置了所有三个代理,并且有一个带有3个副本的单分区Kafka主题(默认复制为1,并且使用此主题自动创建主题)。因此,我建议您先清理所有内容,然后启动三个代理,然后手动创建具有1个分区,3个副本的主题,然后启动Hyperledger。

如果REST API是实际问题,而不是Kafka连接,那么我想您需要一个负载均衡器