|
|
Опубликовано 25.09.2019 16:11:58
|
|
|
|

Традиционно система, обрабатывающая миллиард транзакций в день, могла требовать сотни виртуальных машин, PayPal делает это всего с 8 виртуальными машинами и обеспечивает быструю реакцию при 90% загрузке процессора — плотность транзакций, которой PayPal никогда раньше не достигал, а процесс занимает лишь 1/10 времени, помогая организации успевать за ростом без необходимости масштабировать вычислительную инфраструктуру и снижать затраты. Как это делается?
PayPal перенёс свою систему в режим Actor на базе Akka. В статье Squbs: PayPal использует новый реактивный подход к созданию приложений (Вход по гиперссылке виден.PayPal объясняет все тонкости процесса. Теперь у них есть открытый исходный код Squbs и опубликовано его на GitHub (Вход по гиперссылке виден.)。
Когда проекту нужно использовать практический подход, модель государственного обслуживания всё равно не получает достаточного внимания. Чтобы узнать больше о статусных сервисах, рекомендуем ознакомиться с причинами продолжать создавать масштабируемые государственные сервисы уже сейчас (Вход по гиперссылке виден.), эта статья основана на речи Кейти Маккафри. Если эта статья вас не убедит, есть и WhatsApp, который использует конкурента Akka — Erlang для чрезвычайно высокой пропускной способности: архитектуру WhatsApp Facebook стоимостью 19 миллиардов долларов (Вход по гиперссылке виден.)。
Причина рекомендации вышеуказанной статьи в том, что PayPal не предоставляет подробного введения в архитектуру, а уделяет больше внимания причинам, по которым они выбрали Akka и преимуществам перехода на Akka. Но эта статья всё равно даёт ценную поддержку и демонстрацию практики «ухода с проторенных путей».
Что плохого в использовании большого количества виртуальных машин для сервиса?
- Запускайте сервис с очень низкой пропускной способностью и очень маленькими виртуальными машинами. Главное преимущество реактивных систем на основе акторов заключается в том, что они могут более эффективно использовать вычислительные ресурсы, что значительно уменьшает размер системы и позволяет избежать «простой и грубой» автомасштабировки традиционных практик.
- Это сильно нагружает вашу сеть и инфраструктуру маршрутизации. Поскольку сервисы обычно более взаимосвязаны, запросы могут проходить через большое количество переходов в сети, что увеличивает задержку и ухудшает пользовательский опыт.
- Чем больше, тем дороже. Сервисы с сотнями виртуальных машин имеют высокие затраты на управление, мониторинг и неэффективное кэширование.
- Чем меньше он, тем более маневрен. Развертывание сервисов на сотнях виртуальных машин — это трудоёмкий процесс.
- Получайте больше от большего количества процессора на каждой виртуальной машине. Поскольку процессоры нельзя ускорить дальше, инфраструктура должна эффективнее использовать больше процессоров на каждой виртуальной машине.
- Микросервисы должны строиться с помощью слабо связанных наносервисов, которые легко поддерживать и быстро создавать. Никто не хочет работать со сложной системой с множеством слоёв, и нужно больше понимания роли разных сервисов без глубокого анализа слоёв кода.
Учитывая эти факторы, PayPal хотел создать систему, которая:
- Масштабируемый не только горизонтально до сотен узлов, но и для увеличения числа процессоров с целью обработки миллиардов запросов в день.
- Низкая задержка и может управляться с чрезвычайно тонкой детализацией.
- Будьте стойкими перед лицом неудач.
- Гибкая корректировка границ сервиса.
- Способствуйте масштабируемости и простоте через программные модели и культуру, а также упрощённые механизмы обработки неисправностей и ошибок.
Нет сомнений, что PayPal хочет использовать более «тонкий» стек, и не хочет, чтобы их стек содержал много технологий и движущихся частей на разных уровнях. В целом, системы Akka и системы на основе состояний хорошо подходят для этой задачи, что позволяет «разбить» стек крупных компонентов в одну технологию. PayPal выбрал Akka вместо Erlang, потому что у них больше опыта с Java, которая работает поверх Java. Для многих людей изучать эрланг с нуля нереалистично.
С Аккой они могут:
- Пишите код, который проще объяснить
- Пишите код, который проще тестировать
- Сценарии ошибок и отказа реализуются более естественно, чем в традиционных режимах с использованием JVM
- Пишите более быстрый, устойчивый и простой код, чтобы легче обрабатывать ошибки и уменьшать количество ошибок
PayPal сразу же создал собственный фреймворк на основе Akka, который назывался Squbs и использовался для рифмы с «Cubes». Это позволяет создать модульный технологический слой для создания NanoService под названием «Куб». Кубы симметричны, а зависимости между разными кубами также симметричны и свободны, открывая только те интерфейсы сообщений, которые уже предоставляет Akka.
Также описываются трудности, с которыми могут столкнуться программисты при внедрении кода AKKA, так как возможно, вам придётся нанять специалиста, обученного Akka/Scala.
Поскольку большинство сервисов выполняют схожие цели: принимать запросы, вызывать и читать и записывать базы данных, вызывать другие сервисы, вызывать движки правил, получать данные из кэшей, записывать в кэши... В результате сервисы можно абстрагировать через паттерны, такие как Orchestrator Pattern и Perpetual Stream.
Squbs стал стандартной практикой для PayPal для создания реактивных приложений на базе Akka. Если ваша команда ещё не рассматривала системы со статусом, стоит попробовать, так как они хорошо работают в PayPal, Facebook, Uber и Microsoft.
|
Предыдущий:Три фактора, из-за которых я пренебрегаю ChromeСледующий:vs создайте папку, и при генерации решения в bin-файле никого нет
|