<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Учеба on PIG.CENTER</title><link>https://pig.center/ru/docs/etcd/learning/</link><description>Recent content in Учеба on PIG.CENTER</description><generator>Hugo</generator><language>ru-RU</language><lastBuildDate>Tue, 08 Sep 2026 21:29:01 +0800</lastBuildDate><atom:link href="https://pig.center/ru/docs/etcd/learning/index.xml" rel="self" type="application/rss+xml"/><item><title>Модель данных</title><link>https://pig.center/ru/docs/etcd/learning/data_model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/data_model/</guid><description>&lt;p&gt;etcd предназначен для надёжного хранения редко обновляемых данных и выполнения надёжных запросов наблюдения. etcd предоставляет предыдущие версии пар «ключ — значение», поддерживая недорогие снимки и историю событий наблюдения («запросы с перемещением во времени»). Для этих сценариев хорошо подходит постоянная многоверсионная модель данных с управлением параллелизмом.&lt;/p&gt;&#10;&lt;p&gt;etcd хранит данные в многоверсионном &lt;a href="https://en.wikipedia.org/wiki/Persistent_data_structure"&gt;постоянном&lt;/a&gt;&#10; хранилище ключей и значений. Когда значение пары заменяется новыми данными, постоянное хранилище сохраняет её предыдущую версию. Фактически хранилище неизменяемо: операции не обновляют структуру на месте, а всегда создают новую обновлённую структуру. После изменения все прежние версии ключей остаются доступными для чтения и наблюдения. Чтобы хранилище не росло бесконечно и не сохраняло старые версии, его можно компактизировать, удалив самые старые версии замещённых данных.&lt;/p&gt;</description></item><item><title>Конструкция клиента etcd</title><link>https://pig.center/ru/docs/etcd/learning/design-client/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/design-client/</guid><description>&lt;h1 id="etcd-client-design"&gt;Конструкция клиента etcd&#10;&lt;/h1&gt;&#10;&lt;p&gt;&lt;em&gt;Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.)&lt;/em&gt;&lt;/p&gt;&#10;&lt;h1 id="introduction"&gt;Введение&#10;&lt;/h1&gt;&#10;&lt;p&gt;Сервер etcd доказал свою надёжность многолетним тестированием с внедрением отказов. Большая часть сложной логики приложений уже обрабатывается сервером etcd и его хранилищами данных (например, состав кластера прозрачен для клиентов, а уровень Raft пересылает предложения лидеру). Хотя серверные компоненты корректны, их взаимодействие с клиентом требует иного набора сложных протоколов, обеспечивающих корректность и высокую доступность в условиях отказов. В идеале сервер etcd представляет множество физических машин как единый логический кластер, а клиент реализует автоматическое переключение между репликами при отказе. В этом документе описаны архитектурные решения клиента и подробности их реализации.&lt;/p&gt;</description></item><item><title>Конструкция обучающегося участника etcd</title><link>https://pig.center/ru/docs/etcd/learning/design-learner/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/design-learner/</guid><description>&lt;h1 id="etcd-learner"&gt;Обучающийся участник etcd&#10;&lt;/h1&gt;&#10;&lt;p&gt;&lt;em&gt;Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.)&lt;/em&gt;&lt;/p&gt;&#10;&lt;h1 id="background"&gt;Предпосылки&#10;&lt;/h1&gt;&#10;&lt;p&gt;Изменение состава кластера остаётся одной из крупнейших эксплуатационных сложностей. Рассмотрим типичные проблемы.&lt;/p&gt;&#10;&lt;h3 id="1-new-cluster-member-overloads-leader"&gt;1. Новый участник кластера перегружает лидера&#10;&lt;/h3&gt;&#10;&lt;p&gt;Только что присоединившийся участник etcd начинает без данных и потому требует больше обновлений от лидера, пока не догонит его журнал. Из-за этого сеть лидера с большей вероятностью окажется перегружена, а его сигналы активности последователям будут заблокированы или отброшены. Тогда у последователя может истечь тайм-аут выборов, и он начнёт новые выборы лидера. Таким образом, кластер с новым участником более подвержен выборам лидера. И сами выборы, и последующее распространение обновлений новому участнику могут вызывать периоды недоступности кластера (см. &lt;em&gt;рисунок 1&lt;/em&gt;).&lt;/p&gt;</description></item><item><title>Конструкция аутентификации etcd v3</title><link>https://pig.center/ru/docs/etcd/learning/design-auth-v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/design-auth-v3/</guid><description>&lt;h2 id="why-not-reuse-the-v2-auth-system"&gt;Почему не используется система аутентификации v2?&#10;&lt;/h2&gt;&#10;&lt;p&gt;Вместо RESTful-интерфейса, как в v2, протокол v3 использует gRPC в качестве транспорта. Новый протокол даёт возможность развить и улучшить конструкцию v2. Например, аутентификация v3 выполняется для соединения, а не для каждого запроса, как более медленная аутентификация v2. Кроме того, на практике семантика аутентификации v2 неудобна для рассуждений о согласованности, что будет описано в следующих разделах. Для v3 существует чёткое описание и реализация механизма аутентификации, устраняющие недостатки системы v2.&lt;/p&gt;</description></item><item><title>API etcd</title><link>https://pig.center/ru/docs/etcd/learning/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/api/</guid><description>&lt;p&gt;Этот документ содержит обзор основной конструкции API etcd v3.&#10;Не следует путать его с API etcd v2, объявленным устаревшим в etcd v3.5.&#10;Документ не претендует на полноту, а сосредоточен на основных идеях, необходимых для понимания etcd, без отвлечения на менее распространённые вызовы API.&#10;Все API etcd определены в &lt;a href="https://github.com/etcd-io/etcd/blob/main/api/etcdserverpb/rpc.proto"&gt;службах gRPC&lt;/a&gt;&#10;, которые группируют удалённые вызовы процедур (RPC), распознаваемые сервером etcd.&#10;Полный перечень RPC etcd приведён в формате Markdown в &lt;a href="https://pig.center/ru/docs/etcd/dev-guide/api_reference_v3/"&gt;справочнике API gRPC&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Файлы постоянного хранилища etcd</title><link>https://pig.center/ru/docs/etcd/learning/persistent-storage-files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/persistent-storage-files/</guid><description>&lt;p&gt;В этом документе описан формат постоянного хранилища etcd: именование, содержимое и инструменты, позволяющие разработчикам исследовать файлы. В дальнейшем документ следует дополнять по мере изменений модели хранения. Он предназначен для разработчиков etcd и помогает при восстановлении данных.&lt;/p&gt;&#10;&lt;h2 id="prerequisites"&gt;Предварительные сведения&#10;&lt;/h2&gt;&#10;&lt;p&gt;Для понимания документа полезны следующие вводные материалы:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/data_model/"&gt;обзор модели данных etcd&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://raft.github.io/raft.pdf"&gt;обзор Raft&lt;/a&gt;&#10; (особенно раздел &amp;ldquo;5.3 Log replication&amp;rdquo;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="overview"&gt;Обзор&#10;&lt;/h2&gt;&#10;&lt;h3 id="long-leaving-files"&gt;Долгоживущие файлы&#10;&lt;/h3&gt;&#10;&lt;table&gt;&#10; &lt;tr&gt;&#10; &lt;th&gt;Имя файла&lt;/th&gt;&#10; &lt;th&gt;Высокоуровневое назначение&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;pre&gt;./member/snap/db&lt;/pre&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/B%2B_tree"&gt;b+tree&lt;/a&gt; bbolt&lt;/strong&gt;, хранящее все применённые данные, сведения об авторизации состава кластера и метаданные. Оно знает последний применённый индекс журнала WAL (&lt;a href="https://github.com/etcd-io/etcd/blob/a1ff0d5373335665b3e5f4cb22a538ac63757cb6/server/etcdserver/cindex/cindex.go#L92"&gt;"consistent_index"&lt;/a&gt;).&#10; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;pre&gt;./member/snap/0000000000000002-0000000000049425.snap&#10;./member/snap/0000000000000002-0000000000061ace.snap&lt;/pre&gt;&#10; &lt;/td&gt;&#10; &lt;td&gt;&#10; &lt;p&gt;&#10; Периодические &lt;strong&gt;снимки устаревшего хранилища v2&lt;/strong&gt;, содержащие:&#10; &lt;ul&gt;&#10; &lt;li&gt;основные сведения о составе кластера&lt;/li&gt;&#10; &lt;li&gt;версию etcd&lt;/li&gt;&#10; &lt;/ul&gt;&#10; &lt;/p&gt;</description></item><item><title>Гарантии API etcd</title><link>https://pig.center/ru/docs/etcd/learning/api_guarantees/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/api_guarantees/</guid><description>&lt;p&gt;etcd — согласованное и долговечное хранилище ключей и значений.&#10;Доступ к нему предоставляют &lt;a href="https://pig.center/ru/docs/etcd/learning/api/#grpc-services"&gt;службы gRPC&lt;/a&gt;&#10;.&#10;etcd обеспечивает наиболее строгие гарантии согласованности и долговечности&#10;для распределённой системы. В этой спецификации перечислены гарантии API etcd.&lt;/p&gt;&#10;&lt;h3 id="apis-to-consider"&gt;Рассматриваемые API&#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;KV APIs&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#range"&gt;Range&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#rangestream"&gt;RangeStream&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#put"&gt;Put&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#delete-range"&gt;Delete&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#transaction"&gt;Transaction&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;API наблюдения&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#watch-api"&gt;Watch&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;API аренды&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#obtaining-leases"&gt;Grant&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;[Отзыв][Revoke]&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/etcd/learning/api/#keep-alives"&gt;Keep alive&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;API KV позволяет напрямую читать и изменять хранилище ключей и значений.&#10;API наблюдения позволяет подписываться на изменения хранилища.&#10;API аренды позволяет назначать ключу время существования.&lt;/p&gt;</description></item><item><title>etcd в сравнении с другими хранилищами ключей и значений</title><link>https://pig.center/ru/docs/etcd/learning/why/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/why/</guid><description>&lt;p&gt;Название «etcd» образовано из двух идей: каталога Unix «/etc» и распределённых&#10;(«d»istributed) систем. В «/etc» хранятся данные конфигурации одной системы,&#10;тогда как etcd хранит конфигурацию крупных распределённых систем. Поэтому&#10;распределённый («d»istributed) «/etc» называется «etcd».&lt;/p&gt;&#10;&lt;p&gt;etcd задуман как универсальная основа крупных распределённых систем. Такие&#10;системы не допускают split-brain и готовы ради этого пожертвовать доступностью.&#10;etcd хранит метаданные согласованно и отказоустойчиво. Кластер etcd предоставляет&#10;хранилище ключей и значений с высокой стабильностью, надёжностью, масштабируемостью&#10;и производительностью.&lt;/p&gt;</description></item><item><title>Глоссарий</title><link>https://pig.center/ru/docs/etcd/learning/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/etcd/learning/glossary/</guid><description>&lt;p&gt;Этот документ определяет различные термины, используемые в документации, командной строке и исходном коде etcd.&lt;/p&gt;&#10;&lt;h2 id="alarm"&gt;Аварийный сигнал&#10;&lt;/h2&gt;&#10;&lt;p&gt;Сервер etcd подаёт аварийный сигнал, когда для сохранения надёжности кластера требуется вмешательство оператора.&lt;/p&gt;&#10;&lt;h2 id="authentication"&gt;Аутентификация&#10;&lt;/h2&gt;&#10;&lt;p&gt;Аутентификация управляет правами доступа пользователей к ресурсам etcd.&lt;/p&gt;&#10;&lt;h2 id="client"&gt;Клиент&#10;&lt;/h2&gt;&#10;&lt;p&gt;Клиент подключается к кластеру etcd и отправляет служебные запросы: получает пары «ключ — значение», записывает данные или наблюдает за обновлениями.&lt;/p&gt;</description></item></channel></rss>