Получите больше от Akka Instrumentation

Актеры Akka помогают создавать масштабируемые, высокопроизводительные и параллельные приложения. С момента своего появления в 2009 году в качестве реализации Актерской модели на языке Scala Akka была движущей силой некоторых из крупнейших приложений электронной коммерции, таких как Walmart и Gilt Groupe.

Для требовательных сред Akka является идеальным выбором благодаря нескольким основным характеристикам:

  • Изолированная обработка без разделяемой памяти/блокировок, по своей сути параллельная обработка единиц или потоков работы. Эта слабая связь и параллельная обработка позволяют лучше использовать вычислительную мощность и ресурсы.
  • Никаких предположений о местонахождении актора, а также о конфигурации и составе системы акторов — простая модель сообщений и адресов. Это позволяет легко масштабировать и объединять в кластеры с помощью простых изменений конфигурации.
  • Обработка ошибок «Пусть это рухнет». Актер обработки касается только обычных случаев. Условия сбоя обрабатываются контролирующим лицом с помощью четырех вариантов стратегии: остановка, возобновление, перезапуск и эскалация. Это обеспечивает разделение задач, что позволяет субъекту обработки сосредоточиться только на обычных случаях, упрощая и стандартизируя обработку жизненного цикла субъекта для условий сбоя.

Распространение электронной коммерции и облачных сервисов постоянно повышает планку для серверных сервисов. Ожидается, что системы будут поддерживать высокую доступность и быстрое время отклика даже в условиях интенсивного трафика и стрессовых ситуаций. Общей чертой является то, что многие из этих критических систем реализованы с помощью инфраструктуры Akka.

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

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

  • Точный поток выполнения. Трудно отлаживать проблемы, поскольку код выполняется асинхронно, а трудности с определением точного потока выполнения из-за слабой связи между субъектами (сообщения между субъектами не имеют явного стека вызовов) еще больше усугубляют проблему. проблема. Обратные трассировки/трассировки стека не предоставляют много информации (всегда показывают один и тот же субъект, получивший стек сообщений), и метрики обычно не помогают в этом сценарии.
  • Сквозная производительность. Трудно понять производительность каждого запроса от начала до конца, с которой сталкиваются конечные пользователи. Сами акторы представляют собой постоянно работающую систему, которая не имеет определенных границ (кроме жизненных циклов акторов, которые в основном не имеют отношения к производительности конечного пользователя), но большинство запросов все же имеют некоторые границы в виде серии взаимодействий. Получение совокупных метрик в таких фреймворках, как Play, Spray, может дать подсказки, но не достаточно подробностей для исследования проблем на уровне запросов.

К счастью, благодаря новейшей поддержке Akka в Appneta пользователи теперь могут настроить список актеров Akka, за которыми они хотят следить, что позволяет им лучше понимать и устранять проблемы с производительностью Akka с новой точки зрения.

Новый инструментарий не только дает общее представление о среднем времени, затрачиваемом на обработку субъекта, но также предоставляет более подробные сведения о каждом сообщении, обрабатываемом в потоке. Пользователи могут легко определить поток сообщения, проверив «актера-отправителя» и «актера-получателя», а также время, проведенное (время ожидания) в почтовом ящике. Кроме того, эта информация доступна для каждого из сообщений, участвующих в потоке.

Кроме того, на странице сведений о трассировке для каждого запроса отображаются все сообщения Akka, связанные с конкретным запросом. Это дает полную картину всех движущихся частей в системах Akka, включая операции с базами данных и доступ к кешу. Например, на приведенном ниже снимке экрана показана обработка актера Akka и доступ к базе данных Slick, инициированный запросом, отправленным в конечную точку службы HTTP Spray.

Это глубокое понимание родительских веб-запросов и результирующих взаимодействий актеров Akka предоставляется AppNeta по умолчанию. Просто установите Инструментарий AppNeta Scala, добавьте в конфиг актеров, которых вы хотите отследить, и все! Никаких дополнительных изменений конфигурации или кода не требуется, и вы получаете сквозную видимость ваших распределенных приложений Scala.

Мы рады услышать от вас, поэтому, пожалуйста, не стесняйтесь обращаться по адресу [email protected] с вашими комментариями или отзывами.