Jump to: navigation, search

Difference between revisions of "Obsolete:ArchitecturalOverview"

 
Line 3: Line 3:
  
 
Live Notes may be taken for this topic at: http://etherpad.openstack.org/Architecture
 
Live Notes may be taken for this topic at: http://etherpad.openstack.org/Architecture
 +
 +
[[Image:ArchitecturalOverview$overview.png]]
 +
 +
=== “Small” components, loosely coupled ===
 +
 +
* Queue based (currently AMQP/RabbitMQ)
 +
* Flexible schema for datastore (currently Redis)
 +
* LDAP (allows for integration with MS Active Directory via translucent proxy)
 +
* Workers & Web hooks (be of the web)
 +
* Asynchronous everything (don't block)
 +
 +
=== Development goals ===
 +
 +
* Testing & Continuous Integration
 +
* Fakes (allows development on a laptop)
 +
* Adaptable (goal is to make integration with existing resources at organization easier)
 +
 +
=== Queue ===
 +
 +
* Each worker/agent listens on a general topic, and a subtopic for that node.  Example would be "compute" & "compute:hostname"
 +
* Messages in the queue are currently '''Topic''', '''Method''', '''Arguments''' - which maps to a method in the python class for the worker
 +
* exposed via method calls
 +
** '''rpc.cast''' to broadcast the message and not wait for a response
 +
** '''rpc.call''' to send a message and wait for the response
 +
 +
=== Datastore ===
 +
 +
* Currently data is stored in Redis 2.0 (RC)
 +
* Do the work on write - make reads FAST
 +
** maintain indexes / lists of common subsets
 +
** use pools (SETs in redis) that are drained for IPs instead of tracking what is allocated
 +
 +
=== Delta ===
 +
 +
* Scheduler does not exist (instances are distributed via the queue to the first worker that consumes the message)
 +
* Object store in Nova is a naive stub which would be replaced with Cloud Files in Production (a simple object store that mimics Cloud Files might be good for development)
 +
* Tornado should be phased out for WSGI-based web framework

Revision as of 11:16, 13 July 2010

Architectural Overview

Live Notes may be taken for this topic at: http://etherpad.openstack.org/Architecture

File:ArchitecturalOverview$overview.png

“Small” components, loosely coupled

  • Queue based (currently AMQP/RabbitMQ)
  • Flexible schema for datastore (currently Redis)
  • LDAP (allows for integration with MS Active Directory via translucent proxy)
  • Workers & Web hooks (be of the web)
  • Asynchronous everything (don't block)

Development goals

  • Testing & Continuous Integration
  • Fakes (allows development on a laptop)
  • Adaptable (goal is to make integration with existing resources at organization easier)

Queue

  • Each worker/agent listens on a general topic, and a subtopic for that node. Example would be "compute" & "compute:hostname"
  • Messages in the queue are currently Topic, Method, Arguments - which maps to a method in the python class for the worker
  • exposed via method calls
    • rpc.cast to broadcast the message and not wait for a response
    • rpc.call to send a message and wait for the response

Datastore

  • Currently data is stored in Redis 2.0 (RC)
  • Do the work on write - make reads FAST
    • maintain indexes / lists of common subsets
    • use pools (SETs in redis) that are drained for IPs instead of tracking what is allocated

Delta

  • Scheduler does not exist (instances are distributed via the queue to the first worker that consumes the message)
  • Object store in Nova is a naive stub which would be replaced with Cloud Files in Production (a simple object store that mimics Cloud Files might be good for development)
  • Tornado should be phased out for WSGI-based web framework