fluree / ledger

Fluree ledger server source
GNU Affero General Public License v3.0
77 stars 8 forks source link

build a transaction server #202

Open dpetran opened 2 years ago

dpetran commented 2 years ago

Manages adding new commits to a ledger.

bplatz commented 1 year ago

A version of this is what we need for Nexus, and that at least minimal use case should be pushed into Alpha 1.

We currently use Raft consensus across a cluster in Nexus - and this is what I think a general 'on-prem' deployment will want/need for redundancy and failover.

But, I think a discussion could be had to instead use a Kafka-like Queue for Nexus with set of "topics" that transactions for a given ledger reliable go onto the same topic. This will allow a cluster of transaction processors to fairly reliably scale - with only needing to deal with the 'at least once' problem, which Fluree I think makes it easy to deal with (as tx-ids, being the hash of the tx, are recorded to the ledger and can be looked up @ transaction processor startup to see if it sucessfully made it into the ledger.

If focused on AWS, Kinesis might be a good choice - but not sure if supports the same type of topic scaling and server management that Kafka does.

bplatz commented 1 year ago

If having more ephemeral transaction processors as per the queue idea above, we still need a reliable name service to record the latest commit for a ledger once persistent storage guarantees are met. Perhaps an easy way to handle this for the moment is Dynamo DB if on AWS.

We could look to use Fluree itself in a custom internal ledger, or some other DB as well.

mpoffald commented 1 year ago

Blocked on https://github.com/fluree/db/issues/289

dpetran commented 1 year ago

I spoke with @jakep36 about transaction server functionality that would be beneficial for Nexus:

I spoke with Eliud and Abdul about Fluree Sense's requirements, and they primarily require performance as they deal with large amounts of data.

I spoke with Brian about the general design for alpha-1:

Open questions: