, , ,

[SOLVED] Cloud computing – 云计算lab4

$25

File Name: Cloud_computing_________________________lab4.zip
File Size: 414.48 KB

5/5 - (1 vote)

1. Overview
在 Lab 2 ä¸ï¼Œæˆ‘们完æˆäº†ä¸€ä¸ªç®€åŒ–çš„ HTTP/1.1 Web æœåŠ¡å™¨ï¼› 在 Lab 3 ä¸ï¼Œæˆ‘们完æˆäº†ä¸€ä¸ªç®€åŒ–çš„ 分布å¼æ•°æ®åº“系统。 现在让我们å°è¯•å°†ä¸¤è€…组åˆå¹¶å®Œå–„,构建一个高性能的分布å¼é€‰è¯¾ç³»ç»Ÿã€‚ æˆ‘ä»¬çš„ç›®æ ‡ï¼š
è¿ç”¨è¯¾ç¨‹çŸ¥è¯†ä¸Žè¿‡åŽ»çš„实验项目,构建一个分布å¼é€‰è¯¾ç³»ç»Ÿ å¦ä¹ 如何æ高一个系统的å¥å£®æ€§å’Œå¯æ‰©å±•æ€§ï¼Œå°½å¯èƒ½æå‡å…¶æ€§èƒ½
注æ„ï¼šå¦‚æžœä½ é€‰æ‹©å®Œæˆ Lab 4,那么将ä¸å†éœ€è¦å®Œæˆ Lab 3ï¼Œå› ä¸º Lab 4 å·²ç»æ¶µç›–了 Lab 3 çš„è¦æ±‚,其ä¸æ•°æ®åº“æ–¹é¢çš„è¦æ±‚,请查看Lab3ï¼Œæˆ‘ä»¬ä¼šæ ¹æ®ä½ çš„ Lab 4 完æˆæƒ…况对 Lab 3 进行打分。

2. Background
ä½ æ‰€éœ€è¦çš„有关 Http Server 与 Distributed Database 的基础知识都在过去的实验ä¸ï¼Œå¦‚æžœä½ å¿˜è®°äº†æˆ–è€… 想è¦å¤ä¹ ,å¯ä»¥é‡æ–°æŸ¥çœ‹Â Lab 2 和 Lab 。 Dividing databases
éšç€è¿‘些年信æ¯åŒ–大å‘展,越æ¥è¶Šå¤šçš„æ•°æ®å˜å…¥äº†æ•°æ®åº“ä¸ï¼Œè€Œç‰©ç†æœåŠ¡å™¨çš„CPUã€å†…å˜ã€å˜å‚¨ã€è¿žæŽ¥æ•°ç‰èµ„æºæ˜¯æœ‰é™çš„,æŸä¸ªæ—¶æ®µå¤§é‡è¿žæŽ¥åŒæ—¶æ‰§è¡Œæ“ä½œï¼Œä¼šå¯¼è‡ ´æ•°æ®åº“在处ç†ä¸Šé‡åˆ°æ€§èƒ½ç“¶é¢ˆã€‚为了解决这个问题,行业先驱门充
分å‘扬了分而治之的æ€æƒ³ï¼Œå¯¹å¤§è¡¨è¿›è¡Œåˆ†å‰²ï¼Œç„¶åŽå®žæ–½æ›´å¥½çš„控制和管ç†ï¼ŒåŒæ—
¶ä½¿ç”¨å¤šå°æœºå™¨çš„CPUã€å†…å˜ã€å˜å‚¨ï¼Œæ供更好的性能。
å…¶ä¸ä¸€ç§ç®€å•çš„逻辑分割是垂直分库。比如我们的数æ®åº“ä¸‐
有商å“表Productsã€è¿˜æœ‰å¯¹è®¢å•è¡¨Orders,还有积分表Scores。接下æ¥æˆ‘们就å¯ä»¥åˆ›å»ºä¸‰ä¸ªæ•°æ®åº“,一个数æ®åº“å‐
˜æ”¾å•†å“,一个数æ®åº“å˜æ”¾è®¢å•ï¼Œä¸€ä¸ªæ•°æ®åº“å˜æ”¾ç§¯åˆ†ã€‚如下图所示:

