Scalable Distributed Systems Project #3Java

CodeCourse: Scalable Distributed Systems

Project #3 Multi-threaded Key-Value Store using RPC

Assignment Overview

For this project, you will extend Project #2 in two distinct ways.

1) Replicate your Key-Value Store Server across 5 distinct servers. In project #2, you used a

single instance of a Key-Value Store server. Now, to increase Server bandwidth and ensure availability, you need to replicate your key-value store at each of 5 different instances of your servers. Note that your client code should not have to change radically, only in that your clients should be able to contact any of the five KV replica servers instead of a single server and get consistent data back from any of the replicas (in the case of GETs). Your client should also be able to issue PUT operations and DELETE operations to any of the five replicas .

2) On PUT or DELETE operations you need to ensure each of the replicated KV stores at each replica is consistent. To do this, you need to implement a two-phase protocol for updates. We will assume no servers will fail such that 2 Phase Commit will not stall, although you may want to defensively code your 2PC protocol with timeouts to be sure. Consequently, whenever a client issues a PUT or a DELETE to *any* server replica, that receiving replica will ensure the updates have been received (via ACKs) and committed (via Go messages with accompanying ACKs) .

As in project #1, you should use your client to pre-populate the Key-Value store with data and a set of keys. The composition of the data is up to you in terms of what you want to store there.

Once the key-value store is populated, your client must do at least five of each operation: 5 PUTs, 5 GETs, 5 DELETEs .

Your implementation may be written in Java. Your source code should be well-factored and well- commented. That means you should comment your code and appropriately split the project into    multiple functions and/or classes; for example, you might have a helper function/class to&ndai 写Scalable Distributed Systems Project #3Java bsp;encode/ decode UDP packets for your protocol, or you might share some logic between this part of the assignment and the TCP client/server in the next part.

Evaluation

Your newly replicated (with consistency via 2PC) multi-threaded Key-Value Store servers will be evaluated on how well they interoperate with each other using RPC while doing concurrent operations on the UWT-provided “cluster” as well as their conformance to the requirements above.

Note: Please ignore the phrase of the UWT-provided “cluster” . You don’t need to implement this on a real cloud cluster.

Executive Summary

Part of your completed assignment submission should be an executive summary containing an “Assignment overview” (1 paragraph, up to about 250 words) explaining what you understand to be the purpose and scope of the assignment and a “technical impression” (1–2 paragraphs, about  200–500 words) describing your experiences while carrying out the assignment. The assignment  overview shows how well you understand the assignment; the technical impression section helps to determine what parts of the assignment need clarification, improvement, etc ., for the future .

Evaluation

The grade for your executive summary is based on the effort you put into the assignment overview and technical impression. In general, if you put some effort into your writing, you will receive full credit for your executive summary (provided that it is properly formatted and submitted as a plain text file) .

Project Deliverables

The following items should be archived together, e.g., placed in a .zip file or tarball file (*.tgz or * .tar.gz), and electronically submitted via the link is provided on the course Moodle page.

1. All novel Java source code files implementing the two client and two server programs, i.e ., plus any additional support code.

2. Your executive summary.

Project 3 Q&A

Q1. Server failure: Since the project doc says "We will assume no servers will fail such that 2 Phase Commit will not stall", do the servers need to be able to recover from crashes using a log in persistent storage? Or do we just assume that all the 5 servers are always available?

A: 5 servers are always available and would never failJava or Java Python C++        WX:codehelp

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实时系统是指在严格的时间限制下,对输入数据进行处理并及时产生输出响应的系统。在实时系统中,一个重要的因素是系统的架构设计,而对于实时系统的架构设计来说,一个关键的考虑因素是其鲁棒性和可扩展性。 所谓鲁棒性,是指系统能够应对各种异常情况和外部干扰而保持正常工作的能力。在实时系统中,鲁棒的架构可以通过多种方式实现,例如使用冗余设计和错误处理机制。冗余设计可以通过多个处理器或模块的冗余部署来提高系统的容错能力,以便在一个处理器或模块发生故障时,系统依然能够正常工作。而错误处理机制可以包括错误检测和错误恢复两个方面,以保证系统对错误的及时发现和恢复能力。 可扩展性是指系统能够根据实际需求进行灵活的扩展和升级的能力。对于实时系统来说,可扩展的架构可以基于不同的需求进行模块的添加或替换,以满足不同规模和性能要求的系统。例如,当实时系统的负载增加时,可以通过增加处理器数量或增加存储容量来扩展系统的性能。 对于实时系统的架构设计,一个常用的方法是采用分布式架构。在分布式架构中,系统的不同功能模块可以分布在不同的节点上,通过通信和协作来完成任务。这种设计能够充分利用分布式计算和通信的特点,提高系统的并行度和可靠性。 综上所述,Robust scalable architecture for real-time systems(实时系统的强韧可扩展架构)PDF提供了一种鲁棒性和可扩展性的实时系统架构设计方案。该架构通过冗余设计和错误处理机制实现系统的鲁棒性,同时采用分布式架构实现系统的可扩展性。这样的架构设计能够有效应对实时系统中的异常情况和外部干扰,并能够根据实际需求灵活扩展系统的性能和规模。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值