From 67dbffdfc822878eb8b0e22f265a1e03d6d91e86 Mon Sep 17 00:00:00 2001 From: Yaroslav Dynnikov <yaroslav.dynnikov@gmail.com> Date: Wed, 25 Jan 2023 01:47:49 +0300 Subject: [PATCH] doc: review rpc::join in clustering.md --- docs/clustering.md | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/docs/clustering.md b/docs/clustering.md index 4d319f743a..395fffef5b 100644 --- a/docs/clustering.md +++ b/docs/clustering.md @@ -198,7 +198,7 @@ governor](#Topology-governor), также называемый `governor_loop`. Ðргументом Ð´Ð»Ñ Ð½ÐµÐµ ÑвлÑетÑÑ ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтруктура: ```rust -struct join::Request { +struct rpc::join::Request { cluster_id: String, instance_id: Option<String>, replicaset_id: Option<String>, @@ -207,10 +207,10 @@ struct join::Request { } ``` -Ответом Ñлужит Ñтруктура: +Ответом Ñлужит такаÑ: ```rust -struct JoinResponse { +struct rpc::join::OkResponse { /// Добавленный инÑÑ‚Ð°Ð½Ñ (чтобы знать вÑе ID) instance: Instance, /// ГолоÑующие узлы (чтобы добавлÑемый инÑÑ‚Ð°Ð½Ñ Ð¼Ð¾Ð³ наладить контакт) @@ -231,33 +231,25 @@ struct Instance { peer_address: String, failure_domain: FailureDomain, - // Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ¸ ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¸Ð½ÑтанÑа Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ Ð·Ñ€ÐµÐ½Ð¸Ñ Ð»Ð¸Ð´ÐµÑ€Ð° клаÑтера - target_grade: CurrentGrade, + // текущий и целевой грейды current_grade: CurrentGrade, - - /// Ð˜Ð½Ð´ÐµÐºÑ Ð·Ð°Ð¿Ð¸Ñи в Raft-журнале. ПрепÑÑ‚Ñтвует затиранию - /// более Ñтарыми запиÑÑми по мере Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Raft-журнала. - commit_index: RaftIndex, + target_grade: TargetGrade, } ``` Цель такого запроÑа ÑводитÑÑ Ðº добавлению нового инÑтанÑа в Raft-группу. Ð”Ð»Ñ Ñтого алгоритма Ñправедливы Ñледующие тезиÑÑ‹: -- `join::Request` отправлÑет вÑегда неинициализированный инÑтанÑ. -- Ð’ завиÑимоÑти от того, ÑодержитÑÑ Ð»Ð¸ в запроÑе `instance_id`, - проводитÑÑ Ð°Ð½Ð°Ð»Ð¸Ð· его корректноÑти (уникальноÑти). +- Ð—Ð°Ð¿Ñ€Ð¾Ñ `rpc::join` вÑегда делает инÑÑ‚Ð°Ð½Ñ Ð±ÐµÐ· Ñнапшотов. - Ð’ процеÑÑе обработки запроÑа в Raft-журнал добавлÑетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ - `op::PersistPeer { peer }`, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾Ð¼Ð¸Ð¼Ð¾ вÑевозможных ID Ñодержит - Ð¿Ð¾Ð»Ñ `current_grade: Offline`, `target_grade: Offline`, играющие - важную роль в обеÑпечении надежноÑти клаÑтера (подробнее о них в - разделе [topology governor](#Topology-governor)). + `op::PersistPeer { peer }`, при Ñтом `current_grade: Offline`, + `target_grade: Offline` (подробнее о них в разделе [topology + governor](#Topology-governor)). - Ð’ ответ выдаетÑÑ Ð²Ñегда новый `raft_id`, никому другому ранее не принадлежавший. -- Генерировать значение `raft_id` может только лидер Raft-группы. -- Помимо вÑевозможных ID, ответ Ñодержит ÑпиÑок голоÑующих членов - Raft-группы. Они понадобÑÑ‚ÑÑ Ð½Ð¾Ð²Ð¾Ð¼Ñƒ инÑтанÑу Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы знать - адреÑа ÑоÑедей и общатьÑÑ Ñ Ð½Ð¸Ð¼Ð¸. +- Помимо идентификаторов нового инÑтанÑа, ответ Ñодержит ÑпиÑок + голоÑующих членов Raft-группы. Они необходимы новому инÑтанÑу Ð´Ð»Ñ + того чтобы отвечать на запроÑÑ‹ от Raft-лидера. - Также ответ Ñодержит параметр `box_replication`, который требуетÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¹ наÑтройки репликации. -- GitLab