Corda 节点何时检查点自身
我知道有一些与Corda 节点何时检查点自身,corda,Corda,我知道有一些与@Suspendable相关的注释将函数标记为可序列化。流检查点本身有多少 节点是否仅在等待响应时有send/send和receive时检查点自身?还是每隔一段时间将检查点序列化 给定一个只执行计算的流,它对磁盘的序列化/写入量是多少?如果执行vault查询/写入的其他线程的读/写负载达到峰值,这会影响性能吗 @Suspendable如何在这些只做计算而不做其他事情的私有方法中发挥作用。如果一个方法被注释,它只会在下一次send时被序列化,否则什么都不会被序列化 范例 @Suspe
@Suspendable
相关的注释将函数标记为可序列化。流检查点本身有多少
节点是否仅在等待响应时有send
/send和receive
时检查点自身?还是每隔一段时间将检查点序列化
给定一个只执行计算的流,它对磁盘的序列化/写入量是多少?如果执行vault查询/写入的其他线程的读/写负载达到峰值,这会影响性能吗
@Suspendable
如何在这些只做计算而不做其他事情的私有方法中发挥作用。如果一个方法被注释,它只会在下一次send
时被序列化,否则什么都不会被序列化
范例
@Suspendable
override fun call() {
val states = querySomeStates()
computeSomethingHeavy(states)
decideSomething()
}
@Suspendable
private querySomeStates()
@Suspendable
computeSomethingHeavy()
@Suspendable
decideSomething()
@Suspendable
将函数标记为可能可挂起。仅当执行以下操作之一时,流才会实际暂停:
- 流量启动
send
接收
send和receive
waitForLedgerCommit
getFlowInfo
睡眠
@Suspendable
,这也是正确的。换句话说,Quasar不做抢占,这意味着我们不“定期检查”,而只在特定的呼叫站点
例如,下面是一个简单流中的检查点序列:
@Suspendable
趣味电话(){
//检查站!
发送某物
计算某物()
}
@暂停
有趣的事{
send()//检查点!
}
@暂停
有趣的计算某物{
heavyComputation()//没有检查点!
}