An implementation of the open source XLattice project for the Go programming language.
XLattice is a communications library and a set of tools for peer-to-peer networks. The library was originally developed in Java; more extensive (although somewhat dated) information on XLattice for Java is available at the Java XLattice website.
XLattice consists of a number of components. Generally speaking, those listed later depend upon some or all of the earlier components.
All of these are currently in development.
This version of xlattice_go includes a Go implementation of the python package rnglib for use in testing. rnglib_go is a Go random number generator a drop-in replacement for Go's random number generator. It
- is somewhat faster; about 30% in our tests
- has a number of additional functions for generating random file names, directories of random data, etc
and an implementation of u, a system for storing files by their content keys.
A store organized by content key
xlReg is a tool, primarily intended for use in testing, which facilitates the formation of clusters, groups of cooperating nodes. On registration, a client/member is issued a globally unique NodeID, a 256-bit random value. Once it has an ID, the member can create and/or join clusters. The cluster has a maximum size set when it is created. When members join the cluster they register their two RSA public keys and either one or two IP addresses. If the cluster only supports communications between members, members register only one IP address. If non-members, clients, are allowed to communicate with the cluster, members register a second address for that purpose. When a member has completed registration, it can retrieve the configuration data other members have registered.
The xlReg server, its clients, and the cluster members, are all XLattice nodes.
The Go version of XLattice httpd is very much in development.
More information on the xlattice_go project can be found here