{small lecturenumber - heblocknumber :} Class structureaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Class structureaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Course Policyaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} What is a distributed system?addtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} What is a distributed system?addtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Issues in distributed systemsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} An example: DNSaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS from the client sideaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Other things DNS doesaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} A naive solutionaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} A naive solutionaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} How DNS actually worksaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS from the client side, reduxaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Local DNS serversaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} DNS as a distributed systemaddtocounter {blocknumber}{1}Distributed Software DevelopmentIntroductionChris BrooksDepartment of Computer ScienceUniversity of San FranciscoDepartment of Computer Science — University of San Francisco – p.1/??1-0: Class structure1st half: fundamentals and principles:Mondays: lab on a current piece of technology.Wednesdays: lecture on fundamental problems andprinciples of distributed systems.Work:Weekly labs to turn in.MidtermDepartment of Computer Science — University of San Francisco – p.2/??1-1: Class structure2nd half: Case studies, examples, and applicationsMore lecture, guest speakers, discussionWork:Two projectsP2P clientProject of your choosing.FinalDepartment of Computer Science — University of San Francisco – p.3/??1-2: Course PolicyClass participation is very important.Attendance is requiredActive participation is encouraged (and rewarded!)Texts:We will use a number of the O’Reilly texts availablethrough Safari.I will also provide you with handouts covering lecturetopics.I will expect you to do the reading before class.Languages:For the labs, you must use an ’appropriate’ language.For the projects, you may use whatever language youwant.Department of Computer Science — University of San Francisco – p.4/??1-3: What is a distributed system?(Couloris) “A distributed system is one in which hardwareor software components communicate or coordinate theiractions only by passing messages.”This covers everything from a parallel computer to theInternet.Department of Computer Science — University of San Francisco – p.5/??1-4: What is a distributed system?So how is this class different from Pacheco’s or Miller’s?Different set of challenges:HeterogeneityOpennessScalabilityFailure modelsDegree of parallelismDepartment of Computer Science — University of San Francisco – p.6/??1-5: Issues in distributed systemsThe definition Couloris provides leads to the followingproblems that must be considered:Concurrency - work is happening on multiplecomputers simultaneously and must be coordinated.No global clock.Independent failures, both network and computer.We’ll spend a lot of time discussing these problems.Department of Computer Science — University of San Francisco – p.7/??1-6: An example: DNSTo illustrate some of the issues involved in distributedcomputing, we’ll look at a well-known distributed system:DNS.DNS stands for domain system.This is the system that maps symbolic hostnames(such as stargate.cs.usfca.edu) to IP addresses (suchas 138.202.171.14).Symbolic names are much easier for humans to work with.Computers, on the other hand, do better with IPaddresses.How can we look up the correct IP address for ahostname?Department of Computer Science — University of San Francisco – p.8/??1-7: DNS from the client sideFrom a web browser’s perspective, resolving a hostnamelooks like this:1. The hostname is extracted from the URL.2. The browser sends a query to a DNS server.3. The server eventually returns a reply, which containsthe corresponding IP address.4. The browser then opens a TCP connection to that IPaddress.From the client side, this looks pretty simple.Department of Computer Science — University of San Francisco – p.9/??1-8: Other things DNS doesAlong with translating hostname/IP address pairs, DNScan do the following:Host aliasing - for example, nexus.cs.usfca.edu is alsowww.cs.usfca.edunexus.cs is the canonical hostnameMail server aliasing - the CS mail server isnexus.cs.usfca.edu, yet I can send email [email protected] successfully.Load distribution. We can map multiple IP addressesto a single hostname.The DNS server will return all IP addresses, butpermute the order.Department of Computer Science — University of San Francisco – p.10/??1-9: A naive solutionOne way to build a DNS server would be the following:get a fast Internet connection and set up a singlehigh-speed computer that will do all DNS resolutions via ahuge database.What are some problems with this approach?Department of Computer Science — University of San Francisco – p.11/??1-10: A naive solutionSingle point of failureNot scalableNot “close to” all clients - unacceptable delay.Difficult to maintain.Department of Computer Science — University of San Francisco – p.12/??1-11: How DNS actually worksDNS is a distributed, hierarchical database.Large number of servers worldwide.No database contains
View Full Document