Open dpetran opened 2 years 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.
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.
Blocked on https://github.com/fluree/db/issues/289
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:
Manages adding new commits to a ledger.