общепринятых паттернов нет.
Почитайте Мартина Фаулера, Боба Мартина, Крэйга Лармана, Кента Бэка, банду четырех, Эрика Эванса и других людей и возможно в этом вопросе у вас поменяется мнение. Скажем SoA и гексагональная архитектура, CQRS и т.д. хорошо вписываются в концепцию распределенных систем.
Как вы комбинируете все идеи которые нагенерили за последние лет 20, это уже другое дело. А высокие нагрузки (реально высокие) когда нужно вкладывать кастыли - эта задача появляется далеко не сразу. И если архитектура изначально позволяет масштабировать приложение - проблем будет явно меньше. Преждевременная оптимизация - корень всех зол (почти).
По поводу технологий, что где и когда - никто не даст вам такого ответа. Проще всего, раз уж речь идет о распределенной системе, проектировать систему таким образом, что бы узкое место можно было легко заменить. Скажем если у вас весь проект написан на Python и один его компонент подвержен особенно большим нагрузкам, можно переписать его на Go или C++ а всю остальную систему оставить без изменений. Если у вас узким местом стала база - вводить кэши или уровни кешей. Если узким местом стала шина данных между различными компонентами системы - думаем как оптимизировать это звено (какие-нибудь protobuf для обмена данными, zeromq или свой бинарный протокол)