Какова реальная разница между API и в микрослужб?

Я изучаю микросервисы, и я не понимаю, в чем реальная разница между созданием REST API и созданием микросервисов. Я работаю в Go, но мой вопрос относится ко всем языкам.

5 ответов


подход к микросервисам заключается в том, чтобы разбить вашу систему ("кучу кода") на множество небольших сервисов, каждый из которых обычно имеет свой собственный:

  • понятное дело-ответственность
  • запуск процесса
  • база данных
  • управление версиями кода (например, Git) репозиторий
  • API
  • UI

сами услуги сохраняются маленький так как ваша система растет, есть больше услуг-скорее чем больше услуг.

микрослужб можете использовать REST, RPC, или любой другой способ общаться друг с другом, поэтому отдых действительно ортогональна тему микросервисов...


API-интерфейс = Интерфейс Прикладного Программирования

микрослужб = архитектура

короче говоря-microservice должен предоставить четко определенный API. Микросервис-это способ, которым вы можете создать свое решение, API-это то, что видят ваши потребители. Вы можете предоставить API без микросервисов в бэкэнде (на самом деле, большинство сценариев без обучения не требуют микросервисов).

вы можете прочитать http://samnewman.io/books/building_microservices/ прежде чем вы решите использовать микросервисы (если это не для учебных целей).


конструирование хорошо определяется, когда вы следуете SOC-разделение беспокойства на уровне сущности / домена, где каждая сущность / домен независимы от любой другой службы.

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

микросервисный сервер и интерфейс микросервис может быть разделен на 2 части

  1. frontend microservice, который предоставляет конечную точку rest так же, как Web API
  2. backend microservice, который фактически выполняет все операции.

API-интерфейс REST более конечных точек, подвергающихся воздействию внешнего мира, и может использоваться также с микрослужб, как описано выше.


большинство ответов основано на понимании API старой школы как программного интерфейса. В настоящее время это значение расплавляется и начинает сбивать с толку людей, потому что некоторые разработчики начали (для упрощения или по ошибке) интерпретировать API приложения как приложение как таковое. В таком случае невозможно отличить современный API от микросервисов. Тем не менее, можно сказать, что API-приложение может содержать множество микросервисов, большинство из которых взаимодействуют в приложении через API Microservice, в то время как другие могут выставлять свои API как API приложений. Кроме того, микросервисы (как службы) могут не включать другие микросервисы (службы), но могут организовывать состав микросервисов с помощью вызовов API-баз. Приложения могут содержать микросервисы, но, в лучших практиках, не могут содержать другие приложения.


микрослужб

A архитектура конструирование речь идет о нарезке логики приложения на небольшие части или" компоненты", которые могут действовать между ними и/или быть представлены через API.

API

a (web) приложение должно разработать бизнес-логику со всем набором объектов (моделей) и возможных операций над ними. Ан (Прикладное Программирование Интерфейс] [https://en.wikipedia.org/wiki/Application_programming_interface)-это способ выполнения запросов к приложению, предоставляя определенные точки входа, которые отвечают за вызов соответствующих операций приложения.

REST(ful) APIs ("REST", как в передаче репрезентативного состояния) являются API, соответствующие, по крайней мере, этим 5 ограничения:

  • пользовательский интерфейс отличается от хранения данных и манипуляция (архитектура клиент-сервер)
  • на сервере не хранится контекст клиента ("без состояния")
  • ответы сервера должны, неявно или явно, определять себя как кэшируемые или нет
  • клиент не должен знать о слоях между ним и сервером
  • сообщения ответа / запроса должны быть: быть самоописательными; позволять идентифицировать ресурс; использовать представления, позволяющие манипулировать ресурсами; объявлять доступные действия и ресурсы ("единый интерфейс").

"реальное различие"

Итак, хотя эти понятия, очевидно, связаны, они являются четко определенными понятиями:

  • быть спокойным или нет, an API предоставляет операции, предоставляемые сервером, которые могут (но не обязательно) быть обстреляны меньшими компонентами (микрослужб).

  • кроме того, в то время как типичный web (REST)API использует протокол HTTP между клиентом и сервером, компоненты архитектура конструирование может общаться, используя другой протокол(ы) (например,ПУВР, протокол AMQP, JSON-RPC, XML-RPC, мыло, ...)