Corda 4.0 - 集群中的公证人实现高可用性

4

我正在尝试在 Corda V4.0 中开发一个应用程序,我们使用客户端 RPC API 进行测试(使用 DriverDSL)。

我的解决方案是一个 Raft 集群,有两个公证人节点进行 HA 测试。我还在公证人节点中实现了观察者解决方案,以使公证人节点在其存储库中记录所有交易。

当我发送了几个交易时,结果与预期不同:一些交易被记录在公证人集群 1 中,而其他交易则被记录在公证人集群 2 中。

这样做可以吗?我期望所有交易都保存在两个公证人集群中,否则 Corda 是如何解决 HA 的?

谢谢


1
嘿 - vrmouro,我假设你正在使用开箱即用的RAFT公证集群配置?这可能是在幕后处理的 - 我会进行一些挖掘。同时,你能否尝试模拟多次双重支付?如果其中一个成功了,我们就有了答案。 - Nicholas Rogers
嗨,我是@vrmouro的同事。我们正在使用build.gradle中的deployNodes任务中的选项raft来配置RAFT集群的公证节点。为了澄清问题,我们正在使用此公证作为参与者进行一些交易测试,并且我们观察到一些状态被存储在集群的一个节点中,而另一些则存储在另一个节点中。我们原本期望数据在两个节点之间进行复制。 - gerferra
非常感谢你的回答,Nicholas!正如我的同事所说,在我们的测试中,我们使用HA来避免双重花费,但是在集群的两个公证节点中并没有所有状态。如果您需要更多信息,请告诉我。 - vrmouro
1个回答

4
我们在 Corda live support [1] 上提出了这个问题,并得到了回答:
Corda 的行为是符合预期的。在 Notary 集群中复制的唯一数据是需要进行公证的数据。这个内置的集群支持不是为了高可用性而设计的。为了实现 HA,他们建议我们使用负载均衡器,并且有两个或更多节点将负载均衡器的 IP 公开发布。这些节点都应该使用相同的数据库(可能是 Postgres)。
总之,HA 应该在 Corda 外部解决。此外,他们建议我们查看 Corda Enterprise 中 "Hot-cold high availability deployment" 方面的文档[2],特别是关于配置负载均衡器的部分。
  1. https://www.corda.net/participate/community.html
  2. https://docs.corda.r3.com/hot-cold-deployment.html#configuring-the-load-balancer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接