Awesome Open Source
Awesome Open Source

Go Share

   ____ _____     _____/ /_  ____ _________
  / __ `/ __ \   / ___/ __ \/ __ `/ ___/ _ \
 / /_/ / /_/ /  (__  ) / / / /_/ / /  /  __/
 \__, /\____/  /____/_/ /_/\__,_/_/   \___/

Tasks in Queue at Trello Board

distributed under MIT License

Go Share any data among the nodes. Over HTTP or ZeroMQ.

  • GOShare eases up communication over HTTP GET param based interaction.
  • ZeroMQ REQ/REP based synchronous communication model.

it's "go get"-able

go get ""

Make Distributable Binary

./ bin

This will create two distributable binaries ./bin/goshare_service & ./bin/goshare_daemon. Here ./bin/goshare_service works as shown in README's 'Tryout' section.

Whereas ./bin/goshare_daemon can be used as a system service daemon, with following command line flags (along with flags mentioned in 'Tryout' section for ports and db-path)

  • start: ./bin/goshare_daemon -daemon=start
  • stop: ./bin/goshare_daemon -daemon=stop
  • status: ./bin/goshare_daemon -daemon=status

this dumps daemon's current status to /tmp/goshare_daemon.status and pid to /tmp/ the status and pid file path can be changed with flags '-daemon-log=' & '-daemon-pid=' respectively


 go run zxtra/goshare_daemon.go -DBPath=/tmp/GOTSDB

By default it runs HTTP daemon at port 9999 and ZeroMQ daemon at 9797/9898, make it run on another port using following required flags

 go run zxtra/goshare_daemon.go -DBPath=/tmp/GOTSDB -port=8080 -req-port=8000 -rep-port=8001
  Dummy Clients Using It

  * go run zxtra/gohttp_client.go

  * go run zxtra/go0mq_client.go

  for custom Port: 8080 for HTTP; Port: 8000/8001 for ZeroMQ

  * go run zxtra/gohttp_client.go -port=8080

  * go run zxtra/go0mq_client.go -req-port=8000 -rep-port=8001

To utilize it "zxtra/gohttp_client.go" and "zxtra/go0mq_client.go" can be referred on how to utilize capabilities of GoShare.


"goshare"'s methods to adapt these in your code:

  • GoShare() : it runs HTTP and ZeroMQ daemon in parallel goroutines

has optional flags customization of:

  • DBPath: path for LevelDB or other used (default: /tmp/GO.DB)
  • DBEngine: DB backend used (default: leveldb,; other options: sqlite3)
  • port: port to bind HTTP daemon (default: 9999)
  • req-port, rep-port: ports to bind ZeroMQ REQ/REP daemon (default: 9797, 9898)
  • GoShareHTTP(<levigo DB handle>, <http port as int>) : it runs HTTP daemon

  • GoShareZMQ(<levigo DB handle>, <req-port as int>, <rep-port as int>) : it runs ZMQ daemon

Now visit the the link asked by it and get the help page.

  • go lang (obviously, the heart and soul of the app)
  • leveldb (we are using for datastore, it's awesome)
  • levigo (the go library utilized to access leveldb)
  • zeroMQ (the supercharged Sockets giving REQuest/REPly power)
  • gozmq GoLang ZeroMQ Bindings used here
  • levigoNS NameSpace KeyVal capabilities around leveldb via levigo
  • levigoTSDS TimeSeries KeyVal capabilties around leveldb via levigoNS
  • gol Set of common utility functionalities


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
go (15,400
golang (3,973
library (1,352
http (940
timeseries (104
zeromq (39
leveldb (37
datastore (29