GithubHelp home page GithubHelp logo

edwardt / beehive Goto Github PK

View Code? Open in Web Editor NEW

This project forked from auser/beehive

1.0 3.0 0.0 5.51 MB

Honeycombs of applications

Home Page: getbeehive.com

License: Other

Ruby 0.62% JavaScript 2.58% Shell 4.74% Erlang 92.07%

beehive's Introduction

Beehive

What is Beehive?

  • Distributed router
  • Application deployment tool
  • Written in erlang, c and ruby
  • Scalable
  • Application load-balancer
  • Template-able
  • Configurable
  • And much more

Dependencies

  • Erlang - Development has been happening on R14B also runs on R14A and R13B
  • Ruby - 1.8.7 or 1.9.2
  • rubygems- rack, thin (for tests and prodcution)
  • rubygems- isolate, bundler (if any prod apps depend upon them)
  • git - 1.7.x

Get Started

./start_dev.sh

This will start beehive on your local machine with the root /tmp/beehive. If you want to use a different directory, (such as something less transient like ~/beehive_data) run:

export BEEHIVE_HOME=~/beehive_data

When starting beehive in a non-dev mode, the beehive root will default to /var/lib/beehive.

Running tests

 make test

Make sure you have all dependencies installed. Various tests depend up them, and tests likely won't complete properly without them. You'll get some especially confusing output if you're missing thin and rack.

How it works

The incredibly basic architecture diagram of beehive looks like:

Distributed Routing layer
----------------------------
  |         |         |    
Backend   Backend   Backend
  |         |         |    
Storage   Storage   Storage
----------------------------

The distributed routing layer, written in erlang uses Mnesia, the distributed database management system intelligently routes requests across the bees. The router currently can handle http requests. Because Beehive was written with the intention of being extensible it can be extensible to other protocols.

It handles pending connections seamlessly and allows for streaming connections. It also keeps track of statistical data available through a web interface. The router itself has a RESTful interface for adding bees, which don't even need to sit inside the Beehive network. This can be useful for putting the router in front of a personal cluster (such as Eucalyptus) and expanding to the cloud environment (such as EC2) without having to change a line of code.

Beehive keeps track of the available bees for the known applications.

Beehive has an event system that allows for notifications along the system in a nonblocking manner. This way system events, statistic gathering log events can all be handled without affecting the performance of the router, which is tuned for speed.


For more information, see more docs


Thanks

  • Mad props for the super smart folks at Heroku for their sweet architecture ideas and for providing such a rad interface and an unmatched user experience.
  • Daniel Fischer for his web design help
  • AT&T for their support of the project
  • Beehive is a part of the Poolparty project suite.

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 Ari Lerner. See LICENSE for details.

beehive's People

Contributors

auser avatar jdunphy avatar edwardt avatar pete avatar fairchild avatar jcast avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.