24. Nanite
Composed of Mappers and Agents
Thin
Mapper
25. Nanite
Composed of Mappers and Agents
Thin
Mapper
Shell
Mapper
26. Nanite
Composed of Mappers and Agents
Thin
A
Mapper
M Message
Queue
Q
(RabbitMQ)
P
Shell
Mapper
27. Nanite
Composed of Mappers and Agents
Agent
Thin
Actor
A
Mapper Actor
M Message
Actor
Queue
Q
(RabbitMQ)
P
Shell
Mapper
28. Nanite
Composed of Mappers and Agents
Agent
Thin
Actor
A
Mapper Actor
M Message
Actor
Queue
Q
(RabbitMQ)
P Agent
Shell
Actor
Mapper Actor
Actor
29. Nanite
Composed of Mappers and Agents
Agent
Thin
Actor
A A
Mapper Actor
M M
Message
Actor
Queue
Q Q
(RabbitMQ)
P P Agent
Shell
Actor
Mapper Actor
Actor
30. Nanite
Composed of Mappers and Agents
Agent
Thin
Actor
A A
Mapper Actor
M M
Message
Actor
Queue
Q Q
(RabbitMQ)
P P Agent
Shell
Actor
Mapper Actor
Actor
35. Nanite
Mappers
• Can have one or many
• Run within Rails or the shell
• Subscribed to the Mapper Exchange
36. Nanite
Mappers
• Can have one or many
• Run within Rails or the shell
• Subscribed to the Mapper Exchange
• Adds/Removes agents based on agent
availability
73. RabbitMQ
• An AMQP Messaging Broker
• Written in Erlang
• Uses the OTP (Open Telecom Platform)
system
74. RabbitMQ
• An AMQP Messaging Broker
• Written in Erlang
• Uses the OTP (Open Telecom Platform)
system
• Is stable - Achieved 99.9999999% availability
82. Resources
• Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
nanite/tree/master/
83. Resources
• Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
nanite/tree/master/
• George Palmer’s RubyManor Nanite presentation at http://rubymanor.org/
videos/nanite/
84. Resources
• Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
nanite/tree/master/
• George Palmer’s RubyManor Nanite presentation at http://rubymanor.org/
videos/nanite/
• RabbitMQ - Open Source Enterprise Messaging at http://
www.rabbitmq.com/
85. Resources
• Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
nanite/tree/master/
• George Palmer’s RubyManor Nanite presentation at http://rubymanor.org/
videos/nanite/
• RabbitMQ - Open Source Enterprise Messaging at http://
www.rabbitmq.com/
• AMQP - Advanced Message Queuing Protocol at http://jira.amqp.org/
confluence/display/AMQP/Advanced+Message+Queuing+Protocol
It’s highly scalable and provides failover. Workers can easily be removed and added therefore adding to the reliability and availability of the application. It relies on message queueing and provides load balancing.
It’s highly scalable and provides failover. Workers can easily be removed and added therefore adding to the reliability and availability of the application. It relies on message queueing and provides load balancing.
The control nodes for Nanite
Right now we only have one
All mappers are copied the ping times from the agents
The control nodes for Nanite
Right now we only have one
All mappers are copied the ping times from the agents
The control nodes for Nanite
Right now we only have one
All mappers are copied the ping times from the agents
The control nodes for Nanite
Right now we only have one
All mappers are copied the ping times from the agents
The control nodes for Nanite
Right now we only have one
All mappers are copied the ping times from the agents
The control nodes for Nanite
Right now we only have one
All mappers are copied the ping times from the agents
The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server.
The status can be changed as long as it’s something that’s comparable
Selectors include :rr, :random, :all, :least_loaded (default)
Return state - default is the load of the server they’re currently running on
The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server.
The status can be changed as long as it’s something that’s comparable
Selectors include :rr, :random, :all, :least_loaded (default)
Return state - default is the load of the server they’re currently running on
The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server.
The status can be changed as long as it’s something that’s comparable
Selectors include :rr, :random, :all, :least_loaded (default)
Return state - default is the load of the server they’re currently running on
The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server.
The status can be changed as long as it’s something that’s comparable
Selectors include :rr, :random, :all, :least_loaded (default)
Return state - default is the load of the server they’re currently running on
The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server.
The status can be changed as long as it’s something that’s comparable
Selectors include :rr, :random, :all, :least_loaded (default)
Return state - default is the load of the server they’re currently running on
The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server.
The status can be changed as long as it’s something that’s comparable
Selectors include :rr, :random, :all, :least_loaded (default)
Return state - default is the load of the server they’re currently running on
By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner.
The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content.
The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications).
The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria.
Standard proposed by industrial banks
High performance
Nanite implements AMQP
By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner.
The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content.
The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications).
The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria.
Standard proposed by industrial banks
High performance
Nanite implements AMQP
By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner.
The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content.
The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications).
The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria.
Standard proposed by industrial banks
High performance
Nanite implements AMQP
By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner.
The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content.
The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications).
The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria.
Standard proposed by industrial banks
High performance
Nanite implements AMQP