Curricular Unit:Code:
Distributed Systems831SDIS
Year:Level:Course:Credits:
3UndergraduateComputer Systems Engineering6 ects
Learning Period:Language of Instruction:Total Hours:
Portuguese/English78
Learning Outcomes of the Curricular Unit:
In this curricular unit it is intended that students master the objectives and practices of managing distributed systems. More specifically:
• Identify and describe the objectives of distributed systems
• Distinguish and characterize the main communication and middleware models
• Explain the mechanisms and functioning of identification and discovery services for distributed resources/entities
• List and describe distributed process synchronization and coordination solutions
• Identify and describe consistency models, replication and update management in distributed systems
• Describe types of failures and, characterize and apply fault tolerance techniques as well as consensus protocols used in distributed systems
• List types of attacks on distributed systems and describe mechanisms and solutions for establishing secure channels
• Use middlware tools in the development/implementation of distributed applications
Syllabus:
1. Introduction to Distributed Systems: definition, objectives, middleware and client-server model
2. Communication and Processing: protocol layers, types of communication between processes (RPC/RMI/CORBA, MoM and data flows), distributed processing organization (cf. processes, threads, agents)
3. Names and Name Spaces: identification of resources/entities, namespaces and name resolution
4. Resource Synchronization: time or logic synchronization, coordinators and election, competition management and mutual exclusion
5. Resource Replication and Consistency: models of strong and weak consistency, resource replication and updating, consistency implementation protocols
6. Fault Tolerance: fault models, groups and fault masking, consensus and distributed commit (2PC)
7. Protection and security: attacks, encryption (sym, asym) and secure channels
8. Remote Tools and Services: remote objects (RMI) and message-oriented middleware (MoM)
Demonstration of the Syllabus Coherence with the Curricular Unit's Objectives:
The programmatic content covers the planned objectives, since it is organized in modules that specifically address the concepts applied in the distribution of services and the resolution of concrete synchronization and coordination problems. The basic concepts are covered in modules 1 and 2 (cf. objectives and models of communication and application distribution) and the advanced concepts are covered in modules 3 to 7 (cf. namespaces, replication and consistency, fault tolerance and security). Chapter 8 accompanies the PL classes, covering technologies used in the implementation of concrete examples of distributed applications. The TP modules address the theoretical concepts associated with each theme, being accompanied by examples of application in PL classes. Hence, the resolution of guided exercises in each module is encouraged and, in addition, small challenges are proposed to be explored individually.
Teaching Methodologies (Including Evaluation):
Theoretical contents (T) are typically exposed using simple and illustrative examples. In parallel, the practical-laboratory classes (PL) apply design patterns adjusted to the resolution of concrete exercises of synchronization and coordination of distributed processes, using appropriate middleware and thus complementing the effort of the TP classes. Students receive a set of shell scripts that allow automating the installation and execution (cf. deployment) of the different packages that are being developed in each UC class. The scripts are adapted by the students to each proposed weekly exercise. Typically 5 protocols are proposed using synchronous communication and design patterns adapted to different aspects of distributed management; additionally, 5 protocols are also proposed using asynchronous communication, also applying different message management standards.
The assessment comprises the following elements: 25% Test 1 + 35% Test 2 + 40% Project
Demonstration of the Coherence between the Teaching Methodologies and the Learning Outcomes:
The teaching methodology focuses on understanding the most relevant concepts associated with the modeling and management of distributed architectures applied to the resolution of concrete and real problems. The examples of proposed exercises are aimed at understanding the mechanisms available in the various tools (cf. RMI and RabbitMQ) for the development and coordination of distributed processes. The resolution of exercises, applying design standards, aims to stimulate the application of knowledge about the mechanisms of management and coordination of distributed processes. This practice also intends to consolidate the mastery over the tools used in the whole development process, from the conception to the implementation and execution of concrete application examples.
Reading:
[1] Steen, M. van and Tanenbaum, A.S. , Distributed Systems, 3rd ed., distributed-systems.net, 2017.
[2] Coulouris G., Dollimore J., Kindberg T., Blair, G. S., Distributed Systems Concepts and Design, 5th Ed., Addison-Wesley 2012.
[3] Marques, J. A., Guedes, P., Tecnologia de Sistemas distribuídos, FCA, 2003.