You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Corda节点与Notary通信机制及首次流执行耗时问题咨询

Corda节点通信与流性能相关问题解答

问题1:Corda节点与Notary的通信是否与和其他peer节点的通信方式相同?

TLS connections
Corda使用TLS对节点间的点对点连接进行加密。实践表明,JVM TLS层可达到的最大吞吐量会限制需要在peer间传输大量数据的流的节点吞吐量,例如性能测试CorDapp中的CashIssueAndPayment流。

参考Corda 4.9企业版官方文档中关于TLS连接的优化章节可知:Corda节点与Notary的通信和与其他peer节点的通信采用相同的TLS加密机制,文档明确说明所有节点间的点对点连接均通过TLS加密,Notary作为网络内的节点之一,遵循统一的通信加密规则。

问题2:若节点与Notary的通信同样采用上述TLS机制,那么连接(如握手)是仅在首次流执行时建立,还是随节点重启时就建立?

节点与Notary的TLS连接握手仅在首次执行涉及Notary的流时建立,节点重启后不会自动预建立该连接。只有当节点发起需要与Notary交互的流操作(如公证交易)时,才会触发完整的TLS握手流程,建立加密连接;后续涉及Notary的流调用可复用已建立的连接,无需重复握手。

补充问题:节点启动后首次调用流比后续调用耗时显著更长的原因分析

对应原问题:Corda JMeter性能测试中,线程组内首个采样器(均为Java请求采样器)耗时远高于后续采样器

导致首次流调用耗时更长的核心原因包括:

  • TLS握手开销:首次与peer或Notary通信时,需完成证书验证、密钥协商等完整TLS握手步骤,产生额外耗时;后续调用复用已建立的连接,避免重复握手。
  • JVM类加载与初始化:节点启动后首次执行流,JVM需加载并初始化CorDapp类、流逻辑类及依赖库,该初始化操作仅在首次执行时发生,后续调用直接复用已加载的类实例。
  • 缓存未命中:首次执行流时,节点的身份信息、网络地址等缓存尚未建立,需从数据库或网络获取数据;后续调用直接读取缓存,提升效率。
  • 数据库连接初始化:首次流执行可能需要建立新的数据库连接或初始化会话,该过程增加首次调用耗时;后续调用复用连接池中的已有连接。

内容的提问来源于stack exchange,提问作者Benjamin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:05:42