22、性能架构设计:CRDTs与交易策略优化

性能架构设计:CRDTs与交易策略优化

1. CRDTs在自动交易系统中的应用

在自动交易系统中,CRDTs(冲突无感知复制数据类型)是一个很好的实现选择。每个节点可以将每个客户的余额状态以计数器的形式保存在内存中,在下单时更新该计数器,并将更新消息广播到系统的其他部分。这种广播可以在关键路径之外完成,而且由于CRDTs的特性,我们无需担心冲突处理问题。最终,所有节点的内存中每个余额都会有相同的值,并且能够在本地检查交易授权,这样就可以完全移除余额监控服务器。

为了将余额状态实现为CRDT,我们需要一个比之前更复杂的计数器。因为订单有时会被取消,系统必须对客户账户进行贷记,所以余额不能用仅递增的计数器来表示,该计数器必须能够处理递增和递减操作。以下是一个基于状态的计数器的简单实现:

case class PNCounterState(incState: GCounterState, decState: GCounterState)
class StateBasedPNCounter private(
  incCounter: StateBasedGCounter,
  decCounter: StateBasedGCounter) {
  def value = incCounter.value - decCounter.value
  def update(change: CounterUpdate): (StateBasedPNCounter, PNCounterState) = {
    val (newIncCounter, newDecCounter, stateUpdate) =
      change
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值