notes of Distributed System Principles