All Projects → nanomsg → Mangos V1

nanomsg / Mangos V1

Licence: apache-2.0
The pure golang implementation of nanomsg (version 1, frozen)

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Mangos V1

Dop
JavaScript implementation for Distributed Object Protocol
Stars: ✭ 163 (-89.37%)
Mutual labels:  protocol, distributed
Pquic
The PQUIC implementation, a framework that enables QUIC clients and servers to dynamically exchange protocol plugins that extend the protocol on a per-connection basis
Stars: ✭ 63 (-95.89%)
Mutual labels:  protocol, transport
Credits
Credits(CRDS) - An Evolving Currency For An Evolving Society
Stars: ✭ 14 (-99.09%)
Mutual labels:  protocol, distributed
Rtptools
RTP Tools
Stars: ✭ 74 (-95.17%)
Mutual labels:  protocol, transport
Graphql Ws
Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client.
Stars: ✭ 398 (-74.04%)
Mutual labels:  protocol, transport
Base Drafts
Internet-Drafts that make up the base QUIC specification
Stars: ✭ 1,270 (-17.16%)
Mutual labels:  protocol, transport
Gocmpp
An implementation of China Mobile Peer to Peer protocol in golang for both client and server sides.
Stars: ✭ 108 (-92.95%)
Mutual labels:  protocol
Redcon
Redis compatible server framework for Go
Stars: ✭ 1,683 (+9.78%)
Mutual labels:  protocol
Micro
Micro is a distributed cloud operating system
Stars: ✭ 10,778 (+603.07%)
Mutual labels:  distributed
Protocol Fcgi
FastCGI (FCGI) Protocol implementation for PHP
Stars: ✭ 106 (-93.09%)
Mutual labels:  protocol
Vertex
Vertex is a distributed, ultimately consistent, event traceable cross platform framework based on Orleans, which is used to build high-performance, high throughput, low latency, scalable distributed applications
Stars: ✭ 117 (-92.37%)
Mutual labels:  distributed
Javaosc
OSC content format/"protocol" library for JVM languages
Stars: ✭ 116 (-92.43%)
Mutual labels:  protocol
Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (-92.69%)
Mutual labels:  distributed
Dex Protocols
A list of protocols for decentralized exchange
Stars: ✭ 109 (-92.89%)
Mutual labels:  protocol
Vk4xmpp
Jabber-транспорт для ВКонтакте (A jabber gateway to the VK social network)
Stars: ✭ 114 (-92.56%)
Mutual labels:  transport
Distributed Dataset
A distributed data processing framework in Haskell.
Stars: ✭ 108 (-92.95%)
Mutual labels:  distributed
Quinn
Async-friendly QUIC implementation in Rust
Stars: ✭ 1,859 (+21.27%)
Mutual labels:  protocol
Ot Node
OriginTrail network node
Stars: ✭ 107 (-93.02%)
Mutual labels:  protocol
Catapult Server
Catapult server
Stars: ✭ 111 (-92.76%)
Mutual labels:  protocol
Go Gtp
GTP(GPRS Tunneling Protocol) implemented in pure Golang.
Stars: ✭ 116 (-92.43%)
Mutual labels:  protocol

mangos

Linux Status Apache License Discord GoDoc Go Report Card

NOTE: This is the legacy version of mangos (v1). Users are encouraged to use mangos v2 instead if possible. No further development is taking place on v1.

Package mangos is an implementation in pure Go of the SP ("Scalability Protocols") messaging system. This makes heavy use of go channels, internally, but it can operate on systems that lack support for cgo.

The reference implementation of the SP protocols is available as nanomsg™; there is also an effort to implement an improved and more capable version of nanomsg called NNG™.

The design is intended to make it easy to add new transports with almost trivial effort, as well as new topologies ("protocols" in SP terminology.)

At present, all of the Req/Rep, Pub/Sub, Pair, Bus, Push/Pull, and Surveyor/Respondent patterns are supported.

Additionally, there is an experimental new pattern called STAR available. This pattern is like Bus, except that the messages are delivered not just to immediate peers, but to all members of the topology. Developers must be careful not to create cycles in their network when using this pattern, otherwise infinite loops can occur.

Supported transports include TCP, inproc, IPC, WebSocket, WebSocket over TLS and TLS over TCP. Use addresses of the form "tls+tcp://:" to access TLS. Note that ipc:// is not supported on Windows (by either this or the reference implementation.) Forcing the local TCP port in Dial is not supported yet (this is rarely useful).

Basic interoperability with nanomsg and NNG has been verified (you can do so yourself with nanocat and macat) for all protocols and transports that NNG and nanomsg support. Additionally there are a number of projects that use the two products together.

There is a third party experimental QUIC transport available at quic-mangos. (An RFE to make this transport official exists.)

If you find this useful, I would appreciate knowing about it. I can be reached via my email address, garrett -at- damore -dot- org

Installing

Using go get

$ go get -u nanomsg.org/go-mangos

After this command mangos is ready to use. Its source will be in:

$GOPATH/src/pkg/nanomsg.org/go-mangos

You can use go get -u -a to update all installed packages.

Documentation

For docs, see http://godoc.org/nanomsg.org/go-mangos or run:

$ godoc nanomsg.org/go-mangos

Testing

This package supports internal self tests, which can be run in the idiomatic Go way. (Note that most of the tests are in a test subdirectory.)

$ go test nanomsg.org/go-mangos/...

There are also internal benchmarks available:

$ go test -bench=. nanomsg.org/go-mangos/test

Commercial Support

Staysail Systems, Inc. offers commercial support for mangos.

Examples

Some examples are posted in the directories under examples/ in this project.

These examples are rewrites (in Go) of Tim Dysinger's Getting Started with Nanomsg.

godoc in the example directories will yield information about how to run each example program.

Enjoy!

Copyright 2018 The Mangos Authors

mangos™, Nanomsg™ and NNG™ are trademarks of Garrett D'Amore.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].