kw shards
Контекстное слово — объявление кластера (§12.1)
Список слов: §1.4
Синтаксис
RoleClause = "serves" IdentList | "hosts" IdentList | "runs" ( "sagas" | "leader" "(" StrLit ")" )
| "journal" | "shards" IntLit | "replication" IntLit | "replicas" Expr
| "needs" Expr | "expose" IntLit { Expr } ;Грамматика: Прил. A
Определяется в
- 12.1 Объявление кластера — В программе не больше одного cluster.
- 12.4 Шарды — Встроенное хранилище делится на shards виртуальных шардов (задаётся один раз).
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 6.5 Ошибки — Исключений нет. Ошибка — значение типа, помеченного @error, возвращаемое через объединение.
- 12.8 Встроенное хранилище и таблицы — Хранилище на каждом узле роли journal, репликация — Raft на шард.
- 12.6 Распределённые вычисления — cluster.shards(src) — для шардированных таблиц и акторов; map выполняется рядом с данными, функция ДОЛЖНА быть передаваемой (§7.3).
Примеры
let byRegion = cluster.shards(db.Order)
.map(o => (o.region, o.total)) // выполняется на владельцах шардов
.reduceBy(.0, (a, b) => a + b) // частичная агрегация, затем слияние
within REPORT_DEADLINE
cluster.leader("nightly-report") { every(REPORT_PERIOD) { buildReport() } }
cluster.lock("user:{uid}", ttl: LOCK_TTL) { migrateUser(uid) }— 12.6 Распределённые вычисления
Связанные диагностики
actor-not-hosted, cluster-auth, cluster-decl, cluster-needs, cluster-seeds, placement-conflict, saga-without-role, service-not-served, topic-without-journal, unknown-role, fail-type, question-context, unhandled-error, query-not-sql