Это описание и блок-схема отражают архитектуру системы после внесенных правок, которые устранили петли репликации и обеспечили консистентность хэш-цепочек. #15
Replies: 2 comments
|
📢 Что изменилось в новой версии В предыдущих релизах при перезапуске ноды наблюдался неприятный эффект: логи мгновенно заполнялись предупреждениями В текущем релизе проблема решена: после загрузки записей с диска массив алертов принудительно сортируется по ID через |
|
проверку сплитбрейна в детерменированой сети можно провести отключая ноду от меш сети скриптом iptables -A INPUT -s 192.168.1.10 -j ACCEPT && \
iptables -A OUTPUT -d 192.168.1.10 -j ACCEPT && \
iptables -A INPUT -p tcp --dport 22 -j ACCEPT && \
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT && \
iptables -P INPUT DROP && \
iptables -P OUTPUT DROP && \
echo "Node isolated. Rollback in 300s" && \
sleep 100 && \
iptables -P INPUT ACCEPT && \
iptables -P OUTPUT ACCEPT && \
iptables -F && \
echo "Network restored"оствив исключение для 22 порта, чтобы смотреть логи, и IP вашего хоста, пример 192.168.1.10 gorgona send "$(date -u '+%Y-%m-%d %H:%M:%S')" "$(date -u -d '+30 days' '+%Y-%m-%d %H:%M:%S')" "test 2" "4YzEYpwB9hc=.pub"
Server Result: Alert ID: 219260995915776 added successfullyпока идет таймер gorgona send "$(date -u '+%Y-%m-%d %H:%M:%S')" "$(date -u -d '+30 days' '+%Y-%m-%d %H:%M:%S')" "test 1" "4YzEYpwB9hc=.pub"
Server Result: Alert ID: 219260927856640 added successfullyкогда закончится таймер первого скрипта сеть восстановиться между нодами и в логах ноды которая до этого была в изоляции вы увидите процесс восставновления ее хеш цепочки после форка, при этом по сети будут переданы только алерты от алерта который имеет предка в цепочке (алертов)блоков с общим хешем. вывод подписчика на этой ноде последних 2х алертов из меш сети по этому ключу: gorgona -v listen new 4YzEYpwB9hc=имеем идеальную картину разница между отправкой алертов была 17сек, в реальном времени что имеем после синхронизации цепочки на ноде недоступность ноды составляла 100сек. первое сообщение в доступную меш было отправлено, после отключения сети у ноды и второе на ноду пока она еще была в 100сек интервале недоступности, т.е. после того как она верулась в сеть(проходит 100 секунд, iptables сбрасываются) она переписала свое прошлое до предка с общим хешем и отправил в сеть алерт который был на нее отправлен в период ее недоступности, сохранив полную детерменированность всей меш сети. изолированная нода: раздвинула массив памяти, вставила test 1 перед своим test 2, а затем каскадно пересчитала хэш для test 2, сделав его потомком test 1. Шаг 1. Момент изоляции (Рождение временного форка)В 15:35:16 на изолированную ноду приходит
В этот момент в сети возник форк (развилка):
Шаг 2. Восстановление сети и сверка предковПроходит 100 секунд,
Шаг 3. Магия
|
Uh oh!
There was an error while loading. Please reload this page.
Gorgona представляет собой децентрализованную P2P-сеть для безопасной доставки зашифрованных сообщений. Основная задача системы - обеспечить синхронизацию данных между узлами в условиях отсутствия центрального сервера и при наличии сложных сетевых топологий, таких как Docker-контейнеры и NAT.
Для достижения строгого порядка сообщений используется SnowflakeID, который позволяет каждой ноде мгновенно определять место записи в истории без координации с другими участниками. Целостность данных гарантируется механизмом XXH3 Hash Chaining: каждый новый блок математически связан с предыдущим, что делает базу данных устойчивой к подмене и позволяет легко проверять идентичность истории на разных узлах через сравнение финального хэша.
Внесенные изменения решают критическую проблему широковещательных штормов в P2P-сетях. Благодаря внедрению логического фильтра Gossip Gate и учету метаданных узлов на втором уровне управления, система теперь четко разграничивает процесс синхронизации старой истории и распространение новых событий в реальном времени. Это исключает бесконечное дублирование трафика и гарантирует, что каждый узел кластера придет к идентичному состоянию кратчайшим путем.
Подробная техническая документация доступна по ссылке:
https://github.com/psqlmaster/gorgona/blob/master/docs/replication.md
Ознакомиться с работой системы через панель управления можно здесь:
https://46.138.247.148:8000/
Данные для входа:
Username: demo
Password: demo
All reactions