Ch14 Agreement

1/30/2022 ServiceService Computing

# Ch14 Agreement

  • Protocal定义了coordinator 和 participants之间消息的传递(包括顺序)img

  • agreement:达成共识,比如一个auction系统中,谁最后出价最高是需要达成共识的

    • 例子:比如在一个需要保证Acid的应用中,Cooordinator表示事务的实现细节,到底是回滚还是提交,Application只需要接受消息,事务成功或者失败img

    • 例子:比如2PC时,需要所有节点达成共识才能最终提交img

  • Coordinator包含:

    imgimg

    • Activation Service:用来开启一种需要达成共识的activity,会产生coordination context

    • Registration Service:用来注册或者记录共识的参与者

  • 步骤:

    img

      1. 一个应用通过activation service开启了一个activity,返回一个coordination context(一般都是在消息的header中传递的),包含以下信息img
    • ​ 2.应用通过其中的registeration service来与protocal的子集绑定,注册自己

  • 实现:

      1. Coordinator给service发消息要求他们注册,以完成共同的任务,这样就可以管理这些service,比如让他们全部回滚img
      1. service通过收到的消息中的registration service来注册自己,把自己的port和id和protocal传递给registration service,然后被返回一些coordinator的port,这样participant和coordinator就绑定到了一起img
  • 例子:当然App2和DBMS也可以直接在coord1中注册

    img

    • App A1先发起了一个activity的请求给他的coordinator的Activation service,收到回复之后注册自己到‘completion’ protocal,并把回复和自己的消息一并发到A2,告诉A2你也必须要注册

    • App A2会在自己server的coordinator的Activation service注册自己到‘Volatile’ protocal,Coord2再把自己注册到Coord1中,这样Coord1就可以管理Coord2了(activity为C1)

  • 把附带Coordination context 的message发给其他应用:

    img

    • 向Activation service申请开启一个coordination activityimg

    • Activation service返回responseimg

  • Activation protocal

    • Asychronous:requester实现response,调用requestimgimg

    • Synchronize:requester不用实现任何port typeimgimg

  • Register消息:request,要求传递participant的port type

    imgimg

    • responseimgimgimg

    • 同样也有synchronize类型img

Last Updated: 11/19/2024, 1:54:38 PM