Ну вообще обычно есть "точка входа" которая имеет публичный Api и занята она проксирование запросов к микросервисам.
По поводу протокола.
Я юзаю Go и думаю что тоже подойдёт к любому ЯП.
У меня между микросервисами сделано подобие json RPC по верх TCP и UNIX SOCKET. Второе сделано на случей если микросервисы на том же сервере и каждый микросервис слушает как tcp так и unix socket.
Обычно каждый модуль выносят в микросервис (а-ля Авторизация, Чат, Отправка EMAIL и т.д.)