Resumo: | There are two basic database replication architectures. Sharing a storage system between servers is called shared-storage architecture and it needs some sort of coordination so servers can access the storage. With the shared-nothing architecture, servers can only access their private storage (like a local hard disk), which means that it needs less coordination,between them. ReD (Resilient Databases) project proposes a new hybrid database replication architecture. In this new architecture all servers have a local database copy, but only one writes in the shared storage and this is accomplished with a coordination layer. In this project we analyse and compare some existing coordination services in order to understand which is best to use in that coordination layer implementation. After the study, we implemented the layer by developing a leader election algorithm using ZooKeeper as the coordination service. In the second phase of this project we propose a byzantine fault tolerant approach for the same layer. Following first phase procedure, a leader election algorithm was developed and implemented, but in this case using DepSpace as the coordination service. However, due to some limitations in this service, we developed a new version with features that allowed this implementation. The study of coordination services and implementations of these algorithms, show that it is possible to reduce effort on the development of complex distributed systems, because programmers can concentrate on the development of the service itself.
|