è¿™æ ·åšæœ‰ä»¥ä¸‹å‡ 个优点:
è·Ÿéšä¸šåŠ¡è¿›è¡Œåˆ†å‰²ï¼Œå’Œæœ€è¿‘æµè¡Œçš„å¾®æœåŠ¡æ¦‚念相似,方便解耦之åŽçš„管ç†åŠæ‰©å±•ã€‚ 高并å‘的场景下,垂直拆分使用多å°æœåŠ¡å™¨çš„CPUã€I/Oã€å†…å˜èƒ½æå‡æ€§èƒ½ï¼ŒåŒæ—
¶å¯¹å•æœºæ•°æ®åº“连接数ã€ä¸€äº›èµ„æºé™åˆ¶ä¹Ÿå¾—到了æå‡ã€‚ 能实现冷çƒæ•°æ®çš„分离。
当然,分库分表在实际应用ä¸æ˜¯ä¸€ä¸ªå分å¤æ‚的设计,在低并å‘的应用程åºä¸‐
,分库分表的效果并ä¸æ˜Žæ˜¾ï¼Œå› æ¤éœ€è¦æ ¹æ®ä¸šåŠ¡éœ€æ±‚,并å‘承载能力ç‰ç»¼åˆè€ƒè™‘。为了简化 这一过程,在实验ä¸ï¼Œæˆ‘们仅è¦æ±‚对数æ®è¿›è¡Œåž‚直分库,å³å°†è¯¾ç¨‹æ•°æ®å’Œå¦ç”Ÿä¿¡æ¯åˆ†åˆ«å˜å‚¨åˆ°ä¸åŒçš„节点ä¸ï¼Œä»¥æ¤æ¥å®žçŽ°è¯¾ç¨‹æ•°æ®è®¿é—®å’Œå¦ç”Ÿä¿¡æ¯è®¿é—®äº’ä¸å½±å“的效果。 Load Balancing
负载平衡(英è¯ï¼šload balancing)是一ç§ç”µå计算机技术,用æ¥åœ¨å¤šä¸ªè®¡ç®—机(计算
机集群)ã€ç½‘络连接ã€CPUã€ç£ç›˜é©±åŠ¨å™¨æˆ–其他资æºä¸åˆ†é…负载,以达到优化资æºä½¿ç”¨ã€æœ€å¤§åŒ– åžå率ã€æœ€å°åŒ–å“应时间ã€åŒæ—¶é¿å…过载的目的。 使用带有负载平衡的多个æœåŠ¡å™¨ç»„ä»¶ï¼Œå– ä»£å•ä¸€çš„组件,å¯ä»¥é€šè¿‡å†—ä½™æ高å¯é 性。负载平衡æœåŠ¡é€šå¸¸æ˜¯ç”±ä¸“用软件和硬件æ¥å®Œæˆã€‚
主è¦ä½œç”¨æ˜¯å°†å¤§é‡ä½œä¸šåˆç†åœ°åˆ†æ‘Šåˆ°å¤šä¸ªæ“作å•å…ƒä¸Šè¿›è¡Œæ‰§è¡Œï¼Œç”¨äºŽè§£å†³äº’è”网架构ä¸çš„高并å‘和高å¯ç”¨çš„é
—®é¢˜ã€‚
è´Ÿè½½å‡è¡¡æœ€é‡è¦çš„一个应用是利用多å°æœåŠ¡å™¨æä¾›å•ä¸€æœåŠ¡ï¼Œå¯¹äºŽäº’è”网æœåŠ¡ï¼Œè
´Ÿè½½å¹³è¡¡å™¨é€šå¸¸æ˜¯ä¸€ä¸ªè½¯ä»¶ç¨‹åºï¼Œè¿™ä¸ªç¨‹åºä¾¦å¬ä¸€ä¸ªå¤–部端å£ï¼Œäº’è”网用户å¯ä»¥é€šè¿‡è¿™ä¸ªç«¯å£æ¥è®¿é—
®æœåŠ¡ï¼Œè€Œä½œä¸ºè´Ÿè½½å¹³è¡¡å™¨çš„软件会将用户的请求转å‘ç»™åŽå°å†…网æœåŠ¡å™¨ï¼Œå†…
网æœåŠ¡å™¨å°†è¯·æ±‚çš„å“应返回给负载平衡器,负载平衡器å†å°†å“应å‘é€åˆ°ç”¨æˆ·ï¼Œè¿™æ ·å°±å‘互è”网用户éšè—了内 网结构,阻æ¢äº†ç”¨æˆ·ç›´æŽ¥è®¿é—®åŽå°ï¼ˆå†…网)æœåŠ¡å™¨ï¼Œä½¿å¾—æœåŠ¡å™¨æ›´åŠ 安全,å¯ä»¥é˜»æ‐
¢å¯¹æ ¸å¿ƒç½‘ç»œæ ˆå’Œè¿è¡Œåœ¨å…¶å®ƒç«¯å£æœåŠ¡çš„攻击。
当所有åŽå°æœåŠ¡å™¨å‡ºçŽ°æ•…障时,有些负载平衡器会æ供一些特殊的功能æ¥å¤„ç†è¿™ç§æƒ… 况。例如转å‘请求到一个备用的负载平衡器ã€æ˜¾ç¤ºä¸€æ¡å…³äºŽæœåŠ¡ä¸æ–的消æ¯ç‰ã€‚负载平衡器使得 IT团队å¯ä»¥æ˜¾è‘—æ高容错能力。它å¯ä»¥è‡ªåŠ¨æ供大é‡çš„容é‡ä»¥å¤„ç†ä»»ä½•åº”用程åºæµé‡çš„å¢žåŠ æˆ–å‡å°‘。 为了更好的实现负载å‡è¡¡å™¨ï¼Œä½ å¯èƒ½éœ€è¦é€‰æ‹©ä¸€ç§æˆ–å‡ ç§åˆé€‚的调度算法。
Basic Version

