Michael's Interest in Distributed Computing
Amazon
Simply put, a distributed system is composed of multiple
hosts who communicate across the Internet to do something useful for us Homo
Sapiens. That's right. It is our slaves, but it is far from being as smart as
the dumbest human slave.
If everything worked perfectly at all times and nothing ever
failed, distributed computing would be freed of one of its biggest
challenges.
However the world doesn't work this way: 'If anything can go
wrong, it will (Murphy's Law).'
A host can fail at any moment; a network link can fail at any
moment; a bug can manifest itself at any moment. This is one of the main reasons that
make distributed computing an ongoing research topic. Failures considered, how
can consistency be maintained throughout every single machine in the system?
Also, the Internet is an extremely dynamic world; hosts come and leave. Making
sure the system is doing its work correctly despite possible failures and
dynamic configuration is extremely difficult.
Other issues include communication
latency, model of memory access, scalability, and concurrency control.
All in all, distributed computing is a great way of realizing the idea,
'The Internet is just a big computer,' but we are still far from
making it a reality.
A course in advanced distributed system, that in advanced transactional
database management system, and that in Java-centric RMI (Remote Method Interface) have given me a solid
background in this area both at a conceptual level and implementation level. In
the database course, we wrote a
Global Transaction Manager for
Sleepycat's Berkeley DB.
In Java-centric RMI, we used Java RMI to implement
distributed and parallel systems that perform a variety of tasks. We read papers
extensively and it is intriguing seeing people come up with different models to
approach this problem. Our project,
Document Search Engine,
is built on distributed and parallel concepts.
Take a look!