240 likes | 371 Views
EEC-681/781 Distributed Computing Systems. Lecture 1 Wenbing Zhao Cleveland State University wenbing@ieee.org. What is Distributed Computer System?. A collection of independent computers that appear to the users as a single coherent system Autonomous computers connected by a network
E N D
EEC-681/781Distributed Computing Systems Lecture 1 Wenbing Zhao Cleveland State University wenbing@ieee.org
What is Distributed Computer System? • A collection of independent computers that appear to the users as a single coherent system • Autonomous computers connected by a network • Software specifically designed to provide an integrated computing facility => Our focus! EEC-681: Distributed Computing Systems
How It is Different from Computer Network? • Distributed system is almost synonymous to middleware. It provides distribution transparency EEC-681: Distributed Computing Systems
Course Objectives • Good understanding of distributed computing principles • E.g., how distribution transparency is achieved? • Hands on experience • Labs: programming in different distributed computing paradigms • Projects: design and implement a distributed application => Put what you learned into use! EEC-681: Distributed Computing Systems
Prerequisite • Operating system principles • Processes, scheduling, file systems, etc. • Computer networks • TCP, UDP, IP, Ethernet, etc. • Java programming language • At least you should know how to write a Hello World program • You don’t have to be a Java expert EEC-681: Distributed Computing Systems
Topics • Overview of distributed systems • Definition • Distributed systems design principles • Distribution transparency • Openness • Mechanisms and policies • Scalability EEC-681: Distributed Computing Systems
Topics • System models • Fundamental models • Architecture models • Communication protocols & methods • Remote Procedure Calls (RPC) • Remote Method Invocations (RMI) • Message-oriented communication • Web services EEC-681: Distributed Computing Systems
Topics • Processes • Multithreading and concurrency control • Stateless and stateful design • Process migration • Naming • Naming and name resolution • X.500 and LDAP EEC-681: Distributed Computing Systems
Topics • Synchronization • Clock synchronization • Logical clocks • Global snapshot • Election and mutual exclusion • Transactions and distributed commit • Data replication and consistency EEC-681: Distributed Computing Systems
Labs “Tell me and I forget. Show me and I remember. Involve me and I understand.” - Chinese proverb • Lab 0 – Getting familiar with Linux • Lab 1 – Java RMI (Remote method invocation) • Lab 2 – ActiveMQ (Java Message Service) • Lab 3 – Apache Axis (Web services) • Lab 4 – Java JNDI (Naming and Directory) • Lab 5 – MySQL/JDBC (Transactions) EEC-681: Distributed Computing Systems
Labs • Lab sessions are mandatory unless an exception is granted in advance • I will not accept the lab report if you do now show up during the lab session EEC-681: Distributed Computing Systems
Course Project • Team of up to two (2) persons • You define the project you want to work on • Problem definition • Approach: how do you achieve distributed transparency, openness, scalability, etc. • Related work EEC-681: Distributed Computing Systems
Course Project • Deliverables • Project proposals • Progress report to help you keep good pace • Final project report • Design documentation • Source code of your system/application • Performance measurement and analysis • Demonstration and presentation EEC-681: Distributed Computing Systems
Class Participation • 10% of the course credit • I may perform a roll call in the beginning of each class/lab to determine the attendance • To obtain the full credit for class participation, you must satisfy ALL of the following conditions: • You do not miss more than 2 lectures • You do not miss any quiz and lab sessions • You asked at least 10 questions during the semester • You will lose all 10% credit if you miss more than 6 lectures/labs EEC-681: Distributed Computing Systems
Class Participation • Send me an email with the following information for each question you have asked within 24 hours after each lecture: • The question you asked • My response • Your comment on my response and suggestion for improvement, if any EEC-681: Distributed Computing Systems
Class Participation • You are encouraged to send me comments/suggestions on how you would like me to improve my teaching to make it more conducive • For each piece of comment/suggestion, it will be counted as 2 questions EEC-681: Distributed Computing Systems
Examinations • Three midterms, no final exam • The exams are closed book and closed notes, except that you are allowed to bring with you a one-page hand-written cheat sheet no larger than the US letter size (double-sided allowed) • No makeup exams! EEC-681: Distributed Computing Systems
Grading • Grading Scale • A: 90-100% • A-: 85-89% • B+: 75-84% • B: 65-74% • B-: 60-64% • C: 50-59% • F: < 50% • Class participation: 10% • Midterms: 45% (15% each) • Labs: 20% • Course project: 25% • Proposal 2% • Progress report 3% • Presentation 5% • Report 15% • If you are caught cheating in any of the steps, you will lose all credit for the project EEC-681: Distributed Computing Systems
Do not cheat! • Do not copy other student’s lab report, exams or projects • Do not copy someone else’s work found on the Internet • Including project implementation and report • You can quote a sentence or two, but put those in quote and give reference • You can build your projects on top of open source libraries, but again, you need to explicitly give acknowledgement and state clearly which parts are implemented by you EEC-681: Distributed Computing Systems
Do not cheat! • Do not try to ride on a team without contributing to the project • During presentation, I will ask you questions to determine if you know what you are talking about • I may also ask you to demo your program and walk me through your code EEC-681: Distributed Computing Systems
Consequences for Cheating • You get 0 credit for the task that you have cheated • If the task is worth more than 25% of the course, it is considered a major infraction • Otherwise, it is considered a minor infraction • For major infraction and repeated minor infractions • You will get an F grade, and • You may be suspended or repulsed from CSU • CSU Code of Conduct • http://www.csuohio.edu/studentlife/StudentCodeOfConduct.pdf EEC-681: Distributed Computing Systems
Reference Texts • Andrew S. Tanenbaum and Marten van Steen: • “Distributed Systems: Principles and Paradigms” • Prentice-Hall, 2002 • George Coulouris, Jean Dollimore and Tim Kindberg: • “Distributed Systems: Concepts and Design” • 4th Edition, Addison-Wesley, 2005 • Sape J. Mullender: • “Distributed Systems” • 2nd Edition, ACM Press, 1993 EEC-681: Distributed Computing Systems
Instructor Information • Instructor: Dr. Wenbing Zhao • Email: wenbing@ieee.org • Lecture hours: M W 6:00-7:50pm • Office hours: M W 2:00-4:00pm and by appointment • Anonymous email: • teachingcsu@gmail.com • Password: • if you are not happy, please do let me know • Course Web site: • http://academic.csuohio.edu/zhao_w/teaching/EEC681-F08/eec681.htm EEC-681: Distributed Computing Systems
DCS Lab • The lab consists of about 20 nodes running Suse 10.2 Linux • Accessible from the Internet through the server • Externally visible domain name: dcs.csuohio.edu • The lab itself runs many distributed systems, e.g., • NFS (networked file systems) • NIS (network information service) EEC-681: Distributed Computing Systems