MicroProfile LRA Specification

MicroProfile LRA Specification :: Specification

License

License

Categories

Categories

Narayana Application Layer Libs Distributed Transactions
GroupId

GroupId

io.narayana.microprofile.lra
ArtifactId

ArtifactId

microprofile-lra-spec
Last Version

Last Version

0.0.3.Final
Release Date

Release Date

Type

Type

pom
Description

Description

MicroProfile LRA Specification
MicroProfile LRA Specification :: Specification
Project Organization

Project Organization

Eclipse Foundation

Download microprofile-lra-spec

How to add to project

<!-- https://jarcasting.com/artifacts/io.narayana.microprofile.lra/microprofile-lra-spec/ -->
<dependency>
    <groupId>io.narayana.microprofile.lra</groupId>
    <artifactId>microprofile-lra-spec</artifactId>
    <version>0.0.3.Final</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/io.narayana.microprofile.lra/microprofile-lra-spec/
implementation 'io.narayana.microprofile.lra:microprofile-lra-spec:0.0.3.Final'
// https://jarcasting.com/artifacts/io.narayana.microprofile.lra/microprofile-lra-spec/
implementation ("io.narayana.microprofile.lra:microprofile-lra-spec:0.0.3.Final")
'io.narayana.microprofile.lra:microprofile-lra-spec:pom:0.0.3.Final'
<dependency org="io.narayana.microprofile.lra" name="microprofile-lra-spec" rev="0.0.3.Final">
  <artifact name="microprofile-lra-spec" type="pom" />
</dependency>
@Grapes(
@Grab(group='io.narayana.microprofile.lra', module='microprofile-lra-spec', version='0.0.3.Final')
)
libraryDependencies += "io.narayana.microprofile.lra" % "microprofile-lra-spec" % "0.0.3.Final"
[io.narayana.microprofile.lra/microprofile-lra-spec "0.0.3.Final"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

microprofile lra

Long Running Actions for MicroProfile

Introduction

The specification introduces APIs for services to coordinate activities.

The main thrust of the proposal introduces an API for loosely coupled services to coordinate long running activities in such a way as to guarantee a globally consistent outcome without the need to take locks on data.

Motivation

In a loosely coupled service based environment there is sometimes a need for different services to provide consistency guarantees. Typical examples include:

  • order processing involving three services (take order, bill customer, ship product). If the shipping service finds that it is out of stock then the customer will have been billed with no prospect of receiving his item;

  • an airline overbooks a flight which means that the booking count and the flight capacity are inconsistent.

There are various ways that systems overcome such inconsistency but it would be advantageous to provide a generic solution which handles failure conditions, maintains state for those flows that span long periods of time and ensures that remedial activities are called correctly.

Traditional techniques for guaranteeing consistency in distributed environments has focused on XA transactions where locks may be held for long periods thereby introducing strong coupling between services and decreasing concurrency to unacceptable levels. Additionally, if such a transaction aborts then valuable work which may be valid will be rolled back. In view of these issues an alternative approach is desirable.

Goals

  • support long running actions

  • no strong coupling between services

  • allow actions to finish early

  • allow compensating actions if a business activity is cancelled

Contributing

Do you want to contribute to this project? Find out how you can help here.

io.narayana.microprofile.lra

Eclipse Foundation

Versions

Version
0.0.3.Final
0.0.2.Final
0.0.1.Final