What it does

Digital Fortress is a network application that allows you to connect multiple slaves to a single master node. The master node is capable of assigning specific calculations to individual nodes in order complete tasks more efficiently with parallel processing. Under a high load, the Raspberry Pis can get quite warm, so I added built in temperature monitoring in order to keep track of over heating Pis. I built both a Pebble smart watch app as long as an HTML web app that displays the temperature of all connected nodes so it is easy to monitor temperatures from anywhere in the wrold. The master node syncs the name and temperature of each slave node to an Amazon Web Services server so that the data can be accessed from anywhere, even outside of the network.

How I built it

Java and lots of redbull! A large amount of research went into this topic. I had to begin with building a packet system using TCP sockets in order to transfer data between the master and slave nodes in order to maintain an organized workflow. Otherwise, random data flowing everywhere would have just created an infinite number of problems. Not every task is able to be completely in a parallel fashion. Calculations that are dependent on previous calculations are not good candidates for parallel processing because it still ties up the CPUs while they are waiting for information from previous calculations. Calculations such as finding the nth term in the fibonacci sequence however, is a great candidate for cluster computing because each term is independent to the others so they can be calculated in a parallel fashion.

Challenges I ran into

Sleeping! Oddly enough sleeping was extremely difficult because everytime I was about to fall asleep I was thinking about another feature that I could add in order to give the project some extra pizzaz! Another issue I ran into however was setting up the networking in such a way that it did not create more than a few threads on the master node. I didn't want to open a bunch of threads because the master node is being hosted on a Raspberry Pi Model B, and I did not want to affect the performance of the Pi. I also had issues with creating the pebble app. I was not familiar with the API or the IDE that they recommended, so everything was completely foreign to me. Luckily it was just Javascript, so it was easy to pick up on and figure out along the way.

What I learned

I learned an incredible amount about interconnecting devices through the internet. I had to route the cluster computer's internet through my laptop's ethernet port, and then forward the traffic through my wireless card onto the KSUEvent WiFi network. I learned alot while researching uses parallel processing and how exactly it works.

Share this project: