aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2023-04-21 12:28:54 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2023-04-21 12:28:54 +0300
commit9ee06352e3ca85c021cb643d0c7ff220225c120a (patch)
treeac2c4169ae9a9e031c03e3ebe51c6187b3fbdd0f /library/cpp
parenta08e0a5833f8ed85b8239f229bac8cf72ce558a6 (diff)
downloadydb-9ee06352e3ca85c021cb643d0c7ff220225c120a.tar.gz
Intermediate changes
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/actors/README.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/cpp/actors/README.md b/library/cpp/actors/README.md
index abbf5cd2134..22502c391ae 100644
--- a/library/cpp/actors/README.md
+++ b/library/cpp/actors/README.md
@@ -17,7 +17,7 @@
В более хайповых терминах – очень похоже на колокейтед микросервисы, только уровнем ниже. И да, мы заведомо не хотели прятать асинхронщину и параллелизм от разработчика, показывая прям самое мясо.
### IActor.
-https://a.yandex-team.ru/arc/trunk/arcadia/library/actors/core/actor.h?rev=5315854#L105
+https://a.yandex-team.ru/arcadia/library/cpp/actors/core/actor.h?rev=r11291267#L310
Базовый класс всех агентов, напрямую обычно не используется. Инстанцируется либо TActor, либо TActorBootstrapped. Фактически весь полезный код программы размещается в акторах.
(важное замечание – в коде увидите ручки с TActorContext и без него, схожие по названию и назначению. На данный момент вариант с TActorContext является устаревшим, новый код стоит писать без его использования).
Важные методы:
@@ -103,5 +103,5 @@ cFunc – макрос выбора хендлера, не передающий
Мультиплексировать разные потоки (ака каналы) в рамках одного соединения, гарантируя порядок в рамках канала
Старается делать это хорошо.
В рамках распределённой системы требуется каждой локальной акторсистеме назначить уникальный номер (например табличкой или реализовав динамическую раздачу номеров ноды) и запустить в рамках каждой локальной акторсистемы локальный неймсервис (например по табличке ремапинга номера ноды в сетевой адрес либо как кеш опорного неймсервиса).
-Смотрим на второй пример https://a.yandex-team.ru/arc/trunk/arcadia/library/actors/examples/02_discovery
+Смотрим на второй пример https://a.yandex-team.ru/arcadia/library/cpp/actors/examples/02_discovery
Тут у нас конфигурируется распределённая акторсистема (в примере все пять запускаются в одном бинарнике, но точно так же – можно запускать и частями) на пять нод. На каждой ноде запускается реплика для паблишинга строчек и актор-эндпоинт (каждый со своим портом). Эндпоинты с помощью актора-паблишера публикуют свои явки/пароли на распределённый сторадж (с обработкой нештатных ситауций и поддержанием в актуальном состоянии). И рядом лежит реализация запроса к стораджу на листинг опубликованого по мажорити. Собственно это упрощённый и почищенный от специфики код, используемый в YDB для публикации и нахождения актуальных эндпоинтов пользовательской базы.