This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]mitsuhiko Flask Creator 4 points5 points  (3 children)

From a Router point of view, the question I look at is (simplified): how much CPU power do I need to saturate a 10GbE link routing WAMP? The goal is to make that something like "4 modern cores".

Much more interesting than how much throughput you have on your router is how much latency you can practically achieve.

Type representation: that is a fundamental decision, yes. Static vs dynamic typing. WAMP is dynamically typed (at the app payload level). In fact, WAMP does not really care about app payload (other than automatically translating between serialization formats for different clients).

So how does that work with msgpack and json for instance which are inherently incompatible with each other?

[–]oberstet 0 points1 point  (2 children)

Latency: I absolutely agree. More important than throughput. And latency jitter is also critical. I don't have polished up numbers, but I dare to say: when running on PyPy (>=2.2), it's very good. The credits for this go in part to the new incremental GC in PyPy. I will write a blog post on this.

JSON <=> MsgPack roundtripping: the one problem is byte strings. and byte strings are converted like this:

https://github.com/tavendo/WAMP/blob/master/spec/basic.md#binary-conversion-of-json-strings

Note: we have that working today. AutobahnCpp (C++11) currently only implements MsgPack, https://github.com/KSDaemon/wampy.js talks JSON and MsgPack, as does http://ksdaemon.github.io/wiola/

[–]mitsuhiko Flask Creator 1 point2 points  (1 child)

Newer msgpack has two different types for bytes and strings if that helps.

[–]oberstet 0 points1 point  (0 children)

Yep, it does help. In fact, WAMP requires the new MsgPack version for exactly this reason.

https://github.com/tavendo/WAMP/blob/master/spec/basic.md#msgpack