From 6a57e6c462b91737d62506b6d8354dc1062d2dc2 Mon Sep 17 00:00:00 2001 From: Jan Lukavsky Date: Thu, 16 May 2024 16:46:45 +0200 Subject: [PATCH] [docs] Add basic documentation for ACID transactions --- .../test/java/cz/o2/proxima/direct/Book.java | 86 +++++++- docs/src/content/book/transactions.md | 206 +++++++++++++++++- docs/src/content/menu/index.md | 2 +- .../images/transactions/transactions.png | Bin 0 -> 66987 bytes 4 files changed, 287 insertions(+), 7 deletions(-) create mode 100644 docs/src/static/images/transactions/transactions.png diff --git a/direct/core-testing/src/test/java/cz/o2/proxima/direct/Book.java b/direct/core-testing/src/test/java/cz/o2/proxima/direct/Book.java index 0a13a2e3b..3805548f2 100644 --- a/direct/core-testing/src/test/java/cz/o2/proxima/direct/Book.java +++ b/direct/core-testing/src/test/java/cz/o2/proxima/direct/Book.java @@ -16,15 +16,22 @@ package cz.o2.proxima.direct; import com.google.protobuf.TextFormat; +import cz.o2.proxima.core.repository.EntityAwareAttributeDescriptor.Regular; +import cz.o2.proxima.core.repository.EntityAwareAttributeDescriptor.Wildcard; +import cz.o2.proxima.core.repository.EntityDescriptor; import cz.o2.proxima.core.repository.Repository; import cz.o2.proxima.core.storage.StreamElement; +import cz.o2.proxima.core.transaction.KeyAttributes; import cz.o2.proxima.core.util.ExceptionUtils; +import cz.o2.proxima.core.util.Pair; import cz.o2.proxima.direct.core.DirectDataOperator; import cz.o2.proxima.direct.core.OnlineAttributeWriter; import cz.o2.proxima.direct.core.commitlog.CommitLogObserver; import cz.o2.proxima.direct.core.commitlog.CommitLogReader; import cz.o2.proxima.direct.core.randomaccess.KeyValue; import cz.o2.proxima.direct.core.randomaccess.RandomAccessReader; +import cz.o2.proxima.direct.core.transaction.TransactionalOnlineAttributeWriter.Transaction; +import cz.o2.proxima.direct.core.transaction.TransactionalOnlineAttributeWriter.TransactionRejectedException; import cz.o2.proxima.direct.core.view.CachedView; import cz.o2.proxima.example.Example.BaseEvent; import cz.o2.proxima.example.Example.BaseEvent.Action; @@ -32,8 +39,13 @@ import cz.o2.proxima.internal.com.google.common.base.Preconditions; import cz.o2.proxima.testing.model.Model; import cz.o2.proxima.typesafe.config.ConfigFactory; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Optional; import java.util.UUID; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -49,13 +61,13 @@ public class Book { private DirectDataOperator direct; private Model model; - public void createOperator() { + private void createOperator() { repo = Repository.of(ConfigFactory.load("test-readme.conf").resolve()); model = Model.wrap(repo); direct = repo.getOrCreateOperator(DirectDataOperator.class); } - public void writeData() { + private void writeData() { Optional maybeWriter = direct.getWriter(model.getEvent().getDataDescriptor()); Preconditions.checkState(maybeWriter.isPresent()); @@ -88,7 +100,7 @@ public void writeData() { }); } - public void observeEvents() { + private void observeEvents() { Optional maybeReader = direct.getCommitLogReader(model.getEvent().getDataDescriptor()); Preconditions.checkState(maybeReader.isPresent()); @@ -128,7 +140,7 @@ private void handleEvent(BaseEvent event, OnNextContext context) { }); } - public void randomRead() { + private void randomRead() { Optional maybeReader = direct.getRandomAccess(model.getUser().getDetailsDescriptor()); Preconditions.checkState(maybeReader.isPresent()); @@ -150,7 +162,7 @@ public void randomRead() { } } - public void cachedView() { + private void cachedView() { Optional maybeView = direct.getCachedView(model.getUser().getDetailsDescriptor()); if (maybeView.isEmpty()) { log.warn( @@ -174,4 +186,68 @@ public void cachedView() { } } } + + private void transactions() { + Repository repo = + Repository.ofTest(ConfigFactory.parseResources("test-transactions.conf").resolve()); + DirectDataOperator direct = repo.getOrCreateOperator(DirectDataOperator.class); + + EntityDescriptor gateway = repo.getEntity("gateway"); + + // retrieve two fields, this would be in practice done via 'model' + Regular intField = Regular.of(gateway, gateway.getAttribute("intField")); + Wildcard device = Wildcard.of(gateway, gateway.getAttribute("device.*")); + + Optional maybeWriter = direct.getWriter(intField); + Optional maybeReader = direct.getRandomAccess(device); + + // sanity check + Preconditions.checkArgument(maybeWriter.isPresent()); + Preconditions.checkArgument(maybeReader.isPresent()); + + OnlineAttributeWriter writer = maybeWriter.get(); + RandomAccessReader reader = maybeReader.get(); + + // we use transactions, so we get transactional writer + Preconditions.checkState(writer.isTransactional()); + + String gatewayId = "gw1"; + + while (true) { + // create transaction + try (Transaction transaction = writer.transactional().begin()) { + // read number of devices + List> kvs = new ArrayList<>(); + reader.scanWildcard(gatewayId, device, kvs::add); + + // notify the transaction manager of what we've read + transaction.update(KeyAttributes.ofWildcardQueryElements(gateway, gatewayId, device, kvs)); + + // write number of devices to the 'intField' + StreamElement upsert = + intField.upsert( + gatewayId, 1L /* will be replaced by the transaction coordinator */, kvs.size()); + + // commit and wait for confirmation + BlockingQueue> result = new ArrayBlockingQueue<>(1); + transaction.commitWrite( + Collections.singletonList(upsert), + (succ, exc) -> { + result.offer(Pair.of(succ, exc)); + }); + Pair taken = ExceptionUtils.uncheckedFactory(result::take); + if (!taken.getFirst()) { + // some error occurred + if (taken.getSecond() instanceof TransactionRejectedException) { + // transaction was rejected, need to restart it + continue; + } + // some other error + throw new IllegalStateException(taken.getSecond()); + } + // success + break; + } + } + } } diff --git a/docs/src/content/book/transactions.md b/docs/src/content/book/transactions.md index a5fd09c18..1ef139ca4 100644 --- a/docs/src/content/book/transactions.md +++ b/docs/src/content/book/transactions.md @@ -1 +1,205 @@ -# Transactions +# ACID Transactions + +[ACID transactions](https://en.wikipedia.org/wiki/ACID) were added to the platform based on [design document](https://docs.google.com/document/d/1yPKIczGfi8tit3U89OJS9wEtCc8nIhL6VI6c35lYVhw/edit?usp=sharing). This document will describe the current implementation. + + +## Setting up transaction support + +In order to use ACID transactions a few modifications to the definition of configuration file passed to the [Repository](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/core/repository/Repository.html) is needed. + +### Marking attribute as ACID +``` + entities { + gateway: { + attributes: { + status: { + scheme: bytes + transactional: all + manager: gateway-transaction-commit-log + } + ... + } + } + } + + attributeFamilies { + gateway-transaction-commit-log { + entity: _transaction + attributes: [ "request.*", "response.*", "state" ] + storage: "kafka://FIXME/topic" + type: primary + access: [ commit-log, state-commit-log, cached-view ] + } + + transactions-commit { + entity: _transaction + attributes: [ "commit" ] + storage: "kafka://FIXME/transactions-commit" + type: primary + access: commit-log + } + } +``` + +An attribute needs to get `transactional` field, which should be set to `all`, currently. This might be extended in future, currently this implies global ACID consistency of the attribute. Another option defines configuration of _transaction manager_, namely up to three _[attribute families](http://localhost:1313/book/storages/#mapping-of-attributes-to-storages)_ for attributes `request.*`, `response.*` and `state` of entity `_transaction` (defined in `gateway-transaction-commit-log` above). The attribute family for `transaction.state` MUST have `access` `[commit-log, state-commit-log, cached-view]`. There also MUST be a single attribute family (commit-log) for attribute `commit` of `_transaction`. This is the family `transactions-commit` above. + +A more scalable definition will define separate family for each purpose, e.g.: +``` + entities { + gateway { + "user.*": { + scheme: bytes + transactional: all + manager: [ all-transaction-commit-log-request, all-transaction-commit-log-response, all-transaction-commit-log-state ] + } + ... + } + } + + attributeFamilies { + all-transaction-commit-log-request { + entity: _transaction + attributes: [ "request.*" ] + storage: "kafka://BROKERS/request-topic" + } + + all-transaction-commit-log-response { + entity: _transaction + attributes: [ "response.*" ] + storage: "kafka://BROKERS/response-topic" + } + + all-transaction-commit-log-state { + entity: _transaction + attributes: [ "state" ] + storage: "inmem://BROKERS/state-topic" + # access will be derived automatically + } + + transactions-commit { + entity: _transaction + attributes: [ "commit" ] + storage: "kafka://BROKERS/transactions-commit" + type: primary + access: commit-log + } + } +``` + +Once this definition is in place, Proxima will use workflow described below to ensure ACID guarantees on read and writes on affected attributes. + +## Using transaction API + +Currently, ACID transactions have support only when using [DirectDataOperator]({{< relref "/book/operators/direct" >}}) (either directly or by using wrappers, e.g. in [BeamDataOperator]({{< relref "/book/operators/beam" >}}) with IO provided by direct). + +The API is generally based on a [Transaction](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/core/transaction/TransactionalOnlineAttributeWriter.Transaction.html) object, which provides all the necessary communications between the transaction manager and other parts of the system. Let's see a simple code which executes a transaction: +```java + +// create Repository from test resource +Repository repo = + Repository.ofTest( + ConfigFactory.parseResources("test-transactions.conf").resolve()); + +// create DirectDataOperator +DirectDataOperator direct = repo.getOrCreateOperator(DirectDataOperator.class); + +// retrieve some entity and some attributes +// this would be done via compiled model in production environment +EntityDescriptor gateway = repo.getEntity("gateway"); + +// retrieve two fields +Regular intField = Regular.of(gateway, gateway.getAttribute("intField")); +Wildcard device = Wildcard.of(gateway, gateway.getAttribute("device.*")); + +Optional maybeWriter = direct.getWriter(intField); +Optional maybeReader = direct.getRandomAccess(device); + +// sanity check +Preconditions.checkArgument(maybeWriter.isPresent()); +Preconditions.checkArgument(maybeReader.isPresent()); + +// get reader and writer +OnlineAttributeWriter writer = maybeWriter.get(); +RandomAccessReader reader = maybeReader.get(); + +// we use transactions, so we get transactional writer +Preconditions.checkState(writer.isTransactional()); + +String gatewayId = "gw1"; + +// need to loop, so we can restart transaction in case +// of inconsistency detected +while (true) { + + // create transaction + try (Transaction transaction = writer.transactional().begin()) { + + // read devices associated with gateway and store them to list + List> kvs = new ArrayList<>(); + reader.scanWildcard(gatewayId, device, kvs::add); + + // notify the transaction manager of what we've read + transaction.update(KeyAttributes.ofWildcardQueryElements(gateway, gatewayId, device, kvs)); + + // write number of devices to the 'intField' + StreamElement upsert = + intField.upsert( + gatewayId, 1L /* will be replaced by the transaction coordinator */, kvs.size()); + + // commit and wait for confirmation + BlockingQueue> result = new ArrayBlockingQueue<>(1); + transaction.commitWrite( + Collections.singletonList(upsert), + (succ, exc) -> { + result.offer(Pair.of(succ, exc)); + }); + + // synchornous waiting, try to avoid this in production and process results + // asynchronously + Pair taken = ExceptionUtils.uncheckedFactory(result::take); + if (!taken.getFirst()) { + // some error occurred + if (taken.getSecond() instanceof TransactionRejectedException) { + // transaction was rejected, need to restart it + continue; + } + // some other error + throw new IllegalStateException(taken.getSecond()); + } + + // success + break; + } +} +``` + +## Transaction workflow + +The current architecture is illustrated on the following figure: + + +The transaction support needs definiton of 4 _[commit logs](http://localhost:1313/book/storages/#commit-log)_: + * request + * response + * commit + * state + +Proxima provides _[serializable](https://en.wikipedia.org/wiki/Isolation_(database_systems)#Serializable)_ isolation level on transactions by assigning each transaction an incremental _sequential ID_. This is assigned automatically to all writes in the same transaction and sub-sequently is used to check if concurrently executed transaction has conflicts (and need to be rejected) or not. + +The [TransactionalOnlineAttributeWriter](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/core/transaction/TransactionalOnlineAttributeWriter.html) creates transaction after first call to [#update](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/core/transaction/TransactionalOnlineAttributeWriter.Transaction.html#update(java.util.List)). This results in sending a [Request](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/core/transaction/Request.html) to transaction manager notifying it about new transaction with a set of inputs. The manager updates state of the transaction and returns response. + +To ensure eventual consistency of the process (which is essential to ensure ACID guarantees even in case of failures), the manager must return responses via _[replication controller]({{< relref "/book/replication/" >}})_. This ensures consistency between returned response and state of the transaction. + +After the client reads all the data (and for each read or set of reads call the [#update](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/core/transaction/TransactionalOnlineAttributeWriter.Transaction.html#update(java.util.List)) method), the client computes outputs (according to its business logic) and call [#commitWrite](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/core/transaction/TransactionalOnlineAttributeWriter.Transaction.html#commitWrite(java.util.List,cz.o2.proxima.direct.core.CommitCallback)). + +The write is (asynchronously) confirmed either as successful, or with a Throwable instance that was caught during processing. The important one is [TransactionRejectedException](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/core/transaction/TransactionalOnlineAttributeWriter.TransactionRejectedException.html) which signals that the transaction run on data that violated the ACID properties and need to be re-executed. + +## Runtime components + +As mentioned above, the process of ensuring ACID transactions consists of two runtime components: + * transaction manager, which is generally a streaming data pipeline, which transforms [Requests](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/core/transaction/Request.html) to [Commits](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/core/transaction/Commit.html) written to the `_transaction.commit` attribute. + * replication controller, which accepts a special transformation transforming `Commit` to outputs, responses and state updates in eventually consistent manner. + +Currently, both these parts have implementations in the direct module, the former in [TransactionManagerServer](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/transaction/manager/TransactionManagerServer.html) and the latter in [ReplicationController](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/server/ReplicationController.html). + +The direct version of transaction manager (`TransactionManagerServer`) works by using `CommitLogReader` to read `Requests` and - by nature of the `DirectDataOperator` - is single process. It is possible to have multiple instances of the server, but at a single moment, only one is _active_ and all others are _spare_ instances waiting for failover. In the future, more scalable versions of the manager should be implemented (e.g. using the [BeamDataOperator](https://datadrivencz.github.io/proxima-platform/apidocs/cz/o2/proxima/direct/transaction/manager/TransactionManagerServer.html)). diff --git a/docs/src/content/menu/index.md b/docs/src/content/menu/index.md index a20f20e66..907aaec9b 100644 --- a/docs/src/content/menu/index.md +++ b/docs/src/content/menu/index.md @@ -12,6 +12,6 @@ draft: false - [Direct data operator]({{< relref "/book/operators/direct" >}}) - [Beam data operator]({{< relref "/book/operators/beam" >}}) - [Flink data operator]({{< relref "/book/operators/flink" >}}) - - [Tools]({{< relref "/book/tools" >}}) - [Transactions]({{< relref "/book/transactions" >}}) + - [Tools]({{< relref "/book/tools" >}}) - [JavaDoc](https://datadrivencz.github.io/proxima-platform/apidocs/) diff --git a/docs/src/static/images/transactions/transactions.png b/docs/src/static/images/transactions/transactions.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a5fb67cfbc4022560667d9c9204dbc325f6dc2 GIT binary patch literal 66987 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