Какие гарантии доставки сообщений может предоставить Aeron?

avatar
rvit34
8 августа 2021 в 17:38
169
2
0

Какие гарантии доставки сообщений предоставляет Aeron в качестве платформы для обмена сообщениями (хотя бы один раз, не более одного раза, ровно один раз)?

Источник

Ответы (2)

avatar
Michael Barker
9 августа 2021 в 04:31
3

Если рассматривать Aeron в этих терминах, это не поможет вам понять, поскольку Aeron отличается гибкостью в отношении параметров надежности, особенно если учитывать также архив и кластер. Лучшим ответом было бы «не более одного раза», но это скрывает много деталей.

Как указано в README.md, Aeron является протоколом уровня 4. Таким образом, параметры надежности аналогичны тем, которые вы получаете с TCP. Потерянные сообщения доставляются повторно до тех пор, пока удаленные концы живы и бьются. Однако это общее требование может быть ослаблено. Для многоузлового распределения (многоадресная рассылка и MDC) настройка управления потоком может повлиять на надежность. Например, использование стратегии max означает, что если один из получателей сообщает, что он обновлен, окно управления потоком может двигаться вперед, а другие более медленные получатели могут в конечном итоге пропустить данные, которые нельзя удалить. Даже при использовании стратегии min более медленные получатели, которые не отвечают достаточно долго, могут выпасть из группы управления потоком и остаться позади. Также есть возможность отключить скрытие от получателей, чтобы любая потеря была восполнена.

Разрешить восстановление в таких ситуациях — вот где на помощь приходит Архив, поскольку он позволяет сохранять сообщения для обеспечения поведения «позднего присоединения». Следовательно, если один раз архив подтвердил, что сообщение сохранено, вы можете считать, что это было «ровно один раз» на практике.

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

avatar
Martin Thompson
9 августа 2021 в 12:27
3

Ни одна система обмена сообщениями не может обеспечить гарантированную доставку без взаимодействия с потребляющим приложением. Это сотрудничество обеспечивается кластерными службами, которые работают с Aeron Cluster.

.

Aeron Archive обеспечивает надежное хранение сообщений, Aeron Cluster расширяет это с помощью протокола Raft для обеспечения отказоустойчивости меньшинства кластера. Для включения конечного приложения требуется сотрудничество, которое реализуют кластерные службы. Это сотрудничество может быть распространено на внешние приложения, но для обеспечения гарантий требуются специальные навыки и понимание.