2016-10-07 11 views
6

że mamy następujący wniosek taxi-Pochodzący że składa się z luźno powiązanych microservices:Jaka jest rola falcor w architekturze mikroserwisu?

https://www.nginx.com/blog/introduction-to-microservices/

Przykład pochodzi z https://www.nginx.com/blog/introduction-to-microservices/

Each usług posiada własną API REST i wszystkie usługi są połączone w jedną bramkę API. Klient nie rozmawia z pojedynczą usługą, ale z bramą. Brama żąda informacji z kilku usług i łączy je w jedną odpowiedź. Dla klienta wygląda na to, że rozmawia z monolityczną aplikacją.

Próbuję zrozumieć: gdzie możemy włączyć falcor do tego wniosku?

jednego modelu Wszędzie z http://netflix.github.io/falcor/

Falcor pozwala reprezentować wszystkich zdalnych źródeł danych w postaci pojedynczego modelu domeny poprzez wirtualny wykres JSON. Koduje się w ten sam sposób, niezależnie od tego, gdzie są dane, zarówno w pamięci na kliencie, jak i przez sieć na serwerze.

W tej taksówkarskiej aplikacji każda mikroserwis stanowi już jeden model domeny. Czy możesz wymyślić jakąkolwiek korzyść, którą moglibyśmy osiągnąć, zawijając każdą mikroserwis z falcor? Nie mogę.

Uważam jednak, że bardzo wygodne jest włączenie falcora do bramki api, ponieważ możemy oddzielić różne modele domen tworzone przez mikroserwisy w jeden lub co najmniej kilka modeli.

Jaka jest Twoja opinia?

Odpowiedz

3

Masz rację. W ten sposób Netflix wykorzystuje Falcor i do czego przeznaczony jest router Falcor.

Z documentation:

Router jest odpowiedni jako abstrakcji nad warstwą usług lub REST API. Używanie routera w połączeniu z tymi typami interfejsów API zapewnia wystarczającą elastyczność, aby uniknąć podróży w obie strony po kliencie bez wprowadzania ciężkich abstrakcji. Architektura zorientowana na usługi jest powszechna w systemach zaprojektowanych pod kątem skalowalności. Systemy te zazwyczaj przechowują dane w różnych źródłach danych i udostępniają je za pośrednictwem różnych usług. Na przykład Netflix używa routera przed swoją architekturą Microservice.

Rzadko jest idealnie używać routera do bezpośredniego dostępu do pojedynczej bazy danych SQL. Aplikacje korzystające z pojedynczego magazynu SQL często próbują zbudować jedno zapytanie SQL dla każdego żądania serwera. Routery działają poprzez rozdzielanie żądań dla różnych sekcji wykresu JSON na osobne procedury obsługi i wysyłanie indywidualnych żądań do usług w celu pobrania żądanych danych. W związku z tym poszczególne programy obsługi Router rzadko mają wystarczający kontekst do utworzenia pojedynczego zoptymalizowanego zapytania SQL. Obecnie analizujemy różne opcje obsługi tego typu wzoru dostępu do danych przy pomocy Falcor.

1

Falcor jest naprawdę wielki api, jeśli stosuje się go we właściwy sposób do bardzo istotnych przypadków użycia, jak:

  • Jeśli strona musi dokonać wielokrotnego punkt końcowy REST wzywa
  • tych połączeń nie zależą od siebie
  • nazywa cała reszta dzieje się na początkowej stronie obciążenia
  • wydajność: Jeśli chcesz buforować odpowiedzi spoczynku (na przykład microservice wykorzystuje buforowanie gemfire, może nie trzeba Falcor cache Yo. Nadal możesz używać buforowania Falcor, jeśli chcesz zmniejszyć opóźnienie sieci.
  • Dozowanie żądań serwera: Podczas uruchamiania Falcor w środowisku węzła możesz zmniejszyć liczbę połączeń z serwerem węzła po stronie klienta.
  • Łatwiejszy parsowania odpowiedź: Jeśli nie chcesz, kod klienta martwić wydobywania zbiór danych punktów z odpowiedzi REST (łącznie z obsługi błędów) i tak dalej ..

Jednakże, istnieje wiele sytuacje, w których Falcor nie służyć jako dużo i czuję, że jest lepiej, nazywając punkt końcowy bezpośrednio:

  • Jeśli połączenia REST są zależne od siebie
  • Jeśli chcesz przekazać wiele parametrów do wywoływania punkt końcowy
  • Jeśli nie zamierzają buforować odpowiedzi (s)
  • Jeśli chcesz podzielić się bezpiecznych ciasteczek (ex: żetony XSRF) z usługą internetową REST