Как Apache Apex справляется с противодавлением?

Репост от [email protected]

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


person Community    schedule 22.04.2016    source источник


Ответы (1)


Буферный сервер — это механизм публикации и подписки на платформе Apex, который используется для потоковой передачи данных между операторами. Буферный сервер всегда находится в том же контейнере, что и вышестоящий оператор (один буферный сервер на контейнер, независимо от количества операторов в контейнере); и вывод вышестоящего оператора записывается на буферный сервер. Текущий оператор подписывается с буферного сервера вышестоящего оператора при подключении потока.

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

Если по какой-либо причине буферный сервер выходит из строя, контейнер, в котором находится буферный сервер, выходит из строя. Таким образом, все операторы в контейнере и их подчиненные операторы повторно развертываются с последней известной контрольной точки.

person ashwin111    schedule 23.04.2016