Mam pytanie do społeczności mikroserwisów. Podam przykład z dziedziny edukacji, ale dotyczy to każdej architektury mikroserwisów.Podejście na komponenty Microservice
Powiedzmy mam Student-usługę i licencjonowania usług z wymogiem biznesowym, że liczba studentów jest ograniczona przez licencję. Więc za każdym razem, gdy uczeń jest tworzony, musi zostać sprawdzona licencja. Istnieje wiele rodzajów licencji, więc typ licencji musiałby zostać uwzględniony w operacji.
Moje pytanie brzmi: które podejście znalazłeś to lepiej w praktyce:
- Budowa kompozytowego usługę, która wywołuje usługi 2
- Sprzęgło Student-service licencjonowaniu-usługi tak, że kiedy createStudent nazywa się Student usług sprawia, że wezwanie do licencjonowania usług i jedynie wówczas, gdy zostanie zakończona student być tworzone
- Użyj architekturę opartego na zdarzeniu
peop Mówię o architekturach mikroserwisowych bardziej przypominających wykres niż o hierarchii, a opcja 1 zmienia się w hierarchię, w której dostajemy coraz grubsze kompozyty. Inne wady powodują niejasności co do tego, jakich usług klienci powinni faktycznie używać i istnieje pewne powielanie, ponieważ interfejs API kompozytów musi zawierać wszystkie parametry potrzebne do wywołania usług niższego rzędu. Ma to dużą zaletę, ponieważ daje naturalne miejsce do obsługi awarii, choreografii i zachowania spójności.
Opcja 2 Wygląda na to, że ma wady też:
API licencjonowania musiałby przedostać się do API studentów, dzięki czemu można określić ograniczenia licencyjne.
stawia wiele obciążeń na studenta-usługi, ponieważ musi obsługiwać spójność we wszystkich usług zależnych
- jak więcej usług trzeba reagować, gdy student jest tworzony widziałem wykres zależności szybko wymknięcie się spod kontroli i usługa będzie musiała obsłużyć tę złożoność oprócz tej z własnej logiki zarządzania studentami.
Wariant 3 Będąc oddzielenie nieba, ja naprawdę nie sądzę, by działać, ponieważ to wszystko jest wyzwalany z UI i ludzie naprawdę nie są używane do „idź zrobić coś innego, dopóki to nowy uczeń zjawia " podejście.
Dziękuję
Pozostaje pytanie, czy pozostawić połączenie z tym oprogramowaniem pośredniczącym na odpowiedzialność dzwoniącego. Rozumiem opcję 1 jako sposób na egzekwowanie wezwań do "tworzenia-studenta" przestrzegania ograniczeń licencyjnych. Oczywiście, jeśli zarówno licencjonowanie, jak i obsługa studentów są dostępne, usługa złożona nie może niczego wymusić. Widzisz, że tworzenie i licencjonowanie studentów jest całkowicie niezależne - biorąc pod uwagę wymagania biznesowe, nie mam i dlatego opcja 2 ma dla mnie wiele sensu. Myślę, że sprowadza się to do tego, czy podkreślasz wymagania biznesowe, czy elastyczność. – schaueho
@schaueho - Myślę, że można po prostu zablokować połączenia z usługą studencką ze świata zewnętrznego, jeśli nie przechodzą przez oprogramowanie pośredniczące licencjonowania. – Pol