在 basic 版本ä¸ï¼Œä½ åªéœ€è¦è¿è¡Œä¸€ä¸ª Web æœåŠ¡å™¨ï¼Œä¸Žå…¶ç›¸è¿žçš„是多个å˜å‚¨å™¨é›†ç¾¤ã€‚ 对于WebæœåŠ¡å™¨ï¼Œæˆ‘们è¦æ±‚:支æŒé«˜å¹¶å‘,å¯ä»¥åŒæ—¶å“应多个客户端å‘é€çš„请求。 对于å˜å‚¨å™¨é›†ç¾¤ï¼Œæˆ‘们è¦æ±‚:集群数é‡ä¸å°äºŽ2,å•ä¸ªé›†ç¾¤ä¹‹é—´çš„通信å¯ä»¥ä½¿ç”¨ 2PC 或 RAFT å议实现。
当å˜å‚¨å™¨é›†ç¾¤æ•°é‡å¢žå¤šæ—¶ï¼Œä½ å¯ä»¥å¯¹å˜å‚¨çš„æ•°æ®è¿›è¡Œåˆ†åº“å˜å‚¨ï¼Œå¦‚课程ä¸çš„æ•°æ®å¯ä»¥å˜å‚¨åœ¨ Cluster 1 ä¸ï¼Œè€Œå¦ç”Ÿä¸ªäººä¿¡æ¯ç›¸å…³çš„æ•°æ®å¯ä»¥å˜å‚¨åœ¨ Cluster 2 ä¸ã€‚ Advanced Version

