iris

command module
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2014 License: GPL-3.0-or-later Imports: 16 Imported by: 0

README

Iris - Decentralized cloud messaging

Iris is an attempt at bringing the simplicity and elegance of cloud computing to the application layer. Consumer clouds provide unlimited virtual machines at the click of a button, but leaves it to developer to wire them together. Iris ensures that you can forget about networking challenges and instead focus on solving your own domain problems.

It is a completely decentralized messaging solution for simplifying the design and implementation of cloud services. Among others, Iris features zero-configuration (i.e. start it up and it will do its magic), semantic addressing (i.e. application use textual names to address each other), clusters as units (i.e. automatic load balancing between apps of the same name) and perfect secrecy (i.e. all network traffic is encrypted).

You can find further infos on the Iris website and details of the above features in the Core concepts section of The book of Iris. For the scientifically inclined, a small collection of papers is also available featuring Iris.

There is a growing community on Twitter @iriscmf, Google groups project-iris and GitHub project-iris.

Compatibility

Since from time to time the relay protocol changes (communication between Iris and client libraries), the below compatibility matrix was introduced to make it easier to find which versions of the client libraries (columns) match with which versions of the Iris node (rows).

iris-erl iris-go iris-java iris-scala
v0.3.x v1 v1 v1 v1
v0.2.x v0 v0 - -
v0.1.x v0 v0 - -

Releases

  • Version 0.3.2: October 4, 2014
    • Use 4x available CPU cores by default (will need a flag for this later).
  • Version 0.3.1: September 22, 2014
    • Open local relay endpoint on both IPv4 and IPv6 (bindings can remain oblivious).
    • Fix bootstrap crash in case of single-host networks (host space < 2 bits).
    • Fix race condition between tunnel construction request and finalization.
  • Version 0.3.0: August 11, 2014
    • Work around upstream Go bug #5395 on Windows.
    • Fix memory leak caused by unreleased connection references.
    • Fix tunnel lingering caused by missing close invocation in Iris overlay.
    • Fix message loss caused by clearing scheduled messages during a relay close.
    • Fix race condition between tunnel construction and operation.
    • Rewrite relay protocol to v1.0-draft2.
      • Proper protocol negotiation (magic string, version numbers).
      • Built in error fields to remote requests, no need for user wrappers.
      • Tunnel data chunking to support arbitrarily large messages.
      • Size based tunnel throttling opposed to the message count previously.
    • Migrate from github.com/karalabe to github.com/project-iris.
  • Version 0.2.0: March 31, 2014
    • Redesigned tunnels based on direct TCP connections.
    • Prioritized system messages over separate control connections.
    • Graceful connection and overlay tear-downs (still plenty to do).
    • Countless stability fixes (too many to enumerate)
  • Version 0.1-pre2 (hotfix): September 11, 2013
    • Fix fast subscription reply only if subscription succeeds.
    • Fix topic self report after a node failure.
    • Fix heart mechanism to report errors not panics, check duplicate monitoring.
    • Fix late carrier heartbeat startup.
    • Fix panic caused by balance requests pending during topic termination.
    • Fix corrupt topic balancer caused by stale parent after removal.
  • Version 0.1-pre: August 26, 2013
    • Initial RFC release.

Contributions

Currently my development aims are to stabilize the project and its language bindings. Hence, although I'm open and very happy for any and all contributions, the most valuable ones are tests, benchmarks and bug-fixes.

Due to the already significant complexity of the project, I kindly ask anyone willing to pinch in to first file an issue with their plans to achieve a best possible integration :).

Additionally, to prevent copyright disputes and such, a signed contributor license agreement is required to be on file before any material can be accepted into the official repositories. These can be filled online via either the Individual Contributor License Agreement or the Corporate Contributor License Agreement.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package balancer implements a capacity based load balancer where each entity periodically reports its actual processing capacity and the balancer issues requests based on those numbers.
Package balancer implements a capacity based load balancer where each entity periodically reports its actual processing capacity and the balancer issues requests based on those numbers.
Package config contains the hard-coded configuration values of the system.
Package config contains the hard-coded configuration values of the system.
container
queue
Package queue implements a FIFO (first in first out) data structure supporting arbitrary types (even a mixture).
Package queue implements a FIFO (first in first out) data structure supporting arbitrary types (even a mixture).
crypto
cyclic
Package cyclic generates cryptographic cyclic groups and generators with a specified bit-length.
Package cyclic generates cryptographic cyclic groups and generators with a specified bit-length.
sts
Package sts implements the Station-to-station (STS) key exchange protocol.
Package sts implements the Station-to-station (STS) key exchange protocol.
ext
mathext
Package mathext contains extensions to the base Go math package.
Package mathext contains extensions to the base Go math package.
sortext
Package sortext contains extensions to the base Go sort package.
Package sortext contains extensions to the base Go sort package.
Package gobber implements a buffer based datagram oriented gob coder.
Package gobber implements a buffer based datagram oriented gob coder.
Package heart provides a simple and generic heartbeat mechanism that oversees the pinging of some entities and reports various events through callbacks.
Package heart provides a simple and generic heartbeat mechanism that oversees the pinging of some entities and reports various events through callbacks.
Package proto contains the baseline message container and the endpoint crypto methods.
Package proto contains the baseline message container and the endpoint crypto methods.
bootstrap
Package bootstrap is responsible for randomly probing and linearly scanning the local network (single interface) for other running instances.
Package bootstrap is responsible for randomly probing and linearly scanning the local network (single interface) for other running instances.
iris
Package iris implements the iris communication primitives on top of scribe.
Package iris implements the iris communication primitives on top of scribe.
link
Package link contains the encrypted network link implementation.
Package link contains the encrypted network link implementation.
pastry
Package pastry contains a simplified version of Pastry, where proximity is not taken into consideration (i.e.
Package pastry contains a simplified version of Pastry, where proximity is not taken into consideration (i.e.
scribe
Package scribe contains a simplified version of Scribe, where no topic based ACLs are defined.
Package scribe contains a simplified version of Scribe, where no topic based ACLs are defined.
scribe/topic
Package topic implements a carrier topic tree with functionality to unicast, broadcast and load balance between nodes of the tree.
Package topic implements a carrier topic tree with functionality to unicast, broadcast and load balance between nodes of the tree.
session
Package session implements an encrypted data stream, authenticated through the station-to-station key exchange.
Package session implements an encrypted data stream, authenticated through the station-to-station key exchange.
stream
Package stream wraps a TCP/IP network connection with the Go gob en/decoder.
Package stream wraps a TCP/IP network connection with the Go gob en/decoder.
service
relay
Package relay implements the message relay between the Iris node and locally attached applications.
Package relay implements the message relay between the Iris node and locally attached applications.
Package system implements some basic operating system related tasks.
Package system implements some basic operating system related tasks.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL