讲解 program、辅导 Java/Python程序语言
Project Assignment: Design Your Own Distributed System
Assigned On: 3/22/2024
Project Plan Due Date: 4/5/2024
Demonstration and Review: 4/19/2024
This project can be undertaken individually or in a team comprising two to three members.
For this project, you will architect, engineer, and thoroughly validate a distributed system, realizing some application
such as a multi-player game, a collaborative tool, or a transaction processing system.
Requirements
As this is a course in distributed systems, we desire the system to incorporate intriguing attributes from a computing
systems perspective. Here are some crucial capabilities your system should encompass:
The system shall support multiple, autonomous actors (either human or digital agents) contending for shared
resources and executing real-time updates to some manifestation of collective system state.
The system state shall be disseminated across multiple client or server nodes.
The only centralized facility should be one that facilitates user login, appending or removing clients or servers, and
other housekeeping operations.
The system shall be resilient:
It shall be able to maintain operation despite the failure of any individual participant node.
It shall allow recouping the state of a node subsequent to a failure, enabling resumption of operation.
We will permit you to choose your own application, and we will provide extensive latitude in the overall design and
detailed implementation.
As it is challenging to accurately estimate the complexity of constructing a new system, you should formulate a set of
"tiers," where the fundamental tier represents capabilities you are assured to deliver, while incremental tiers
incorporate more functionality, at both the application and infrastructure levels.
You may elect any programming language.
You are permitted to employ external libraries to support the application or user interface aspects. Examples include
GUI frameworks, media processing packages, mapping APIs, etc.
In general, you MAY NOT build your project by relying on any fully-implemented distributed system project — you
cannot simply reuse or build atop an existing packaged fully worked system. Please consult lecturer or TA if uncertain
regarding suitability of external dependencies.
2
Evaluation
Your system will be assessed principally on its operation as a distributed system. Key evaluation criteria include:
• Inclusion of fascinating distributed algorithms for synchronization, replication, fault tolerance, security, etc.
• Sound software architecture and engineering wisdom evident in the system design and implementation.
• Devising and applying methodical testing procedures, at both modular and end-to-end levels.
• Reliable and performant operation even in the occurrence of failures.
Secondary attributes:
• Novelty and utility of the application domain.
• Quality of the user experience design.
Some Project Ideas
The following list of projects is intended to spark your imagination, with estimate diffcultly accordingly. Feel free to
come up with something totally different. Contact lecturer or TA if you are uncertain of the suitability of your ideas.
• (medium to hard) Shared document editing, in the style of Google docs. The system should support real-time
editing and viewing by multiple participants. Multiple replicas would be maintained for fault tolerance. Caching
and/or copy migration would be useful to minimize application response time
• (hard) A simulated life game, in the style of The Sims or Farmville. The state of the system would be partitioned
spatially, with replication for fault tolerance.
• (hard) A multi-player real-time game, based on shooting, hunting for treasure, etc. There are many possibil- ities
here.
• (easy to medium) An airline reservation system. Each airline would maintain its own collection of servers, with
enough state replication to enable automatic fail-over. It would be possible to book travel that involves multiple
airlines.
• (medium to hard) A low-latency notification system. E.g., watch a whole bunch of RSS feeds and send all
subscribers an email when one is updated. Interface with both the raw RSS feeds and Google’s update notification
service. Replicate and partition the state of the monitoring system so that it can scale and survive node failures.
Project Deliverables and Timelines, Grading
You shall submit a project proposal covering:
• A depiction of the application functionality
• The high-level system architecture and component design
• The distributed computing algorithms and techniques to be included
• Your test strategy to validate system operation
• A delivery plan outlining core capabilities and incremental enhancements
• A split for system design, engineering and test activities ( if it's a teamwork )
This document shall be 3-4 pages in length and account for 25% of the total project grade.
We encourage meetings with course staff during proposal planning to obtain feedback prior to submission.
3
We will host a project demo day on 4/19/2024. Be ready to showcase end-to-end system operation including fault
tolerance( for example), along with your testing methodology. This constitutes 75% of the grade.
We wish you success with this exciting opportunity!
4