2016-10-07 3 views
6

Скажет, мы имеем следующие приложения такси Рода, который состоит из слабосвязанного microservices:Какова роль falcor в архитектуре микросервиса?

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

Пример взят из https://www.nginx.com/blog/introduction-to-microservices/

Каждых услуг имеют свою собственный отдых апи и все услуги объединены в один Api-шлюз. Клиент не разговаривает с одной службой, а с шлюзом. Шлюз запрашивает информацию из нескольких служб и объединяет их с одним ответом. Для клиента это выглядит так, как будто речь идет о монолитном приложении.

Я пытаюсь понять: где мы можем включить falcor в это приложение?

Одна модель Везде от http://netflix.github.io/falcor/

Falcor позволяет представить все удаленные источники данных как одной модели домена через виртуальный граф JSON. Вы кодируете тот же путь независимо от того, где находятся данные, будь то в памяти на клиенте или по сети на сервере.

В этом приложении для такси каждый микросервис представляет собой модель с одним доменом. Можете ли вы придумать какую-либо выгоду, которую мы могли бы преуспеть, упаковывая каждый микросервис с помощью falcor? Я не могу.

Однако я считаю, что очень удобно включать falcor в шлюз api, потому что мы можем абстрагироваться от разных моделей домена, созданных микросервисами, в одну или по крайней мере несколько моделей.

Что вы думаете?

ответ

3

Вы правы. Так Netflix использует Falcor и для чего предназначен маршрутизатор Falcor.

От documentation:

Маршрутизатор подходит как абстракция над слоем услуг или REST API. Использование маршрутизатора над этими типами API обеспечивает достаточную гибкость, чтобы избежать взаимных поездок клиентов, не вводя тяжелые абстракции. Сервисно-ориентированные архитектуры являются общими в системах, предназначенных для масштабируемости. Эти системы обычно хранят данные в разных источниках данных и выставляют их через различные службы. Например, Netflix использует маршрутизатор перед своей архитектурой Microservice.

Редко идеально использовать маршрутизатор для прямого доступа к одной базе данных SQL. Приложения, использующие один хранилище SQL, часто пытаются создать один SQL-запрос для каждого запроса на сервер. Маршрутизаторы работают, разбивая запросы на разные разделы диаграммы JSON на отдельные обработчики и отправляя отдельные запросы в службы для извлечения запрошенных данных. Как следствие, отдельные обработчики маршрутизаторов редко имеют достаточный контекст для создания единого оптимизированного SQL-запроса. В настоящее время мы изучаем различные варианты поддержки такого типа доступа к данным с помощью Falcor в будущем.

1

Falcor действительно большой апи, если он используется в правильном пути для очень соответствующих случаев применения, как:

  • Если ваша страница должна сделать несколько конца REST точки вызывает
  • Этих вызовов не зависят друг от друга
  • Все остальные вызовы происходит на начальной странице загрузки
  • Производительность: Если вы хотите кэшировать ответы REST (например, microservice использует кэширование gemfire, вам не нужно кэш Falcor Yo. u может по-прежнему использовать кэширование falcor, если вы хотите уменьшить латентность сети)
  • Запросы на серверные запросы: при запуске Falcor в среде узла вам может потребоваться сократить количество вызовов на сервер узла с клиентской стороны.
  • Легче разбор ответа: Если вы не хотите, чтобы клиентский код, чтобы беспокоиться о извлечении данных из-точек ответа REST (включая обработку ошибок) и так далее ..

Однако, есть много ситуации, когда Falcor не служат целям, как много и чувствует, что лучше вызвать конечную точку непосредственно:

  • Если REST звонки зависят друг от друга
  • Если вы хотите передать много параметров для вызова конечная точка
  • Если вы не намерены кэшировать ответ (ов)
  • Если вы хотите поделиться некоторыми безопасные куки (например: XSRF токенов) с веб-службы REST