Последните новини за начина, по който се обработват събитията при оттегляне, доведоха до осъзнаването, че персонализираният процес, който имахме за първоначалната секция на мрежата, вече не е необходим. По-малко сложност се равнява на по-малко кодови пътища, което носи множество предимства. @davidrusu обяснява малко по-задълбочено по-долу.
Общ напредък
Тази седмица стигнахме по-далеч с използването на двупосочен поток при възлите, така че сега имаме потока, който преминава изцяло в двете посоки… от Клиент към Старейшина към Възрастен към Старейшина към Клиент
за ACK
съобщение. Тоест, ACK
сега ще идват само след като данните са били записани (докато main
е ACK
при получаване на съобщението при Старейшина… Възрастните не участваха). Това добре избягва цял клас грешки по време на тестовете и ни дава повече увереност в това, което виждаме по време на съхранението на данни при клиента.
Също така работихме усилено, за да премахнем комплексност от кода. PR от @anselme подреди още малко работа от DKG. @roland почисти повече тестов код и @bzee работи усилено за актуализиране за най-новото „quinn“ хранилище и промени около използването на „потоци“ в него.
Направихме Началната секция по-малко специална
Има няколко неща, които правят първата Секция на Safe мрежата специална, например това е единствената секция, която няма родителска секция (очевидно). Но когато изграждаме сложни системи, специалното не е нещо, което искаме. Това е още един случай за размисъл.
Преди тази седмица начинът, по който възлите се присъединяваха към генезис секцията, имаше особенност, при която възрастта на възлите беше изкуствено завишена. Присъединяването на възлите в началото започваше с висока възраст и прогресивно понижаване на възрастта за всеки възел, присъединяващ се по-късно.
Тоест:
- Възел А се опитва да се присъедини с възрастта на възела по подразбиране от 4
- Мрежата отговаря с „Опитай отново (възраст=97)“.
- Възел A започва процеса на присъединяване отново с възраст 97.
- Мрежата ги приема.
- Възел B се опитва да се присъедини с възрастта на възела по подразбиране от 4
- Мрежата отговаря с „Retry(age=96)“ (възрастта на следващия възел е по-ниска)
В ситуация с масово присъединяване, може да имате много възли, които се опитват да се присъединят наведнъж, което налага много възрастова синхронизация:
- Възлите A, B, C, D се опитват едновременно да се присъединят с възрастта на възела по подразбиране от 4
- Мрежата отговаря с „Retry(age=97)“ на всички тях.
- Възлите A, B, C, D започват процеса на присъединяване отново на възраст 97 години.
- Да кажем, че мрежата приема възел A.
- Възли B,C,D все още ще се опитват да се присъединят с възраст 97, те ще трябва да преминат отново през логиката за синхронизиране на възрастта отново
Причината, поради която правихне това, беше да избегнем прекомерните премествания в началото на мрежата. Ако си спомняте, възлите се избират на случаен принцип, за да бъдат преместени в други секции, когато се случи събитие за разделяне. Колкото по-млад е възелът, толкова по-вероятно е той да бъде избран за преместване. За да избегнем преместването на 80% от секцията наведнъж, въведохме това поведение за определяне на възрастта, за да намалим вероятността да настъпи преместване.
В даден момент променихме начина, по който се обработват събитията на преместване, за да ограничим броя на възлите, които могат да бъдат преместени наведнъж, така че секциите да могат да поддържат здравословен брой Възрастни.
Така че сега, когато причините зад преместването на Възрастни вече не са валидни, ние сме в състояние да премахнем протокола за синхронизиране на възрастта, когато възлите се присъединят към Генезис Секцията. Това кара първата Секция да се държи много по-близко до следващите Секции без специални кодови пътеки, посветени на нея! Това също трябва да направи присъединяването на възли малко по-надеждно и по-бързо, тъй като премахнахме едно двупосочно пътуване в мрежата, за да синхронизираме възрастта за присъединяване.
Преводи:
English Russian ; German ; Spanish ; French
- Официален сайт на Safe Network
- Обобщено представяне на Safe Network
- Safe Network Фундаменти
- Карта на проекта
- Подробна информация може да намерите както винаги във форума на международната общност: Safe Network Forum
- Ако имате въпроси може да ги зададете във Facebook групата на българската Safe общност: Redirecting...
- Ако искате да следите последните новини заповядайте във Facebook страницата на Safe Network България: Safe Network България