<aside>
⚠️ This is still subject to change.
</aside>
Style Guidelines
Your solution must adhere to the following Java Style Guidelines I have established for this course: Java Style Guidelines. Make certain that you following the guidance regarding documentation. Points will be deducted for any violations.
Microcloud Usage
Your demonstration must be run on independent hosts as described below in the grading script. The microcloud is available for your use. The following document provides a brief overview of the microcloud and lists the port range each student must use: Microcloud Port Assignments.
Demonstration Signup and Overview
You may sign up for your 30-minute demonstration appointment here: Demo Signup
- Carefully read the instructions at the top of the spreadsheet before making changes.
- Appointments will be 30 minutes in length.
- Appointments will be spread out over two days. Students who are planning to use their 24-hour extension should select a time slot on Friday. If Friday slots are full and you already know you want to use your extension send me a DM and we’ll work something out. Keep in mind that all assignments must be submitted by the end of the finals week. You may not use your extensions to submit beyond the end of the official finals week period.
- Students who demo on Friday 4/22 must still submit all code by Thursday 4/21 at 1pm. If you are not finished on Thursday you must use one of your extensions.
- You may meet via Zoom with Sami or Nikhil, or in person with Sami. Zoom sessions take place in the class Zoom, and in-person sessions take place in Harney 404.
- There will not be a formal class meeting on the demonstration day. Watch for announcements about an exercise that you will be expected to complete during the class period.
Grading Script
It is extremely important that you arrive on time to your demo session and that you are completely ready to begin your demonstration at your start time. This means that you should have your terminal windows open and logged in to the hosts where you will demonstrate your solution. You should have the appropriate commands ready to execute so that all you must do when you start your session is hit enter to start the first part of the demonstration.
During your interactive grading session, you are expected to demonstrate at least the following functionality. You are welcome and encouraged to go beyond what is described.
- Membership: The rubric requires that you demonstrate the following features of your membership implementation.
- Demonstration includes at least five instances of the
Broker
.
- Heartbeat messages are sent periodically among all members.
- Failure of a follower is correctly detected. The follower is removed from the membership list.
- Replication: The rubric requires that you demonstrate the following features of your membership implementation.
- Synchronous updates are sent from the leader to all followers.
- Solution correctly handles the join of a new follower after at least one
Producer
has issued writes (i.e., the new follower must catch up to the current version of the database).
- Demonstration includes a case where a follower fails during replication (i.e., the updates go to some followers but not all).
- Election: The rubric requires that you demonstrate the following features of your membership implementation.
- When a leader fails, the election algorithm correctly selects a new leader.
- Demonstration includes a case where a new leader is elected but a follower has more up-to-date data.
- Demonstration includes a case where multiple followers execute the election algorithm concurrently.
- When a new leader is elected, all program components are updated with the new leader. Demonstration must include a case where there are at least two active
Producer
and two active Consumer
when a new leader is elected.
- Hints and Suggestions: It is not required that you use exactly this approach, but if you do not your approach must clearly demonstrate all elements described above.
- Consider demonstrating 1 a-c and 3 a, c first.
- Launch a
Broker
and demonstrate via logs that it is the leader.
- Bring four additional
Broker
instances online one at a time. As each joins, demonstrate via logs that the other Broker
instances add the new host to the membership table and begin gossiping with that host.
- Force quit the leader. Demonstrate that a new leader is elected. Make sure that you have thorough logging that shows the election process, and cross your fingers that you can demonstrate 3-c 😃
- Demonstrate 2 a-c next.
- Bring three
Broker
instances online.
- Bring a
Producer
online. You may wish to modify your Producer
such that its publishing may be controlled from the command line, i.e., when you hit enter it will send another message. This will allow you to show the functionality one step at a time.
- Publish several messages.
- Bring another
Broker
instance online. Demonstrate via logs that it is able to catch up to the current data version during the join procedure.
- Publish several messages.
- Bring another
Broker
instance online. Demonstrate via logs that it is able to catch up to the current data version during the join procedure.
- Publish a message and demonstrate 2c. This may require that you explicitly add some delay in the propagation of the update to the follower that you will force quit.
- Demonstrate 3-b next. How do you do this will depend on your implementation. Logs should demonstrate that once a new leader is elected the hosts coordinate to bring all nodes up to the most recent version.
- Demonstrate 3-d with a full execution of the program. Bring up five
Broker
instances, two Producer
instances, and two Consumer
instances. Begin publishing messages at a normal speed. Force quit a follower and demonstrate that the program continues as expected. Force quit the leader and demonstrate that a new leader is elected and the program continues as expected. Force quit the new leader and demonstrate that the program continues as expected.
- Demonstrate the Additional Opportunity features. The specific demonstration will be based upon the features chosen. It is recommended that you either come to office hour or send me a demonstration proposal for any of the features you have implemented. I will provide you with feedback about whether your proposed demo will clearly demonstrate the feature.