/feedgram

This is a backend clone of Instagram. The project is for educational purposes only.

Primary LanguageJava

VÝUKOVÝ PŘÍKLAD (zatím nedokončeno):

TECHNOLOGIE:

  • SpringBoot
  • Spring Security
  • Maven
  • Spring Cloud Gateway
  • Netflix Zuul (not supported by Spring anymore)
  • Eureka (Discovery Service)
  • Ribbon
  • Spring Cloud Stream
  • Apache Kafka (Message broker)
  • Zookeeper (stará se a řídí brokery v clusteru Apache Kafka)
  • JWT (token authetincator)
  • Docker
  • FeignClient
  • Hystrix
  • Lombok
  • Hibernate
  • Neo4j
  • Casandra

Popis aplikace

  • ApiGateway - brána k FE
  • AuthService: zajišťuje autentikaci a vytvoření nového uživatele
  • PostService: vytváří příspěvky
  • FeedService: získává uživatelův feed
  • DiscoveryService - list servis
  • GraphService: ukládá vazby mezi users

CO BY BYLO DOBRÉ DODĚLAT:

  • FE v Reactu
  • škálovat aplikaci pomocí Kubernetes

Zuul a Eureka

Máme api gateway, na kterou jde request z FE. Ten přijme Zuul. Request vyžaduje servisu A, takže Eureka dodá všechny instance service A a poskytne je Ribbonu. Ribbon pak vybere kterou instanci použijeme (load balancing).

Apache Kafka

Slouží pro interní komunikaci mezi services. Je to styl publish-subscribe. Máme producery, který pošlou zprávu do nějakého topicu a partiony. Máme vlatně cluster, v něm brokery, které manažuje Zookeeper. Dále máme consumery, kteří si postupně přebírají zprávy které jsou pro ně. Drží si hodnotu OFFSET, podle toho ví co si vzít dalšího.

V bodech Kafka:

  • je to publish-subscribe messaging systém
  • topic (v překladu to je kategorie)
  • do topicu se posílá nějaké zpráva, ta má 4 atributy: key, value jsou povinné a dva nepovinné timestamp a headers -- value může být cokoliv
  • máme 4 hlavní části Kafky: Broker: Handles all requests from clients (produce, consume, and metadata) and keeps data replicated within the cluster. There can be one or more brokers in a cluster. Zookeeper: Keeps the state of the cluster (brokers, topics, users). Producer: Sends records to a broker. Consumer: Consumes batches of records from the broker.