在advance版本ä¸ï¼Œä½ 需è¦è¿è¡Œä¸€ä¸ªè´Ÿè½½å‡è¡¡å™¨ï¼Œå¤šä¸ªWebæœåŠ¡å™¨ä»¥åŠå¤šä¸ªå˜å‚¨å™¨é›†ç¾¤ã€‚
对于负载å‡è¡¡å™¨ï¼Œæˆ‘们è¦æ±‚:支æŒé«˜å¹¶å‘,能够动æ€åœ°é€‰æ‹©æ
´»è·ƒå¹¶ä¸”å¯ç”¨çš„WebæœåŠ¡å™¨ï¼Œå°†è¯·æ±‚å‘é€è‡³ç›¸åº”节点进行处ç†ã€‚ 对于WebæœåŠ¡å™¨å’Œå˜å‚¨å™¨é›†ç¾¤ï¼Œæˆ‘们è¦æ±‚ç‰åŒäºŽBasic版本。
4. Standardized Format
为了更好的进行测试与评阅,我们将对实验过程ä¸çš„一些数æ®æ ¼å¼è¿›è¡Œæ ‡å‡†è§„定,请确ä¿ä½ 实现的最终系统在这些对外接å£ä¸Šæ˜¯æˆ‘ä»¬çš„æ ‡å‡†ä¸€è‡´çš„ã€‚
在请求体和å“应体ä¸ï¼Œæˆ‘们采用JSONæ ¼å¼è¿›è¡Œé€šä¿¡ã€‚è¯·æ±‚ä½“æ ¹æ®è¯·æ±‚内容决定,而å“应体包 å«äº†ç‰¹å®šçš„æ•°æ®ç»“构,分别为code,dataå’Œmsg。其ä¸code表示状æ€ç ,200为æ£å¸¸å“应,其他 为错误å“应,å¯ä»¥æ ¹æ®å®žé™…情况返回ä¸åŒçš„éžé›¶å€¼ã€‚data表示å“应对象,里é¢åŒ…å«å“应结果,错误情 况下为空。msg表示å“应消æ¯ï¼Œæ£å¸¸æƒ…况下一般为okï¼Œé”™è¯¯æƒ…å†µä¸‹æ ¹æ®å®žé™…值返回错误消æ¯ã€‚
除了特定的 api 之外,Web æœåŠ¡å™¨ä»éœ€è¦æ”¯æŒé™æ€æ–‡ä»¶è®¿é—®ç‰åŸºæœ¬åŠŸèƒ½ï¼ˆå¦‚支æŒæ˜¾ç¤º html 页é¢ï¼Œéžæ³• path 返回 404 页é¢ç‰ï¼‰ï¼Œåœ¨æ¤ç•¥åŽ»ä»‹ç»ï¼Œå…·ä½“ä¿¡æ¯å¯å‚考 Lab 2。
我们对 api 的设计进行了éžå¸¸å¤šçš„简化,现实ä¸å°†ä¼šè¿œæ¯”它们å¤æ‚ï¼Œä½ å¯ä»¥ä½¿ç”¨è¦æ±‚以外的 path æ‰©å±•ä½ çš„ç³»ç»Ÿï¼Œå¦‚ï¼šä½ å¯ä»¥è‡ªè¡Œè®¾è®¡æŠ¥é”™ä¿¡æ¯ã€‚
4.1 Web Server
一个完整的选课系统需è¦åŒ…å«ä¼—多功能,为了é™ä½Žå¤æ‚性,我们将其抽象为查询课程,选ä¸è¯¾ç¨‹å’Œé€€é€‰è¯¾ç¨‹è¿™å‡ 个模å—。
1. /api/search/course
介ç»ï¼šä¸»è¦ç”¨äºŽæŸ¥è¯¢è¯¾ç¨‹ä¿¡æ¯ï¼Œç›¸å…³çš„å‚数使用 query æºå¸¦ï¼ŒæŸ¥è¯¢åŽç»™å‡ºçš„æ•°æ®è‡³å°‘需è¦åŒ… å«è¯¾ç¨‹çš„ ç¼–å·ï¼Œå称,容é‡å’Œå·²é€‰äººæ•°ã€‚ 方法:GET
å‚数:id=[course_id] 课程编å·ä»…由 [a-zA-Z0-9]组æˆï¼Œä¸å«æœ‰ç‰¹æ®Šå—符。 å“应体:
json { “code”: 200, “data”: { “id”: course_id, // 课程id “name”: course_name , // 课程 “capacity”: capacity , // è¯¾ç¨‹å®¹é‡ “selected”: selected // 已选人数 }, “msg”: “ok” }
1. /api/search/all
介ç»ï¼šä¸ŽæŸ¥è¯¢å•ä¸ªè¯¾ç¨‹ç±»ä¼¼ï¼Œä½†å…¶Â dataå—段的值从å•ä¸ªè¯¾ç¨‹ä¿¡æ¯å˜ä¸ºäº†åŒ… å«æ‰€æœ‰è¯¾ç¨‹ä¿¡æ¯çš„数组。 方法:GET
å“应体:
json { “code”: 200, “data”: [{ “id”: course_id, // 课程id “name”: course_name , // 课程 “capacity”: capacity
, // è¯¾ç¨‹å®¹é‡ “selected”: selected // 已选人数 },{ “id”: course_id, “name”: course_name , // 课程 “capacity”: capacity , // è¯¾ç¨‹å®¹é‡ “selected”: selected // 已选人数 }, … ], “msg”: “ok” }
1. /api/search/student 介ç»ï¼šä¸»è¦ç”¨äºŽæŸ¥è¯¢å¦ç”Ÿæ‰€é€‰è¯¾ç¨‹ä¿¡æ¯ï¼Œç›¸å…³çš„å‚数使用 query æºå¸¦ 方法:GET
å‚数:stuid=[student_id] å¦ç”Ÿå¦å·ä»…由 [a-zA-Z0-9]组æˆï¼Œä¸å«æœ‰ç‰¹æ®Šå—符。 å“应体:
json { “code”: 200, “data”: { “stuid”: student_id, // å¦å· “name”: student_name , // å¦ç”Ÿå§“å “course”: [{ // å‐
¦ç”Ÿé€‰çš„课程数组 “id”: course_id, “name”: course_name , // 课程 },{ “id”: course_id, “name”: course_name
, // 课程 }, … ] }, “msg”: “ok” } 如果å¦ç”Ÿæœªé€‰è¯¾ç¨‹ï¼ŒÂ data.course = []å³å¯ã€‚
1. /api/choose 介ç»ï¼šä¸»è¦ç”¨äºŽè¿›è¡Œé€‰è¯¾æ“作,相关的å‚数使用 http request bodyæºå¸¦ 方法:POST 请求体: json { “stuid”: student_id, // å¦ç”Ÿå¦å· “course_id”: course_id // è¯¾ç¨‹ç¼–å· } 当需è¦è¿›è¡Œé€‰è¯¾æ“作时,payloadÂ åº”è‡³å°‘åŒ…å« å¦ç”Ÿå¦å·ï¼Œè¯¾ç¨‹ç¼–å·ã€‚ å“应体: json { “code”: 200, “data”: [], “msg”: “ok” } 对于 payload æ ¼å¼æˆ–æ•°æ®éžæ³•ï¼Œæ— 法查询到相关信æ¯ï¼Œè¯¾ç¨‹å·²æ»¡ ç‰é”™è¯¯æƒ… 况,返回包å«é”™è¯¯ä¿¡æ¯çš„ JSON 对象å³å¯ã€‚
1. /api/drop 介ç»ï¼šä¸»è¦ç”¨äºŽè¿›è¡Œé€€é€‰æ“作,相关的å‚数使用 http request bodyæºå¸¦ 方法:POST 请求体: json { “stuid”: student_id, // å¦ç”Ÿå¦å· “course_id”: course_id // è¯¾ç¨‹ç¼–å· } 当需è¦è¿›è¡Œé€‰è¯¾æ“作时,payloadÂ åº”è‡³å°‘åŒ…å« å¦ç”Ÿå¦å·ï¼Œè¯¾ç¨‹ç¼–å·ã€‚ å“应体: json { “code”: 200, “data”: [], “msg”: “ok” } 对于 payload æ ¼å¼æˆ–æ•°æ®éžæ³•ï¼Œæ— 法查询到相关信æ¯ï¼Œè¯¥å¦ç”Ÿæ²¡æœ‰é€‰æ‹©è¿™é—¨è¯¾ç‰é”™è¯¯æƒ…况,返回包å«é”™è¯¯ä¿¡æ¯çš„ JSON 对象å³å¯ã€‚
4.2 Store Server
Command Lines Arguments
由于我们系统使用了默认数æ®ï¼Œæ‰€ä»¥ä½ çš„å˜å‚¨å™¨åº”该在å¯åŠ¨æ—¶ï¼Œå¯¹è¿™äº›æ•°æ®è¿›è¡Œè¯»å–。 默认数æ®å¯ä»¥åœ¨Â data/ 文件夹ä¸æ‰¾åˆ°ã€‚ 其余说明请å‚考 Lab 3。 Database Tables
æ•°æ®åº“çš„åŸºç¡€æ ¼å¼æ˜¯å…³ç³»åž‹æ•°æ®åº“ï¼Œä½ ä¹Ÿå¯ä»¥æ ¹æ®éœ€è¦å¢žæ·»ä¿®æ”¹æ•°æ®çš„类型,也å¯ä»¥é€‰æ‹©è®¾è®¡æ– °ç±»åž‹çš„æ•°æ®åº“,但必须ä¿è¯é€šè¿‡æ•°æ®åº“å¯ä»¥æ£å¸¸å®Œæˆéœ€è¦çš„功能。 默认数æ®å¯ä»¥åœ¨Â data/ 文件夹ä¸æ‰¾åˆ°ã€‚
Course
| id(key) – string | name – string | capacity – int | selected – int | | — | — | — | — | | “CS06142” | “云计算技术” | 120 | 120 |
Student
| id(key) – string | name – string | | — | — | | “211926010111” | “å¼ ä¸‰” |
Course Selection
| Course id – string | Student id – string | | — | — | | “CS06142” | “211926010111” |
Commands
æ£å¸¸æƒ…况下,用户访问数æ®ä»…通过å‰ç«¯çš„ HTTP Web æœåŠ¡å™¨ï¼Œè€Œæ•°æ®æŸ¥è¯¢ç”± Web æœåŠ¡å™¨ä¸Žæ•°æ®åº“集群进行交互。 以下给出的数æ®åº“命令仅供å‚è€ƒï¼Œä½ å¯ä»¥é€‰æ‹©è‡ªå·±å®žçŽ°ä¸€ä¸ªæ»¡è¶³ç›¸åŒåŸºæœ¬åŠŸèƒ½çš„命令集。 Check Courses Capacity
å‘é€Â GET Course [course id], e.g., GET Course CS06142ï¼› 返回 [course id] [course name] [course capacity] [selected number], e.g., CS06142 云计算技术 120 120 特别的,å¯ä»¥ä¸€æ¬¡æŸ¥è¯¢æ‰€æœ‰çš„课程最大容é‡ä¿¡æ¯:
å‘é€Â GET Course all, e.g., GET Course allï¼›
返回 多行 [course id] [course name] [course capacity] [selected number], e.g., CS04008 计算机网络 90 80 CS06142 云计算技术 120 120。
Check Student Selected Courses å‘é€Â GET Student Courses [student id], e.g., GET Student Courses 211926010111ï¼› 返回 多行 [course id] [course name], e.g., CS04008 计算机网络 CS06142 云计算技术。 Choose a Course
å‘é€Â ADD Student Course [student id] [course id], e.g., ADD Student Course 211926010111 CS06142ï¼› 如果æˆåŠŸï¼Œè¿”回 +OK; 如果失败,返回 -ERROR。 Drop a Course
å‘é€Â DEL Student Course [student id] [course id], e.g., DEL Student Course 211926010111 CS06142ï¼› 如果æˆåŠŸï¼Œè¿”回 +OK; 如果失败,返回 -ERROR。
4.3 Load Balancer
为了更好地统一测试,我们需è¦ä½ çš„è´Ÿè½½å‡è¡¡å™¨é‡‡ç”¨æ ‡å‡†çš„é…ç½®æ–
‡ä»¶å¯åŠ¨ï¼Œä¾‹å¦‚ï¼Œä½ å¯ä»¥è¿™æ ·å°†æ‰€æœ‰çš„WebæœåŠ¡çš„地å€å’Œç«¯å£ä¼ 给负载å‡è¡¡å™¨ï¼Œç”±è ´Ÿè½½å‡è¡¡å™¨åŠ¨æ€çš„转å‘请求到这些WebæœåŠ¡ä¸Šï¼š
“`
web_servers.conf æ¯ä¸€è¡Œéƒ½æ˜¯ä¸€ä¸ªå†… 部webæœåŠ¡è¿›ç¨‹çš„监å¬åœ°å€å’Œç«¯å£
127.0.0.1 8081 127.0.0.1 8082 127.0.0.1 8083 127.0.0.1 8084 “`
5. Test
默认情况下,我们将在 Linux Ubuntu 20.04 x64 æœåŠ¡å™¨è¿›è¡Œæµ‹è¯•ã€‚ 我们预期的测试和评分项目有:
API功能实现:上述æ¯ä¸ªAPIå‡ä¸º1分(5分)
å˜å‚¨èŠ‚点容ç¾æµ‹è¯•ï¼šéšæœºç»ˆæ¢å˜å‚¨èŠ‚点æœåŠ¡ï¼ŒæŽ¥å£è¿è¡Œæƒ…况(3分)
è´Ÿè½½å‡è¡¡å®žçŽ°ï¼šé€šè¿‡è´Ÿè½½å‡è¡¡å™¨å¯¹å¤–æ供接å£æœåŠ¡ï¼Œå¹¶ä¸”WebæœåŠ¡èƒ½å¤Ÿå®¹ç¾ï¼ˆ1分) 性能测试:在高并å‘下ã€åŠ¨æ€åˆ‡æ¢çš„æƒ…å†µä¸‹ï¼Œç³»ç»Ÿçš„æ‰¿è½½èƒ½åŠ›ï¼Œæ ¹æ®æ‰€æœ‰å°ç»„的测试情 况进行内部评比得分(1分) ä¸ºäº†æ ‡å‡†åŒ–æµ‹è¯•ï¼Œä½ çš„ç³»ç»Ÿåœ¨è¿è¡Œä¸Šï¼Œéœ€è¦æ»¡è¶³ä¸€ä¸‹æ¡ä»¶ï¼š
1. 注æ„文件结构,ä¸åŒæ¨¡å—æºä»£ç 处于ä¸åŒæ–‡ä»¶å¤¹ä¸ï¼ˆæˆ‘ä»¬ä¼šæ£€æŸ¥ä½ çš„æºä»£ç )
2. é¡¹ç›®çš„æ ¹ç›®å½•ä¸‹å¯ä»¥ä½¿ç”¨Â make 命令直接编译所有模å—
3. å¯æ‰§è¡Œæ–‡ä»¶åˆ†ä¸º Web æœåŠ¡å™¨ å’Œ å˜å‚¨å™¨é›†ç¾¤ä¸¤ä¸ªéƒ¨åˆ†ï¼Œå…¶ä¸
Web æœåŠ¡å™¨å¯æ‰§è¡Œæ–‡ä»¶ä¸ºÂ web-server,支æŒÂ -ip, -port, -config_path ç‰å‘½ä»¤è¡Œå‚数,例如./web-
server –ip 127.0.0.1 –port 8080 –config_path ./conf/store_servers.conf å˜å‚¨å™¨ å¯æ‰§è¡Œæ–‡ä»¶ä¸ºÂ store-server,支æŒÂ -config_path ç‰å‘½ä»¤è¡Œå‚数,并使用é…ç½®æ–
‡ä»¶Â coordinator.conf 或 participant.conf 进行é…置,具体细节请查看Lab3。测试ä¸ï¼Œæ¯ä¸ªé›†ç¾¤çš„å˜å‚¨æœåŠ¡å™¨æ•°é‡ä¸º 4,2pcå’Œraft任选一ç§å®žçŽ°ï¼Œä¾‹å¦‚:
“`
å¯åŠ¨å˜å‚¨æœåŠ¡å™¨é›†ç¾¤1(该集群主è¦å˜å‚¨ å¦ç”Ÿ-选课 æ•°æ®ï¼‰ – 2pc
$ ./store-server –config_path ./conf/coordinator1.conf $ ./store-server –config_path ./conf/participant101.conf $ ./store-server –config_path
./conf/participant102.conf $ ./store-server –config_path ./conf/participant103.conf
å¯åŠ¨å˜å‚¨æœåŠ¡å™¨é›†ç¾¤2(该集群主è¦å˜å‚¨ 课程选课人数 æ•°æ®ï¼‰ – raft
$ ./store-server –config_path ./conf/store201.conf $ ./store-server –config_path ./conf/store202.conf $ ./store-server –config_path ./conf/store203.conf $
./store-server –config_path ./conf/store204.conf “`
å¦‚æžœä½ å®žçŽ°äº†Â Load Balancer,其å¯æ‰§è¡Œæ–‡ä»¶è¯·å‘½å为 load-balancer,支æŒÂ -ip –port -web_config_path -store_config_path  ç‰å‘½ä»¤è¡Œå‚数。例如
“`
å¯åŠ¨è´Ÿè½½å‡è¡¡å™¨
$ ./load-balancer –ip 127.0.0.1 –port 8080 –store_config_path ./conf/store_servers.conf –web_config_path ./conf/web_servers.conf
å¯åŠ¨webæœåŠ¡å™¨é›†ç¾¤
$ ./web-server01 –ip 127.0.0.1 –port 8081 –config_path ./conf/store_servers.conf $ ./web-server02 –ip 127.0.0.1 –port 8082 –config_path
./conf/store_servers.conf $ ./web-server02 –ip 127.0.0.1 –port 8083 –config_path ./conf/store_servers.conf $ ./web-server02 –ip 127.0.0.1 –port 8084
–config_path ./conf/store_servers.conf “` å¯æ‰§è¡Œæ–‡ä»¶ä¸Žé…置文件的è¦æ±‚å¯ä»¥å‚考 Lab2, Lab 3。
4.æ¯æ¬¡è¿è¡Œç³»ç»Ÿï¼Œéƒ½å°†å…ˆå¯åŠ¨å¤šä¸ªå˜å‚¨å™¨é›†ç¾¤ä¸çš„æ¯ä¸ªå˜å‚¨æœåŠ¡å™¨ï¼ŒéšåŽå¯åŠ¨å¤šä¸ª Web æœåŠ¡å™¨ï¼Œæœ€åŽå†å¯åŠ¨ Load Balancer(如果需è¦ï¼‰ï¼Œè¯·ä¿è¯æ¯ä¸ªå¯æ‰§è¡Œæ–‡ä»¶éƒ½èƒ½æ£å¸¸è¿è¡Œã€‚ 类似之å‰çš„实验,我们æ供了测试程åºï¼Œè¯·ä»”细阅读 Lab 4 实验文档和测试程åºæ–‡æ¡£åŽä½¿ç”¨ã€‚

6. Lab submission
å°†ä½ çš„ä»£ç æ交到 /Lab4/ 文件夹,并编写 Makefile 确ä¿å¯ä»¥ç›´æŽ¥ä½¿ç”¨Â make 命令编 译所有需è¦çš„å¯æ‰§è¡Œæ–‡ä»¶ã€‚
考虑到 Lab 4 实现完整系统较为å¤æ‚,验收å¯èƒ½ä¼šå˜åœ¨é¢å¤–问题,请在æ交代ç çš„åŒæ—¶ï¼Œç¼– 写一份 intro.mdÂ ï¼Œå¹¶æ·»åŠ ä¸€äº›è¯´æ˜Žï¼Œå¦‚ï¼šå¦‚ä½•ç¼–è¯‘ï¼Œå¦‚ä½•è¿è¡Œä½ 的程åºï¼›æ˜¯å¦è¿ç”¨äº†å…¶ä»–ä¾èµ– 库,如何安装ä¾èµ–;如何管ç†æ•°æ®åº“,实现数æ®åˆ†å—ç‰ã€‚

7. Grading standards
完æˆæ‰€æœ‰ Basic 版本的è¦æ±‚ï¼Œä½ å°†èŽ·å¾— 8 分; 完æˆæ‰€æœ‰ Advanced 版本的è¦æ±‚ï¼Œä½ å°†èŽ·å¾— 10 分。 å¦‚æžœä½ æœ‰éƒ¨åˆ†åŠŸèƒ½æ²¡æœ‰å®žçŽ°ï¼Œå°†æ ¹æ®ä½ 的完æˆæƒ…况进行细化打分。 æ¤åˆ†æ•°ä¸åŒ…å« Lab 3,Lab 3 çš„åˆ†æ•°ä¼šæ ¹æ® Lab 4 完æˆæƒ…况å¦å¤–获得。

Shopping Cart

No products in the cart.

No products in the cart.

[SOLVED] Cloud computing – 云计算lab4
$25