• 事务定义

    分布式系统会造成数据一致性问题,由此,产生了分布式事务。分布式事务是指,事务发起者、事务协调者、资源及资源管理器分别位于不同的分布式系统的不同节点上。

    使用事务定义,可以使在跨数据库、跨消息、跨微服务的情况下接入事务。从复杂的事务问题中抽出,更好的实现分布式事务,避免了分布式场景下产生数据不一致的问题,且对已有的业务代码不造成干扰。

    猪齿鱼使用Saga模式进行事务定义。Saga的定义是Long Lived Transaction(LLT,长活事务),长是指跨系统的多次“事务”,其核心理念是避免使用长期持有锁(例如两阶段提交)的长事务,而应将事务切分为一组按序依次提交的短事务。Saga一般由多个外部任务构成,需要通过多次外部系统的消息交互,才能将整体事务从开始迁移到结束状态,这与我们原来常见的在一个数据库的短事务是不一样的。

    定义

    Saga采用了BASE(Basic Availability, Soft, Eventual consistency,即基本的可用性,柔性,最终的一致性)事务的方式,也就是走向最终一致性的柔性事务,来避免消耗大量资源的同步、锁定。这与ACID事务,(Atomicity、Consistency、Isolation、Durability,即原子性,一致性,隔离性,持久性),要么一起成功,要么一起失败的方式是不同的。和ACID相比,BASE不能轻易的回滚,只能通过补偿(Compensating)操作达到最终一致性。

    事务定义列表

    事务定义列表的展示字段有:编码、定义的服务、描述。

    定义

    事务定义详情

    1. 进入平台管理,点击菜单“管理>事务管理>事务定义”,进入事务定义页面。
    2. 点击事务定义列表的名称,可查看事务定义的详情。
    3. 查看事务定义的详情一共有流程图和Json文件两种查看方式。图根据Json文件内容所生成。点击流程图中的节点可查看该节点的详细信息。
        - 任务编码:用来标识任务,具有唯一性。
        - 任务描述:描述任务执行的功能。
        - 序列:任务在执行流程中的执行顺序。
        - 并发限制模式:任务在执行流程中的并发模式。有`NONE`、`TYPE`、`TYPE_AND_ID`三种模式。并发模式为`NONE`时不设置并发限制,为`TYPE`时根据ref_type限制并发,为`TYPE_AND_ID`时根据ref_type和ref_id共同限制并发。
        - 最大并发数:任务的最大并发数,并发策略不为`NONE`时生效。
        - 最大重试次数:若任务执行失败后,系统自动重试的次数。
        - 超时时间:若在时间值内未接受到返回消息,则判断为请求超时。
        - 超时策略:超时之后所执行的策略。
        - 所属微服务:定义任务的微服务。
    

    更多操作