3 ms·
I'd rather use the WAMP protocol (not the stack...): https://wamp-proto.org/ https://wamp-proto.org/ Not only does it works well for iot, but it also is very n
by sametmax 8y ago
I'd rather use the WAMP protocol (not the stack...): https://wamp-proto.org/ https://wamp-proto.org/
Not only does it works well for iot, but it also is very nice for the web and micro-service oriented architectures.
It's based on websocket, so it kinda works out of the box on most networks without bugging your local sysadmin, and has a bonus benefit of TLS support. And it's open standard with lots of open source clients, like MQTT.
It's also higher level, so you get (routed) RPC and PUB/SUB, with transparent result and error propagation accross language (you JS code in the browser can call you Java code on android discussing with your C# code in the cloud and your python code on the raspi).
The main implementation for the router, crossbar.io, works very well, with plenty of knobs for introspection, security, performance, etc. And you get authentication backed in.
No really, MQTT is very low level to my taste compared to WAMP.
- stargrazer 8y agoWith MQTT, there are a number of broker implementations which offer redundancy/resiliency. I did a quick check and didn't find any place stating anything about any of the routers being able to run in a redundant/resilient mode. If that is available, running WAMP becomes feasible, as I saw some interaction between MQTT and WAMP being possible.
- sametmax 8y agoWAMP is just websocket, so basically any web load balancer can offer redundancy, like the would do with another web service. I haven't done it, but I'm pretty sure you can spaw 4 crossbar instances, put nginx in the front and it will work.
- aramallo 8y agoThe problem with this approach is that the 4 Crossbar instances will need to have a connection/session with at least an instance of each service you want to have global visibility of. This is because WAMP is a session-based protocol, every peer needs to be connected to a Router in order to interact with other peers. A Router cannot initiate sessions, only clients can.
- aramallo 8y agoTomorrow I am presenting Bondy (our OSS WAMP router implementation) in the Riak London Meetup (https://www.meetup.com/riak-london/events/250813756/ https://www.meetup.com/riak-london/events/250813756/) and it will be available in Youtube later. As opposed to everything you might have seen, BONDY works in cluster. It is written in Erlang and uses eventual consistency model where data is replicated throughout the cluster using a gossip algorithm (plumtree - epidemic broadcast trees http://asc.di.fct.unl.pt/%7Ejleitao/pdf/srds07-leitao.pdf http://asc.di.fct.unl.pt/%7Ejleitao/pdf/srds07-leitao.pdf). Bondy embedds an HTTP/REST API Gateway and will provide an MQTT gateway in the future.