Skip to content

Latest commit

 

History

History
65 lines (48 loc) · 3.56 KB

technical-details.md

File metadata and controls

65 lines (48 loc) · 3.56 KB

Technical details

Frameworks

Взаимодействие компонентов (Actors) происходит по RPC протоколам, и компоненты должны поддерживать определеный набор поведений. Обеспечить поддержку требований в приложении помогает фреймворк.

Worker lifecycle

В какой-то момент engine::balance понимает, что нужно запустить новый воркер. Slave_t читает поле slave из манифеста, и указанный там путь запускает с аргументами --app, --locator, --endpoint, --uuid. Например, так:

relative/path/to/slave --app app-name --locator 1.2.3.4:10053 --endpoint /path/to/unix.sock --uuid aa-bb-bb-cc-cc-cc-dd-dd

После этого engine ждет соедининия на сокет, переданный в endpoint в течение startup-timeout. Воркер должен законнетиться на сокет, переданный в endpoint, и отправить handshake сообщение. После этого воркер считается успешно поднявшимся. Когда воркер готов обрабатывать входящие сообщения, он отправляет heartbeat сообщение, и после этого engine начинает отправлять входящие сообщения в инстанс.

В какой-то момент воркер может понять, что ему нужно завершиться. Чтобы это сделать корректно, он отправляет terminate сообщение рантайму с кодом "все хорошо", после чего может завершить свой процесс. Если воркер после отправки terminate не завершается, рантайм ему отправляет SIGTERM.

В другом случае, когда воркер работает, а cocaine-runtime понимает что ему нужно завершить определенного воркера, cocaine-runtime отправляет terminate. Воркер должен в течении terminate-timeout завершить свою работу и прислать в рантайм ответный terminate, после чего он может завершить процесс. После ответного terminate воркера, если воркер не завершился сам, cocaine-runtime отправляет ему SIGTERM.

Client requirements

Клиент сервиса (а доступ к приложениям происходит через сервис) делает следующие действия:

  1. Резолвит имя сервиса в адрес ендпоинта (обычно tcp) локаторе.
  2. Коннектится на ендпоинт сервиса.
  3. Отправляет и получает сообщения от сервиса.

Соединение к сервису поддерживается. В это время сервис может завершится, рестартовать, или появиться новая версия. Поэтому клиент должен обрабатывать эти ошибки.

Request balancing

IPVS

engine::balance

TODO Special Capabilities

Routing groups

cocaine-tool

cocaine-http-proxy

IPVS plugin