From cb6bea31a4dbaa5eab7e228168e7f0c0916a44f0 Mon Sep 17 00:00:00 2001 From: Jamie Turner Date: Mon, 18 Nov 2013 12:48:29 -0800 Subject: [PATCH] Docs generated. --- docs/index.html | 9 +++++---- docs/nitro.md | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/index.html b/docs/index.html index 9b537e5..0ba1dae 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,6 +3,7 @@ + The Nitro Codex @@ -73,7 +74,7 @@

August 1st, 2013

  • Contact/Credits
  • -

    Current for: nitro-0.2.1

    +

    Current for: nitro-0.2.2

    Introducing Nitro

    Nitro is a library for writing scalable, flexible, and secure network applications. Nitro applications create bound sockets ("nitro sockets" here being a different and higher-level abstraction than BSD sockets) that listen at a certain location so that other Nitro sockets can connect and exchange messages.

    A message, wrapped in a "frame", is the fundamental unit of communication between Nitro sockets. When a frame is sent, it is either received completely by another party or not at all. Application developers don't need to worry about boundary conditions, message delimiting, etc.

    @@ -962,7 +963,7 @@

    FAQ

  • ZeroMQ ROUTER sockets also have some O(n) algorithms, where n is the number of connected peers on a socket; nitro is all O(1). This doesn't matter much when you have 5 or 10 or 50 big server systems pushing loads to each other on a private network, but it sucks when you have 50,000 mostly-idle clients on high-latency Internet links.
  • In practice we found the "typed socket" paradigm (REQ/REP/PUSH) more of a hindrance than a help. We often ended up with hybrid schemes, like "REQ/maybe REP", or "REQ/multi REP". Also, if you want REQ/REP with multiple clients where you do some processing to produce the REP result, you'll need to chain together ROUTER/DEALER. REQ/REP stacks and make sure you carefully track the address frames. Nitro lets you create any topology you want, and the routing is relatively abstracted from the application developer--you don't need to worry how deep or shallow you are, for example.
  • We found having the ZMQ's routing information in special MORE frames that have implict rules that differ on the basis of socket types (DEALER will generate it, REQ will not) cumbersome.
  • -
  • ZMQ Socket options have documented rules about when they take effect and when not, but these rules are not enforced by the API so they can bite you. Nitro separates things that must be decided at construction time from those you can modify on the fly (_sub and _unsub, etc).
  • +
  • ZMQ Socket options have documented rules about when they take effect and when not, but these rules are not enforced by the API so they can bite you. Nitro separates things that must be decided at construction time from those you can modify on the fly (sub and unsub, etc).
  • Pub/sub based on message body was limiting for us in practice. Oftentimes we wanted a separation of the "channel name" and the message body.
  • ZMQ sockets are not thread safe. So the way to make a multicore exploiting RPC service is to chain tcp/ROUTER frontends to an array of inproc backends, each running in a separate pthread. This is a layer of complexity nitro removes by just having sockets be thread afe.
  • ZMQ_FD is edge triggered. It's much harder to integrate an edge-triggered interface into other event loops. Though it has a theoretical performance benefit, Nitro uses a level-triggered activity fd to make integration easier for 3rd party binding developers.
  • @@ -977,9 +978,9 @@

    FAQ

  • ZeroMQ is ported to work on Windows and lots of other places. Nitro has not yet been ported to anything but Linux and Mac OS X.
  • Q: With the domain gonitro.io, I expected something written for (or in) golang. Does this have anything to do with go?

    -

    No. Go is a cool language, and we might have a go port soon if we can talk @xb95 into writing it :-), but nitro proper is written in C and has nothing directly to do with golang. Hey, good domain names are hard to come by.

    +

    No. Go is a cool language, and we might have a go port soon if we can talk @xb95 into writing it :-), but nitro proper is written in C and has nothing directly to do with golang. Hey, good domain names are hard to come by.

    Contact/Credits

    -

    nitro was written by @jamwt, with help from @magicseth, @dowski, and @edahlgren. We all work for @bumptech.

    +

    nitro was written by @jamwt, with help from @magicseth, @dowski, and @edahlgren. We all work for @bumptech.

    Come talk to us on Freenode/#gonitro

    Send our bugs and pull requests to GitHub: https://github.com/bumptech/nitro

    If there are typos or inaccuracies in this document, let us know that as well!

    diff --git a/docs/nitro.md b/docs/nitro.md index bff19a1..89070df 100644 --- a/docs/nitro.md +++ b/docs/nitro.md @@ -2,7 +2,7 @@ %Jamie Turner %August 1st, 2013 -*Current for: nitro-0.2.1* +*Current for: nitro-0.2.2* Introducing Nitro =================