gRPC (Remote Procedure Calls) - это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google в 2015 году.
Удаленный вызов процедур, которые не нужно описывать в своем проекте. Нет дублирования кода.
Жесткая регламентация вызовов методов (набор входных аргументов). Более затратный маршалинг методов, в отличии от локального запуска.
GraphQL – это открытый язык запросов и среда выполнения, разработанный в Facebook в 2015 году. Он позволяет клиентам определять структуру ответа на запросы, что дает больше гибкости и эффективности, чем традиционные REST API.
В контексте микросервисов, GraphQL может быть использован для сбора и объединения данных из различных микросервисов в единый запрос. Клиенты могут запрашивать только те данные, которые им нужны, что сокращает объем передаваемых данных и улучшает производительность.
Нет планировщика запросов, невозможно отследить нагрузку запроса, нет возможности кэширования запросов, плохо подходит для записи.
REST API — это архитектурный подход, который устанавливает ограничения для API: как они должны быть устроены и какие функции поддерживать. Это позволяет стандартизировать работу программных интерфейсов, сделать их более удобными и производительными.
Слово REST — акроним от Representational State Transfer, что переводится на русский как «передача состояния представления», «передача репрезентативного состояния» или «передача „самоописываемого“ состояния».
В отличие от, например, SOAP API, REST API — не протокол, а простой список рекомендаций, которым можно следовать или не следовать. Поэтому у него нет собственных методов. С другой стороны, его автор Рой Филдинг создал ещё и протокол HTTP, так что они очень хорошо сочетаются, и REST обычно используют в связке с HTTP.
Топики лучше всего использовать для шаблона событийного сотрудничества, а очереди для коммуникации по шаблону запрос - ответ.