Skip to content

ab76015/razpravljalnica

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Razpravljalnica

Logo Razpravljalnice

Razpravljalnica je distribuirana spletna storitev za izmenjavo mnenj med uporabniki o različnih temah. Omogoča registracijo novih uporabnikov, dodajanje tem ter pošiljanje, urejanje in brisanje sporočil znotraj posameznih tem. Uporabniki lahko sledijo izbranim temam in sproti prejemajo obvestila o novih sporočilih. Prav tako je omogočeno všečkanje sporočil z beleženjem števila všečkov.

Funkcionalnosti

  • Registracija uporabnikov
  • Ustvarjanje in seznam tem
  • Pošiljanje, urejanje in brisanje sporočil
  • Všečkanje sporočil z dinamičnim štetjem všečkov
  • Naročanje na teme in prejemanje sporočil v realnem času
  • Distribuirano delovanje z uporabo verižne replikacije za razporeditev bralnih zahtevkov
  • Podpora odpovedim vozlišč z avtomatskim ponovnim vzpostavljanjem verige in usklajevanjem zapisov

Tehnološki opis

Storitev je implementirana v programskem jeziku Go z uporabo gRPC za komunikacijo med strežnikom in odjemalci. Komunikacija med strežniškimi vozlišči je izvedena preko RPC protokola. Vsa podatkovna struktura in vmesnik so definirani v Protocol Buffers (.proto) datotekah, iz katerih je samodejno generirana Go koda za strežniški in odjemalski vmesnik.

Struktura projekta

razpravljalnica/
├── api/
│   ├── proto/                 # Definicija gRPC in Protocol Buffers vmesnika (.proto)
│   └── pb/                    # Samodejno generirana Go koda iz .proto
│
├── cmd/
│   ├── server/                # Zagon gRPC strežnika (main.go)
│   └── client/                # Enostaven gRPC odjemalec za testiranje
│
├── internal/
│   ├── storage/               # In-memory shranjevanje podatkov (users, topics, messages, likes)
│   │   ├── storage.go         # Vmesnik Storage
│   │   └── mem_storage.go     # Implementacija v delovnem pomnilniku
│   │
│   │
│   ├── replication/           # Logika verižne replikacije
│   │                           # (head → middle → tail, propagacija zapisov)
│   │
│   ├── subscription/          # Naročnine na teme (SubscribeTopic),
│   │                           # upravljanje streamov in pošiljanje MessageEvent
│   │
│   └── control/               # Kontrolna ravnina (ControlPlane):
│                               # stanje gruče, head/tail, topologija verige
│
├── go.mod                     # Go modul in odvisnosti
├── go.sum
├── README.md
└── logo.png

Navodila za razvoj in zagon

  1. Namesti protoc compiler in Go plugin za proto grpc-go.
  2. Generiraj Go kodo iz .proto datotek z ukazom protoc.
  3. Zaženi strežnik z go run cmd/server/main.go (privzeto na portu :50051).
  4. Zaženi odjemalca z go run cmd/client/main.go za testiranje RPC klicev.
  5. Razvijaj dodatne funkcionalnosti znotraj internal paketov.

About

Distribuirana spletna storitev Razpravljalnica, namenjena izmenjavi mnenj med uporabniki o različnih temah.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages