Eduardo Bezerra

Research


I've done research on distributed systems, with focus on scalability, fault-tolerance (by means of replication) and strong consistency. I worked on solutions that make state-machine replication (SMR) scalable and lower the latency of atomic multicast.

Previously, my research focused on decentralized network support for MMOGs (massively multiplayer online games), with problems similar to that of state-machine replication, but with lower tolerance to latency and higher tolerance to inconsistencies. Also, MMOGs face the problem of cheating, which is specific to games. I've done research and development of solutions for multiplayer games since the last year of my Bachelor's course in Computer Science, when I was actively participating of the creation and development of the InGE game engine, and I was one of the main programmers of the We are the champignons game. My Bachelor's thesis was on the topic of QoS for multiplayer games using wireless networks, such as IEEE 802.11. After that, during my Master course, I worked on the P2PSE project, whose objective was to create a peer-to-peer game architecture for massively multiplayer games, which we achieved.

My Master's thesis had as objective create a decentralized multi-server architecture, where the server nodes were actually given by volunteers, likely possessing very limited resources to serve the game. I had several publications during my Master, whose focus was on saving network bandwidth from the servers, through a fine-tuned interest management scheme, and on balancing the load among game servers while minimizing inter-server communication. By doing this, we saved resources of the system and reduced communication latency between players.

For my PhD thesis, I created and validated solutions to scale replicated services without losing strong consistency or sacrificing performance. The resulting Scalable State Machine Replication technique allowed an implementation of the ZooKeeper API to scale both read- and write-dominated workloads with the number of services, while ensuring strong consistency (namely, linearizability) for every execution.