Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Jessica Elle
    @jessicaelle
    We're launching tomorrow!
    Jesse Lucas
    @jesselucas
    :sparkles: :clap: :tada:
    rich merwarth
    @richmerwarth_twitter
    woot woot!
    Robby Davis
    @robbydavis01_twitter
    Yah!
    Adam Richardson
    @thales17
    Really excited to get feedback from the community
    rich merwarth
    @richmerwarth_twitter
    :tropical_fish:
    foobargeez
    @foobargeez
    Hello! I came across the product and found it very interesting. We are building a product where we would like the mobile app to subscribe to a "change feed” and referesh the data to the user in real-time (as opposed to the mobile app polling for new data). I am curious to see if you have any use cases described in a more technical fashion. At the moment, we are thinking to leverage NATS but Iris given that it already deals with cluster setup, HA and reliability etc., is more appealing for me. It isn’t exactly clear on how boltdb, the underlying storage, data gets persisted across instances but we will get to that part later. I would appreciate if you can send me a few use cases (described a bit technically) so I can see if/how I can leverage Iris for my needs. Thanks again and good luck with the product!
    One other question is — do you have a Java client (Android) in the works? If so, any time frame when you plan to release?
    Jesse Lucas
    @jesselucas

    @foobargeez Thank you for the interest! Our current use cases deal in the realm of on-premises distributed applications, but this is in no way means that Iris is limited to that type of use.

    Here are some types of use cases we’ve needed Iris for:

    • In a museum exhibit we would use Iris to stream a value, maybe a sensor reading, to one or many applications subscribed to it. Such as monitoring proximity to an exhibit and turning on a light or activating a screen when the user approaches it. The monitoring of the sensor would happen with one computer (node A) and the processing of the value would happen on another (node B). Node B is only subscribed to the sources and/or keys it cares about.

    • Another use case we’ve worked on recently is to store the location of larger assets. Using Iris as a way to quickly identify when a larger asset, such as a video, has been modified. Iris would send the updated URL value to this asset and the application would download or act on it accordingly.

    We’d love for your mobile use case to become a case study! And we’d be more than happy to help you troubleshoot any issues you may run into.

    @stephanbaker can go into more details on how the data is persisted across instances but the simple answer is this is handled by Raft.

    We don’t have current plans for a Java client, but Java has great support for gRPC so it should be a fairly straight port from the Go API. I’d be more than happy to help if you had interest in starting one.

    Stephan Baker
    @stephanbaker

    @foobargeez Data persistence of key-value pairs in Iris is provided through the mechanisms of the raft consensus algorithm. When a request to modify a key-value pair is received, the request is forwarded to the leader of the cluster, who then seeks to reach a majority of nodes that agree to the update. Once the majority is reached, the leader commits the update to the local raft log, and communicates that log message to the other members of the cluster. When new members are brought up (or existing members are brought back up after going down for some time), snapshots of the raft log are used to bring them up to date with the other members. It is this log that is stored in the Bolt database on each machine, kept in sync by the raft mechanisms over HTTP, providing data persistence between runtimes.

    If you are interested in reading more about the Raft Consensus Algorithm, the following is a great resource: https://raft.github.io/

    foobargeez
    @foobargeez
    I never thanked for the reply and explanation — I apologize! @stephanbaker, we are considering to leverage Iris for our product. Before we go this route, I wanted to make sure that the github code is maintained actively, correct? If so, we will post questions and help anyway we can.
    Stephan Baker
    @stephanbaker
    @foobargeez No worries at all, we're glad to hear you're considering using Iris. It has been meeting our needs well internally, and it would be great to get others involved in making it even better. If you do encounter issues, our team would love to hear feedback to see how we may be able to address them.
    foobargeez
    @foobargeez
    Thanks @stephanbaker. From the docs, I see that Stela/Iris works only on local network. One of our (eventual) requirement is to be able to have a geo cluster with the KV store “eventually” replicated. Any idea what is limiting all the Iris cluster nodes to be in the local network?
    Jesse Lucas
    @jesselucas
    @foobargeez Iris can be ran locally or in the cloud. Stela's current method of discovery uses IPv6 multicasting and requires a network to have that enabled. Iris is standalone and can be used with or without Stela, using the -nostela flag.
    We're working on a future update to Stela's discovery package (Disco) to allow an epidemic style protocol to handle discovery on networks without multicast capabilities too.
    Valed
    @vluzin_twitter
    Hi. Quick question. I would like to use Stela from Python. Is it possible to do that using GRPC API only? I.e. no dependencies on Go. Thanks!
    Jesse Lucas
    @jesselucas

    Hi @Valed, you can definitely use the gRPC API directly from Python without any other dependencies. The Go and Node APIs give you a few conveniences and are mostly for handling subscribing and unsubscribe of callbacks on services.

    If you need any of those helpers it should be fairly straight forward to port the API to Python. I'd be more than happy to help if you ran into any issues too!

    Here are the Go and Node APIs for reference: https://github.com/forestgiant/stela/blob/master/api/api.go

    https://github.com/forestgiant/stela-nodejs/blob/master/api.js