Giter VIP home page Giter VIP logo

arke's Introduction

Arke

This is an ultralight pub-sub system designed to be used as a routing system for various pluggable applications.

The daemon is provided as a proof-of-concept application which uses the Arke Core.

To work with Arke run: $ source env.sh

arke's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

wanzw01

arke's Issues

Hub Cancellation Can Cause Subscriber Routine Zombification

When a client initiates a subscription request it can be placed in the buffered channel waiting for processing by the hub's event loop. If the hub is cancelled while the subscription is waiting, then the routine attached to the subscription is orphaned and the client is never notified of subscriber-close.

This should be rearchitected so that subscribing clients can always be assured their channel will be closed upon hub cancellation.

In-order Delivery Not Assured

Interleaving may happen between publishers or subscribers, but for a given pub/sub pair, messages should always be delivered in-order. This is not currently working.

Flaky Test: TestHubCancellationClosesSubscription

Likely a race-condition. Haven't touched this in a while and I suspect the logic to be broken (especially since underlying libraries / language may have adjusted semantics in the interim).

--- FAIL: TestHubCancellationClosesSubscription (4.00s)
hub_test.go:152: Timed out (4s) waiting for cancel() to propagate to subscriber.
FAIL
FAIL github.com/akesling/arke/interchange 4.015s

Improve Dead Subscriber Collection Performance

The system currently uses a fixed-threshold, global-pause, collection methodology which is has expense proportional to the size of the topic trie. This has the potential to cause long pauses for large tries.

The other naive alternative is to collect a subscriber whenever it dies, but this has the potential to cause topic-collapsing of arbitrary complexity at time of subscriber-death and could thus also starve out publications.

The real solution to this should be to allow concurrent collection in the topic trie, preferably in a way that orthogonal new subscriptions aren't blocked by active collection.

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.