Item 33 of the Vertx.3 project plan calls out a need for an EventBus wire protocol gateway. I am starting work on this and I would like to open it up for discussion in this thread. people Currently the project repository is hosted on GitHub
I will be getting things setup to be in line with the other vertx-x3 projects in terms of source layout, maven pom, etc for right now, I'd like to use this thread as a way for people to chime in and let me know what you'd like to see with the protocol, suggestions etc.
Obviously the first question would be the need for an external protocol, why bother? This one should be pretty easy. While Vert.x supports a variety of development languages, all of those are currently in-VM. If we want to open the doors a bit, allowing for external execution across a wire would make a lot of sense. Here you could envision Vert.x clients no longer being VM dependent or having to traverse another API (REST etc) for verticle communication as well as communicating with Vert.x in general.
Obviously there can be a lot that goes into a protocol. My initial thoughts on requirements:
1) Protocol DefinitionCurrently there is no such thing. Vert.x has it's own internal message format that we use across the wire between nodes in a cluster, but that's about it.
Clearly a protocol, message format for external consumption would need to be defined. This of course can be as simple or complex as we can make it
:-) I'd prefer to start with the former and address the latter as required.
2) Execution EnvironmentObviously something has to consume the protocol and do something with it. Here would be the runtime engine/layer that would accept protocol requests, do the work etc.
3) Deployment/Management/ConfigurationI'd like to see the external protocol as an 'opt-in' that doesn't come by default. It would be something that can be separately stopped/started/manage/configured independent of the Vertx core. While this may seem to be an obvious requirement, sometimes things have a tendency of 'bleeding into' existing code.
4) FunI'd like the conception, realization, development of the protocol/runtime to be fun
and in which people show an active interest.
That's pretty much it to start. I'm looking forward to getting things rolling as well as hearing any thoughts, comments etc.
--
You received this message because you are subscribed to the Google Groups "vert.x" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vertx+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
On 18/10/14 19:30, Weston Price wrote:
Item 33 of the Vertx.3 project plan calls out a need for an EventBus wire protocol gateway. I am starting work on this and I would like to open it up for discussion in this thread. people Currently the project repository is hosted on GitHub
I will be getting things setup to be in line with the other vertx-x3 projects in terms of source layout, maven pom, etc for right now, I'd like to use this thread as a way for people to chime in and let me know what you'd like to see with the protocol, suggestions etc.
Obviously the first question would be the need for an external protocol, why bother? This one should be pretty easy. While Vert.x supports a variety of development languages, all of those are currently in-VM. If we want to open the doors a bit, allowing for external execution across a wire would make a lot of sense. Here you could envision Vert.x clients no longer being VM dependent or having to traverse another API (REST etc) for verticle communication as well as communicating with Vert.x in general.
Obviously there can be a lot that goes into a protocol. My initial thoughts on requirements:
1) Protocol DefinitionCurrently there is no such thing. Vert.x has it's own internal message format that we use across the wire between nodes in a cluster, but that's about it.
There is another way that Vert.x users sometimes use to talk to the Vert.x event bus from a non Vert.x environment - to use the Vert.x eventbusbridge and talk to it over websockets sending JSON just like eventbus.js does. This works but we could definitely do bette than this
Clearly a protocol, message format for external consumption would need to be defined. This of course can be as simple or complex as we can make it
I vote for simple :)
One basic thing to decide would be whether we go for a binary or text protocol, or maybe both?
On 18/10/14 21:15, Tim Fox wrote:
On 18/10/14 19:30, Weston Price wrote:
Item 33 of the Vertx.3 project plan calls out a need for an EventBus wire protocol gateway. I am starting work on this and I would like to open it up for discussion in this thread. people Currently the project repository is hosted on GitHub
I will be getting things setup to be in line with the other vertx-x3 projects in terms of source layout, maven pom, etc for right now, I'd like to use this thread as a way for people to chime in and let me know what you'd like to see with the protocol, suggestions etc.
Obviously the first question would be the need for an external protocol, why bother? This one should be pretty easy. While Vert.x supports a variety of development languages, all of those are currently in-VM. If we want to open the doors a bit, allowing for external execution across a wire would make a lot of sense. Here you could envision Vert.x clients no longer being VM dependent or having to traverse another API (REST etc) for verticle communication as well as communicating with Vert.x in general.
Obviously there can be a lot that goes into a protocol. My initial thoughts on requirements:
1) Protocol DefinitionCurrently there is no such thing. Vert.x has it's own internal message format that we use across the wire between nodes in a cluster, but that's about it.
There is another way that Vert.x users sometimes use to talk to the Vert.x event bus from a non Vert.x environment - to use the Vert.x eventbusbridge and talk to it over websockets sending JSON just like eventbus.js does. This works but we could definitely do bette than this
Clearly a protocol, message format for external consumption would need to be defined. This of course can be as simple or complex as we can make it
I vote for simple :)
One basic thing to decide would be whether we go for a binary or text protocol, or maybe both?
Something to think about:
Binary protocols: Performant but harder to write clients -> less adoption
Text protocols: Slower but easier to write clients -> more adoption
Redis is a good example of this. They have a very simple text based protocol http://redis.io/topics/protocol
It might not be the fastest/most efficient thing in the world, but the simplicity means it's dead easy to write clients for it.
That's why they have more clients than just about any other project I've seen:
http://redis.io/clients
What we *don't* want is another AMQP ;)
Speaking of binary protocols, I read about this project http://spearal.io/ as a "substitute" for JSON.
MQTT is a Client Server publish/subscribe messaging transport protocol. It is light weight, open, simple, and designed so as to be easy to implement.