Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 9508|Отговор: 2

Разпределена заключваща реализация на Zookeeper

[Копирай линк]
Публикувано в 20.03.2018 г. 16:23:52 ч. | | | |
Дизайн на шлюза

  Разберете идеята за реализация на заключването:
1. Започнете, като създадете директория като заключване (znode), което обикновено се използва за описание на заключената единица, наречена :/lock_node
2. Клиентът, който иска да получи заключването, създава znode в директорията с заключване като дъщерен възел на lock/lock_node, а типът възел е Ordered Temporary Node (EPHEMERAL_SEQUENTIAL);
Например, два клиента създават znode, /lock_node/lock-1 и /lock_node/lock-2
3. Текущият клиент извиква getChildren(/lock_node), за да получи всички дъщерни възли на директорията с заключване, без да задава watch, и след това да вземе братските възли, които са по-малки от него (създадени в стъпка 2).
4. Възелът, който е по-малък от себе си в стъпка 3, не съществува и и най-малкият възел е същият като този, създаден в стъпка 2, което показва, че текущият клиентски последователен номер е най-малък, вземи заключването и край.
5. Клиентът следи състоянието на подредения временен възел, който е следващият по малкост след него
6. Ако статусът на наблюдавания подвъзел се промени, преминете към стъпка 3 и продължете последващите операции, докато заключващата надпревара бъде прекратена.     

Авторът няма да въвежда заключването на разпределението тук, нека разгледаме блок-схемата на целия дизайн на кода по следния начин





Предишен:Подробно обяснение на AutoResetEvent в .net/c#
Следващ:Относно проблема, че Android 7.0 не може да извършва улавяне на https пакети
 Хазяин| Публикувано в 20.03.2018 г. 16:49:35 ч. |
Разпределени стъпки за заключване от Zookeeper:
1. Zookeeper е възел с възли, подобен на файлова директория, затова абстрахираме заключването в директория, Zookeeper има възел с EPHEMERAL_SEQUENTIAL типа, множество нишки и когато възелът е създаден от Zookeeper, той ни помага да организираме реда за създаване, така че директориите под този възел да са последователни.
2. Вземете най-малкия възел от текущата директория, определите дали най-малкият възел е текущият възел, дали това означава, че заключването е успешно, дали не е неуспехът при заключването.
3. Когато заключването се провали, за да избегнете ефекта на рояка, трябва да получите предишния възел на текущия възел и след това да слушате възела.
4. Когато направите това, когато освободите заключването, ще уведомите и следващия възел.
 Хазяин| Публикувано в 20.03.2018 г. 16:54:46 ч. |
Научете предварително за статуса и типовете събития на пазача на зоопарка.


Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com