GithubHelp home page GithubHelp logo

salesforce / apollo Goto Github PK

View Code? Open in Web Editor NEW
53.0 11.0 16.0 35.17 MB

An experimental multi-tenant distributed system platform

License: BSD 3-Clause "New" or "Revised" License

Java 100.00%
consensus dag secure-membership gossip-protocol distributed-database

apollo's People

Contributors

da505819 avatar dependabot[bot] avatar hellblazer avatar sfdc-hhildebrand avatar svc-scm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apollo's Issues

Transaction submission de duplication / Idempotency

Implement a windowed transaction deduplication. Transactions that have successfully been embedded on a block will be tracked for a given window. Upon block creation, any duplicated transactions are filtered from the block, new transaction digests are added to the dedup window.

Add mechanism to resubmit txns after timeout without regeneration, as the nonce in the transaction makes each txn generation unique.

Use HEX-BLOOM for CHOAM checkpointing

The HEX-BLOOM scheme provides an alternative to the MerkleTree and cheesy current mechanism for recording and authenticating CHOAM checkpoint state blocks. HEX-BLOOM is secure and efficient in both time and space and makes an excellent fit for this purpose.

Convert CHOAM Genesis into Async

Now that we have Virtual Threads, we can optionally remove timeout on data source generation and simply block waiting for the unit's data. This is required in the Genesis use of Ethereal as we're blocking on 2/3 of the genesis committee to construct the genesis block. If the DS times out, we miss slow joins.

Implement a Counting Bloom Filter set reconciliation for large sets with small differences

For Ghost, we expect that the set sizes of the members to be large and ponderous. And hopefully long lived. This means that any differences between any given replication partner will be small, even though the cardinality of the sets is ginormous (billions).

The current Distributed Bloom Filter set replication mechanism seems wildly inappropriate for this particular context, and I believe the schemes using counting bloom filters, invertible bloom filters and estimators - perhaps min wise sketches, etc - may need to be used at scale. For now, we just use what we got.

Quantum view membership evolution

Augment Fireflies to provide step wise, quantum changes in membership of a view. Simplified view membership event interaction with coupled components.

Fix checkpoint bootstrapping to account for trying to recover between checkpoints

Analysis of checkpoint bootstrapping flappers has shown that it's easily possible for a bootstrapping node to start bootstrapping on the most recent checkpoint A (from group POV) and in the process of recovering another checkpoint B will occur in the system. This wipes out the blocks between checkpoints A and B, and the current Boostrapper fails to recover - it simply keeps on trying to synchronize these blocks which no longer exists.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.