На этот раз полностью поймите протокол ZooKeeper.
На этот раз полностью поймите протокол ZooKeeper.

Ставьте лайк и читайте еще раз, Java продвинута более чем наполовину

ZooKeeper означает зоопарк. В 2012 году чиновник написал такой интересный «ZooKeeper Way» для ZooKeeper. Неудивительно, что ZooKeeper сейчас так хорошо развивается.

Работники зоопарка преданы животным, находящимся под их опекой, и посетителям, которые их посещают. Они следуют кодексу, известному до сих пор только их сверстникам, который обеспечивает безопасность животных и посетителей.

  • ZooKeeper следит за порядком
  • ZooKeeper надежен
  • ZooKeeper работает эффективно
  • ZooKeeper очень пунктуален.
  • ZooKeeper избегает споров
  • У ZooKeeper нет амбиций

Привет всем, я брат Нэн.

Будучи лидером в изучении и продвижении Java, я считаю, что вам будет полезно пройти собеседование и получить предложение о работе в той компании, которую вы хотите.

⭐⭐Эта статья включена в《JavaРасширенное руководство по обучению》:https://github.com。。

1. Протокол ZooKeeper

1.1 Протокол ЗАБ

Интервьюер: Вы знаете соглашение ZAB?

Прежде чем подробно изучать ZooKeeper, брат Нэн считает, что мы должны сначала изучить основную концепцию ZooKeeper. Все действия ZooKeeper сосредоточены вокруг этого ядра. Сказав так много, это протокол ZAB.

Полное английское название протокола ZAB — ZooKeeper Atomic Broadcast. Примерно понять, что он делает, можно через китайское значение: ZooKeeper Atomic Message Broadcast Protocol.

Давайте посмотрим на объяснение атомного радиовещания в Википедии.

В отказоустойчивых распределенных вычислениях атомарная широковещательная рассылка или широковещательная рассылка полного порядка — это широковещательная рассылка, при которой все правильные процессы в многопроцессной системе получают один и тот же набор сообщений в одном и том же порядке (т. Е. Ту же последовательность сообщений).

Так что же такое ZooKeeperтранслировать? Мы знаем, что в кластере ZooKeeper есть сервер-лидер и сервер-последователь.,этотLeaderСервер получает все данные клиентазапрос транзакции,обработка запроса может быть новым узлом ZNode,Вы также можете удалить определенный узел ZNode.

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

Протокол ZAB в основном включает в себя широковещательную рассылку сообщений и режим сбоя. Следуйте за братом Наном, чтобы посмотреть ниже.

1.2 Трансляция сообщений

Интервьюер: Можете ли вы рассказать мне о выпуске новостей?

ЗАБ-протоколновоститранслировать Похоже на:Двухэтапный процесс подачи。Как следует из названия, окончательное представление транзакции разделено на два этапа.。

Процесс трансляции сообщения выглядит следующим образом:

(1) запрос для клиентов транзакции,Сервер Лидер сгенерирует для него соответствующее Предложение транзакции.,в то же времятранслироватьк остальной части кластераFollowrмашина。этот事务ProposalМы можем понимать это как предложение о сделке.。

(2) После получения предложения транзакции ведомый сервер запишет его на локальный диск в виде журнала транзакций. Если запись прошла успешно, он отправит подтверждение ведущему серверу.

(3) Сервер-лидер будет собирать голоса с других серверов-последователей.,толькополовинаизFollowСервер согласен на этозапрос транзакции,ЧтоLeaderСервер будеттранслироватьодинCommitинформация,Уведомите все последовательные серверы о необходимости фиксации транзакций.

Подводя итог, он разделен на два этапа. Первый этап — выяснить, может ли попытка записи предложения транзакции быть успешной. Второй этап — зафиксировать транзакцию на сервере-лидере и сервере-последователе.

1.3 Недостатки широковещательной передачи сообщений

Интервьюер: Есть ли какие-либо недостатки у подачи на втором этапе?

Конечно, двухэтапная передача широковещательного сообщения имеет недостатки.

(1) Если на втором этапе широковещательной рассылки сообщения некоторые последующие серверы не получат сообщение о фиксации транзакции, переданное ведущим сервером, произойдет несогласованность данных.

(2) Одноточечная проблема. Если сервер-лидер выйдет из строя на втором этапе, другие серверы-последователи все равно будут находиться в состоянии блокировки ресурсов последней транзакции.

(3) Проблема синхронной блокировки. При участии в запросе клиентской транзакции другая логика серверов ведущего и ведомого должна быть заблокирована и не начнет выполнение до тех пор, пока не будет завершена предыдущая двухфазная передача.

1.4. Аварийный режим.

Интервьюер: А как насчет аварийного режима?

ЗАБ-протокол включает в себя сервер-лидер и сервер-последователь.,Leaderсервер充当了最重要из作用。еслиLeaderсерверкрахприобретенное или потерянное иFollwerсервер之间из联系,Тогда, вероятно, возникнут различные проблемы, упомянутые братом Наном выше во время подчинения на втором этапе.

Разве я не говорил вначале, что протокол ZAB включает в себя широковещательную рассылку сообщений и режим сбоя? Не паникуйте, для этого и нужен аварийный режим.

В общем, режим сбоя выполняет две задачи. Мы помним эти два момента для простоты понимания: один — гарантировать, что Предложение транзакции, отправленное Лидером, отправлено, а другой — отменить Пропущенное Предложение транзакции. .

(1) Чтобы решить проблему, указанную в пункте 1 выше. Сервер-лидер подготовит очередь сообщений предложения для каждого сервера-последователя и отправит через эту очередь предложения по транзакциям, которые не были синхронизированы каждым сервером-последователем. В то же время после сообщения предложения будет добавлено сообщение фиксации, чтобы разрешить ведомому серверу. сервер для фиксации транзакции. Это может решить проблему несогласованности данных, вызванную двухэтапной отправкой.

(2) Чтобы решить проблему, указанную в пункте 2 выше. ZooKeeper разработал старшую 32-битную эпоху для использования в качестве идентификатора ведущего сервера; он разработал низкое 32-битное смещение транзакции ZXID, которое будет использоваться в качестве смещения последней зафиксированной транзакции.

После того, как новый сервер-лидер подключится к сети, новый сервер-лидер будет иметь наибольшее смещение транзакции в кластере. Сервер-лидер сравнит его с ZXID сервера-ведомого, что позволит серверу-ведомому откатить предложение пропущенной транзакции.

Нажмите здесь, «JavaProGuide» — это расширенное руководство по изучению Java, которое охватывает основные знания, необходимые Java-программистам, и ключевые моменты собеседований.

добро пожаловатьсосредоточиться на Брат Нэниз公众号:Расширенный компас Java。公众号里有Брат Нэн珍藏整理из大量优秀pdfкниги!

Я Брат Нэн, Нэн — это Нэн. Я нашла ваши интересные комментарии на Get➕Like➕Follow.

Я участвую в последнем конкурсе эссе для специального учебного лагеря Tencent Technology Creation 2024. Приходите и разделите со мной приз!

Творить непросто, поэтому вы можете ставить лайки, собирать и подписываться, чтобы поддержать его. Ваша поддержка — самая большая мотивация для моего творчества.❤️

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose