1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/servicecomb-ServiceComb-Saga

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
fsm_manual_zh.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 19:57 3f3f95f

Состояние машины

В версии 0.5.0 ServiceComb Pack мы начали использовать модель состояния машины для решения сложных отношений между событиями и состояниями в распределённых транзакциях. Мы рассматриваем Alpha как ящик, который может записывать различные состояния каждой глобальной транзакции. После получения сообщения о транзакции (запуск глобальной транзакции, остановка глобальной транзакции, сбой глобальной транзакции, запуск субтранзакции, остановка субтранзакции, сбой субтранзакции и т. д.) от Omega, Alpha выполняет некоторые действия (ожидание, компенсация, тайм-аут) и переключает состояние.

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

Важные обновления

  • Использование Akka State Machine вместо основанного на сканировании таблицы определения состояния.
  • Повышение производительности на порядок, пропускная способность событий составляет более 18 000 в секунду, а обработка глобальных транзакций — более 1200 в секунду.
  • Встроенный сборщик показателей работоспособности для чёткого понимания узких мест системы.
  • Поддержка распределённого кластера.
  • Прямая совместимость с существующим протоколом gRPC.
  • Совершенно новый интерфейс визуализации мониторинга.
  • Открытие совершенно нового API.

Быстрый старт

С версии 0.5.0 ServiceComb Pack поддерживает режим Saga State Machine. Вам нужно только добавить параметр alpha.spec.names=saga-akka при запуске Alpha и параметр omega.spce.names=saga при запуске программы на стороне Omega. Вы можете найти файл docker-compose в docker hub, или вы можете развернуть его следующим образом.

Примечание: после включения режима состояния машины, Saga транзакция будет работать в режиме состояния машины, TCC по-прежнему использует метод базы данных. Примечание: версия 0,6,0+ программе на стороне Omega не требуется настраивать параметр alpha.feature.akka.enabled=true.

  • Запустите PostgresSQL:
docker run -d -e "POSTGRES_DB=saga" -e "POSTGRES_USER=saga" -e "POSTGRES_PASSWORD=password" -p 5432:5432 postgres
  • Запустите Elasticsearch:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.1
  • Запустите Alpha:
java -jar alpha-server-${version}-exec.jar \
    --spring.datasource.url=jdbc:postgresql://0.0.0.0:5432/saga?useSSL=false \
    --spring.datasource.username=saga \
    --spring.datasource.password=password \
    --alpha.spec.names=saga-akka \
    --alpha.spec.saga.akka.channel.name=memory \
    --alpha.spec.saga.akka.repository.name=elasticsearch \
    --alpha.spec.saga.akka.repository.elasticsearch.uris=http://127.0.0.1:9200 \
    --spring.profiles.active=prd  

Интерфейс управления WEB

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

Панель инструментов

На панели инструментов в верхней части отображается количество уже завершённых глобальных транзакций:

TOTAL: общее количество транзакций; SUCCESSFUL: количество успешно завершённых транзакций; COMPENSATED: количество успешно компенсированных транзакций; FAILED: количество неудачных (приостановленных) транзакций.

Active Transactions: счётчик активных транзакций

COMMITTED: количество успешных транзакций, которые были завершены с момента запуска; COMPENSATED: количество компенсированных транзакций с момента запуска; SUSPENDED: количество приостановленных транзакций с момента запуска.

Активные компоненты транзакций: счётчики компонентов

Events, Actors, Sagas, DB — это группа счётчиков, каждый из которых показывает количество обработчиков каждого компонента обработки в системе Alpha, количество обработчиков до и после обработки, а также среднее время обработки события. Отслеживая эти индикаторы, можно понять текущую производительность и узкие места системы.

События: отображают количество полученных, обработанных и отклонённых событий Alpha, а также среднее время обработки каждого события. Actors: отображают количество событий, полученных состоянием машины, количество обработанных событий, количество отклонённых событий и среднее время обработки каждого события. Sagas: отображают начальное количество глобальных транзакций, конечное количество глобальных транзакций и среднее время обработки каждой глобальной транзакции. DB: отображает количество глобальных транзакций, завершившихся в Elasticsearch, и количество глобальных транзакций, сохранённых в Elasticsearch.

Top 10 Slow Transactions: показывает 10 самых медленных транзакций. При нажатии на них можно увидеть подробную информацию об этих медленных транзакциях. System Info: показывает текущую информацию о системе, JVM, потоках и т.д. Alpha-сервиса.

Обратите внимание: значения индикаторов в Active Transactions сбрасываются после перезапуска.

Список транзакций Saga

Список транзакций Saga может отображать все завершённые глобальные транзакции, включая идентификатор службы, идентификатор экземпляра службы, идентификатор глобальной транзакции, количество включённых субтранзакций, время выполнения и окончательное состояние завершения (успешная отправка, успешная компенсация, приостановка). Вы также можете искать конкретную глобальную транзакцию в поле поиска в верхней части и быстро находить её.

Детали глобальной транзакции

Детали глобальной транзакции могут отображать информацию о событиях и субтранзакциях этой глобальной транзакции.

Панель событий: подробная информация о типе события, времени события, идентификаторе службы и идентификаторе экземпляра службы, отправивших событие.

Субтранзакции: панель: идентификатор субтранзакции этой глобальной транзакции, статус субтранзакции, время выполнения субтранзакции и другая подробная информация.

Успешное завершение глобальной транзакции

При нажатии на стрелку вниз в правом нижнем углу карточки события можно увидеть информацию о методе компенсации этого события.

Завершение глобальной транзакции с компенсацией

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

Неуспешное завершение глобальной транзакции — приостановление из-за тайм-аута

Из-за установленного тайм-аута в 5 секунд и отсутствия сообщений о завершении в течение 5 секунд эта транзакция находится в состоянии приостановки.

Неудачное завершение глобальной транзакции — непредвиденная приостановка

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

Кластер

Необходимо загрузить основной код и скомпилировать версию 0.6.0 самостоятельно.

Зависимость от Kafka и Redis позволяет нам развернуть кластер Alpha с распределённой обработкой. Кластер Alpha основан на Akka Cluster Sharding и Akka Persistence для динамических вычислений и самовосстановления после сбоев.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/servicecomb-ServiceComb-Saga.git
git@api.gitlife.ru:oschina-mirror/servicecomb-ServiceComb-Saga.git
oschina-mirror
servicecomb-ServiceComb-Saga
servicecomb-ServiceComb-Saga
master