Расчет доступности микросервисной архитектуры, управляемой событиями

У меня есть 2 микросервиса: «A» создает некоторые данные, которые являются источником событий и реплицируются в микросервисе «B». У меня есть пользовательский интерфейс, который взаимодействует с API, расположенным поверх микросервиса «B», который внутренне использует реплицированные данные из «A». Я сделал расчет доступности отдельно для обоих микросервисов — скажем, 99,5% и 99,8%. Как рассчитать доступность для всей системы? Например, если «A» не работает, а «B» работает, пользователи по-прежнему видят API, работающие из B, хотя и с устаревшими данными из «A». Я не должен был быть первым, кто наткнулся на этот сценарий...


person Sriram Somasuntharam    schedule 13.02.2019    source источник
comment
Вся система имеет: 99,5% x 99,8% = 99,301%   -  person Constantin Galbenu    schedule 13.02.2019
comment
Вы правы для архитектуры на основе SOA, в которой доступность B зависит от доступности A. Как я уже упоминал, у меня есть копия последних данных, которые были получены в результате событий из A в B до того времени, когда A был запущен и работал.   -  person Sriram Somasuntharam    schedule 13.02.2019
comment
Как вы определяете доступность системы? Устаревшие данные означают, что система доступна или недоступна?   -  person Constantin Galbenu    schedule 13.02.2019
comment
Да... в этом и весь смысл обсуждения. Архитектура, управляемая событиями, предоставляет мне эту подушку, чтобы заставить микросервис B работать с последними данными из A. Если A не должен отправлять новые данные между X:00 и Y:00; хотя A не работает, а B работает, технически я отдаю последние данные. Надеюсь, я не первый, кто столкнулся с чем-то подобным.   -  person Sriram Somasuntharam    schedule 13.02.2019
comment
определение доступности основано на вашем бизнесе. Если бизнес считает микрослужбу, которая использует удаленные устаревшие данные, доступной, тогда общая доступность будет минимальной для всех независимых микрослужб.   -  person Constantin Galbenu    schedule 13.02.2019
comment
Архитектурный стиль, управляемый событиями, — это просто деталь реализации. У вас может возникнуть та же проблема, если вы используете задание cron, которое копирует удаленные данные в локальный кеш.   -  person Constantin Galbenu    schedule 13.02.2019


Ответы (1)


Опишем два варианта:

1) Вашему клиенту нужны самые свежие данные (оценка некоторых требований, оценка в режиме реального времени и т. д.): микросервисы зависят друг от друга, поэтому вы должны умножить обе возможности на 99,8 % x 99,5% = 99,3%

2) Вашему клиенту не нужны самые свежие данные (скорее всего, какое-то формирование отчетов): Вы можете заявить о доступности системы на уровне 99,8%.

person Bohdan    schedule 09.04.2020
comment
Так зачем умножать? Вы рассчитали вероятность того, что оба доступны? Вопрос в том, что B показывает устаревшие данные из A. - person Wouter; 09.04.2020