Producer - Consumer mikroserwisowo

0

Chcę mikroserwisowo zrobić takie coś:

title

  1. Jak rozumiem ma być osobny jar Consumera, osobny jar Producera i osobny jar co wypycha do kolejki to co wyprodukuje Producer. A co zrobić z faktem, że Consumer i Producer współdzielą model i logikę biznesową? np. obiekty POJO, propertasy, klienta restowego. Zrobić 4 jar? albo 4 do logiki i 5 do modelu?

  2. Jak najprościej zaimplementować taką kolejkę? (nie wiem jak to się ma komunikować)

  3. Jeśli nie chcę implementować takiej kolejki samemu to z czego skorzystać żeby było modne i proste? Kafka? Fuse?

2

Jak rozumiem istotą ortodoksyjnej mikroservices informatyki jest nieposiadanie żadnego wspólnego kodu.
Może użyj mniej "religijnych" sformułowań, jak service/usługa.

0
AnyKtokolwiek napisał(a):

Jak rozumiem istotą ortodoksyjnej mikroservices informatyki jest nieposiadanie żadnego wspólnego kodu.
Może użyj mniej "religijnych" sformułowań, jak service/usługa.

Usługa A:

// ...
AppStatus getAppStatus() {
// ...

Usługa B:

// ...
AppStatus status = serviceB.getAppStatus();
if (status == AppStatus.of("infected_covid-19") {
     producePersonToSanepidQueue();
// ...

Usługa C:

// ...
AppStatus status  = serviceB.getAppStatus();
if (status == AppStatus.of("infected_covid-19") {
    consumePersonFromSanepidQueue();
// ...

i co teraz?

1
  1. Jakie masz założenia/wymagania. Dlaczego to nie może być zrobione w jedne apce? Przeraża mnie pytanie z czego skorzystać żeby było modne i proste.
  2. Poczytaj o AVRO schema, może to jest way to go dla Ciebie. Kolejek jest multum - Redis, RabbitMQ, ActiveMQ, ..., Kafka. Możesz też sobie zaimplementować kolejkę na MySQL. Wszystko zależy od punktu (1).
0
Charles_Ray napisał(a):
  1. Jakie masz założenia/wymagania. Dlaczego to nie może być zrobione w jedne apce? Przeraża mnie pytanie z czego skorzystać żeby było modne i proste.

Uczę się micoserwisów dlatego tak se to rozdzielam. Modne po to, bo już nie raz straciłem kilka mies. na naukę czegoś co już nikt nie używa (np. servlety z jsp), a proste dlatego, że od czegoś chcę zacząć.

2
Julian_ napisał(a):
  1. Jak rozumiem ma być osobny jar Consumera, osobny jar Producera i osobny jar co wypycha do kolejki to co wyprodukuje Producer. A co zrobić z faktem, że Consumer i Producer współdzielą model i logikę biznesową? np. obiekty POJO, propertasy, klienta restowego. Zrobić 4 jar? albo 4 do logiki i 5 do modelu?
  • DTO -> AVRO schema jak pisze @Charles_Ray. Lub prościej, JSON schema. Lub inaczej Protocol Buffer lub Thrift
  • Logika -> radykałowie kopiują taki kod lub robią nano serwis. Ja nie widzę powodu żeby nie wsadzić tego do biblioteki
  • Klient -> jak najbardziej zasługuje to na osobną bibliotekę jak jest bardzo pokopany. Ale nie bardzo rozumiem do czego, bo na razie masz tylko dwa serwisy połączone kolejką. Czy to jest klient do trzeciego serwisu?
  1. Jak najprościej zaimplementować taką kolejkę? (nie wiem jak to się ma komunikować)

Trochę bez sensu implementować samemu. Trochę tak jakby implementować samemu bazę danych.

  1. Jeśli nie chcę implementować takiej kolejki samemu to z czego skorzystać żeby było modne i proste? Kafka? Fuse?
  • Fuse jest od oparty o JBossa więc nie może być modny
  • Kafka jest prawdopodobnie najmodniejsza kolejką (zaraz zacznie się dyskusja że Kafka nie jest kolejką :D, ale jest używana często w miejsce kolejki)
  • RabbitMQ jest prawdopodobnie najmodniejszą implementacją AMQP i MQTT
0

Ok, jak do nauki to spoko. Patent na powtarzalną konfigurację klientów jest taki, że możesz zrobić albo libkę, albo Spring Bootowy starter, który dostarczy odpowiednie beany i umożliwi ich dokofigurowanie.
Nie rozumiem natomiast jak Consumer i Producer mogą mieć tę samą logikę, to mi się nie klei. Odnośnie kolejki to warto sobie rozpoznać Kafkę i jak ch***owo się z nią integruje (chyba, że użyjesz nakładki tymu spring-kafka) oraz RabbitMQ, ponieważ nie każdy używa Kafki jako kolejkę. Oba podejścia będą wymagać przeczytania dokumentacji i zrozumienia bebechów - moim zdaniem wartościowe ćwiczenie.

2

modnie - kafka
prosto - rabbitmq

1 użytkowników online, w tym zalogowanych: 0, gości: 1