Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sd-ca:teme:tema2-2024 [2024/04/11 00:47]
eduard.marin [Load Balancer(30p)]
sd-ca:teme:tema2-2024 [2024/04/25 18:18] (current)
andrei.otetea [Actualizări]
Line 9: Line 9:
  
 ===== Actualizări ===== ===== Actualizări =====
-  ​**10 aprilie** - Am actualizat deadline-ul hard - 7 mai, ora 23:59 +  ​**10 aprilie** - Am actualizat deadline-ul hard - **7 mai, ora 23:59** 
 +  * **11 aprilie** - Am adăugat un exemplu de test, cu ref-ul corespunzător 
 +  * **17 aprilie** - Am [[https://​github.com/​sd-pub/​Tema2-2024/​commit/​3691b822d621efe458862bbb7c2af7e4493402d1|actualizat scheletul]] - am reglat erorile de coding style din schelet - vezi **utils.h** - și am modificat valoarea constantei **MAX_LOG_LENGTH**  
 +  * **17 aprilie** - Am adăugat [[https://​github.com/​sd-pub/​Tema2-2024/​commit/​c086e5776b80c920d299337c4f00c1e40ed024e5|checker-ul și testele]] 
 +  * **25 aprilie** - Am actualizat [[https://​github.com/​sd-pub/​Tema2-2024/​commit/​630febcb72493b1350859563d8044189362c83f9|ref-urile testelor 26-30]].
 ===== Obiective ===== ===== Obiective =====
 În urma realizării acestei teme veţi: În urma realizării acestei teme veţi:
Line 75: Line 78:
  
 Când se primește orice request: Când se primește orice request:
-  * executat lazy - se returnează **"​Request- <​request_type>​ <​document_name>​ -has been added to queue"​**+  * executat lazy - se returnează **"​Request- <​request_type>​ <​document_name>​ - has been added to queue"​**
   * executat direct - se returnează conținutul efectiv ​   * executat direct - se returnează conținutul efectiv ​
  
Line 84: Line 87:
   * **EDIT**   * **EDIT**
     - Se adaugă request-ul în coada de task-uri si se intoarce un struct response, in care:     - Se adaugă request-ul în coada de task-uri si se intoarce un struct response, in care:
-      * server_response = MSG_A: **“Request- EDIT <​doc_name>​ -has been added to queue”**+      * server_response = MSG_A: **“Request- EDIT <​doc_name>​ - has been added to queue”**
       * server_log = LOG_LAZY_EXEC:​ **"​Task queue size is <​size_of_task_queue>"​**       * server_log = LOG_LAZY_EXEC:​ **"​Task queue size is <​size_of_task_queue>"​**
     - În momentul în care trebuie executat, se scoate task-ul din front-ul cozii și se stochează conținutul documentului în cache.     - În momentul în care trebuie executat, se scoate task-ul din front-ul cozii și se stochează conținutul documentului în cache.
Line 218: Line 221:
 În cazul adăugării unui nou server în sistem, se vor lua toate documentele de pe serverele vecine (succesoare în sensul acelor de ceas) si se va verifica dacă vor fi remapate către serverul nou sau nu. Dacă un document trebuie să fie mapat pe serverul nou, valoarea sa va fi transferată de pe serverul vechi, iar serverul vechi o va şterge. În cazul adăugării unui nou server în sistem, se vor lua toate documentele de pe serverele vecine (succesoare în sensul acelor de ceas) si se va verifica dacă vor fi remapate către serverul nou sau nu. Dacă un document trebuie să fie mapat pe serverul nou, valoarea sa va fi transferată de pe serverul vechi, iar serverul vechi o va şterge.
  
-Să presupunem că se adaugă un server cu id 3. Serverul care va fi vecin celui cu id 3 pe hash ring (serverul ​2, în cazul de faţă) va trebui să îşi redistribuie documentele:​+Să presupunem că se adaugă un server cu id 3. Serverul care va fi vecin celui cu id 3 pe hash ring (serverul ​1, în cazul de faţă) va trebui să îşi redistribuie documentele:​
  
 ^   Doc Name / ID Server ​  ​^ ​   Hash    ^    Stored on    ^ ^   Doc Name / ID Server ​  ​^ ​   Hash    ^    Stored on    ^
Line 236: Line 239:
 ==== Bonus - Replici (20p) ==== ==== Bonus - Replici (20p) ====
  
-În practică, pentru a ne asigura că obectele ​sunt distribuite cât mai uniform pe servere se foloseşte următorul artificiu: Fiecare server va fi adaugat de mai multe ori pe hash ring (Aceste servere se vor numi “replici” sau “noduri virtuale”). Acest mecanism se va realiza prin asocierea unei etichete artificiale fiecarei replici, plecând de la id-ul server-ului de bază:+În practică, pentru a ne asigura că obiectele ​sunt distribuite cât mai uniform pe servere se foloseşte următorul artificiu: Fiecare server va fi adaugat de mai multe ori pe hash ring (Aceste servere se vor numi “replici” sau “noduri virtuale”). Acest mecanism se va realiza prin asocierea unei etichete artificiale fiecarei replici, plecând de la id-ul server-ului de bază:
 <​code>​eticheta = replica_id * 10^5  + server_id;</​code>​ <​code>​eticheta = replica_id * 10^5  + server_id;</​code>​
  
Line 339: Line 342:
  
  
-Testele sunt formate dintr-o linie unde se specifică numărul total de request-uri,​ urmat de **ENABLE_VNODES** (opţional, doar pentru testele bonus, în care se verifică utilizarea replicilor).+Testele sunt formate dintr-o linie unde se specifică numărul total de request-uri,​ urmat de **ENABLE_VNODES** (opţional, doar pentru testele bonus, în care se verifică utilizarea replicilor), respectiv cate o linie pentru fiecare request. 
 + 
 +<spoiler Click pentru input-ul unui test> 
 +<code json> 
 +
 +ADD_SERVER 100 5 
 +EDIT "​manager.txt"​ "Box understand feel."​ 
 +GET "​manager.txt"​ 
 +EDIT "​manager.txt"​ "Mouth attorney."​ 
 +GET "​manager.txt"​ 
 +GET "​produce.txt"​ 
 +</​code>​ 
 +</​spoiler>​ 
 + 
 +<spoiler Click pentru output-ul unui test> 
 +<code json> 
 +[Server 100]-Response:​ Request- EDIT manager.txt - has been added to queue 
 +[Server 100]-Log: Task queue size is 1 
 + 
 +[Server 100]-Response:​ Document manager.txt has been created 
 +[Server 100]-Log: Cache MISS for manager.txt 
 + 
 +[Server 100]-Response:​ Box understand feel. 
 +[Server 100]-Log: Cache HIT for manager.txt 
 + 
 +[Server 100]-Response:​ Request- EDIT manager.txt - has been added to queue 
 +[Server 100]-Log: Task queue size is 1 
 + 
 +[Server 100]-Response:​ Document manager.txt has been overridden 
 +[Server 100]-Log: Cache HIT for manager.txt 
 + 
 +[Server 100]-Response:​ Mouth attorney. 
 +[Server 100]-Log: Cache HIT for manager.txt 
 + 
 +[Server 100]-Response:​ (null) 
 +[Server 100]-Log: Document produce.txt doesn'​t exist 
 + 
 + 
 +</​code>​ 
 +</​spoiler>​
  
  
Line 355: Line 397:
 ===== Punctaj ===== ===== Punctaj =====
   * 80p teste: **fiecare** test este verificat cu valgrind. Dacă un test are memory leaks, nu va fi punctat.   * 80p teste: **fiecare** test este verificat cu valgrind. Dacă un test are memory leaks, nu va fi punctat.
 +    * Testele 0-10 testează implementarea serverului
 +    * Testele 11-20 testează implementarea load balancer-ului
   * 10p coding style   * 10p coding style
   * 10p README   * 10p README
   * 20p BONUS 😀   * 20p BONUS 😀
 +    * Testele 21-30 testează implementarea replicilor în load balancer
   * O tema care nu compilează va primi 0 puncte.   * O tema care nu compilează va primi 0 puncte.
  
sd-ca/teme/tema2-2024.1712785650.txt.gz · Last modified: 2024/04/11 00:47 by eduard.marin
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0