Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

librats: Выпуск версии 2.0.x (библиотека для распределённых P2P-приложений). Так же релиз rats-search 2.1.7 и rasync

Дата публикации: 03-08-2026 15:28:02

Всем привет! Я продолжаю развивать свою библиотеку для создания распределённых приложений. Она уже легла в основу новой версии rats-search (распределённый торрент-поисковик) и rasync (синхронизация папок, файлов и исходников между устройствами), а также, судя по всему, используется в UltraVNC (VNC-клиент).Библиотека позволяет развернуть собственную P2P-сеть, связать пользователей между собой и выстроить обмен данными через потоки разных типов — бинарные, строковые и другие. Главная особенность — автоматическое обнаружение участников (peer discovery), что особенно актуально в условиях постоянных блокировок и сетевых ограничений.На данный момент поддерживаются C/C++, Java (Android), Python и Node.js.Это очередное обновление: ещё больше стабильности в работе различных функций, значительно улучшены протоколы DHT и BitTorrent. Обо всём подробнее — далее.Последний стабильный релиз на сегодня — 2.0.5. Исходный код и собранные бинарные файлы доступны для: Читать далее

Основное содержимое страницы с новостью.

Всем привет! Я продолжаю развивать свою библиотеку для создания распределённых приложений. Она уже легла в основу новой версии rats-search (распределённый торрент-поисковик) и rasync (синхронизация папок, файлов и исходников между устройствами), а также, судя по всему, используется в UltraVNC (VNC-клиент).

Библиотека позволяет развернуть собственную P2P-сеть, связать пользователей между собой и выстроить обмен данными через потоки разных типов — бинарные, строковые и другие. Главная особенность — автоматическое обнаружение участников (peer discovery), что особенно актуально в условиях постоянных блокировок и сетевых ограничений.

На данный момент поддерживаются C/C++, Java (Android), Python и Node.js.

Это очередное обновление: ещё больше стабильности в работе различных функций, значительно улучшены протоколы DHT и BitTorrent. Обо всём подробнее — далее.

Последний стабильный релиз на сегодня — 2.0.5. Исходный код и собранные бинарные файлы доступны для:

  • Windows (64-bit)

  • Linux (64-bit)

  • Android (32-bit / 64-bit)

  • macOS (64-bit)

Доступ к функционалу библиотеки организован через FFI (Foreign Function Interface).

67caf4d6e3bf780ab8282271f034f836.png

Поддерживается следующие возможности:

  • Поиск пиров в сети — автоматическое обнаружение участников через DHT (совместим с BitTorrent Mainline DHT) для глобальной сети и через mDNS для локальной.

  • Обход NAT без настройки роутера — встроенная поддержка UPnP, NAT-PMP, STUN. Библиотека сама просит роутер пробросить порт, поэтому пиры за NAT могут принимать входящие соединения без ручной настройки.

  • Сквозное шифрование — протокол Noise (Curve25519 + ChaCha20-Poly1305) с автоматическим управлением ключами, взаимной аутентификацией и совершенной прямой секретностью.

  • Передача файлов — потоковая отправка файлов и целых папок с контролем целостности, возможностью паузы/возобновления/отмены и атомарной доставкой.

  • Масштабируемый обмен сообщениями — протокол GossipSub для публикации/подписки по темам с организацией сообщений и их фильтрацией.

  • Поддержка многих языков — единый API для C++, C, Node.js (с TypeScript), Java/Android и Python, работающий на Windows, Linux, macOS и Android.

  • Удобный API для разработчика — событийная модель (on()once()off()), обмен сообщениями в JSON, отслеживание состояния соединений в реальном времени и гибкая система логирования.

    В версии 2.0 значительно переработано ядро: оно переведено на модульную архитектуру и архитектуру единого реакторного потока (single reactor thread), что должно в разы улучшить масштабируемость, особенно при большом количестве пиров.

    Существенно улучшен DHT: теперь реализована полноценная защита от eclipse-атак, а также поддержка динамической таблицы маршрутизации, независимой от spider-режима. Реализован новый точный алгоритм сходимости к ближайшим DHT-узлам — он не уступает по эффективности реализации из libtorrent, но при этом даёт точный результат, а не приближённый.

    Появилась полноценная модульная архитектура: теперь модули можно подключать по мере необходимости, под конкретные задачи и потребности — например, DHT, файлообмен, хранилище, mDNS, мониторинг сети и т.п. В версии 1.0 всё было собрано в одном месте, теперь же каждый модуль подключается по необходимости. На C++ в версии 2.0 это выглядит так:
    ```

    #include "node/node.h"
    #include "subsystems/dht_discovery.h"
    #include "subsystems/mdns_discovery.h"
    #include "subsystems/peer_exchange.h"
    #include "subsystems/reconnection.h"
    #include "subsystems/ping_service.h"
    #include "subsystems/pubsub.h"
    
    Node node(config);
    // — автоматическое обнаружение —
    // DHT (WAN): ключом обнаружения служит комната, поэтому встречаются только узлы из одной комнаты.
    DhtDiscovery::Config dc;
    dc.discovery_key = room;
    dc.data_dir      = data_dir;      // храним таблицу маршрутизации рядом с идентификатором
    node.add_subsystem(std::make_unique<DhtDiscovery>(std::move(dc)));
    // mDNS (LAN): обнаружение пиров в одной локальной сети без какой-либо настройки.
    node.add_subsystem(std::make_unique<MdnsDiscovery>());
    // PEX: узнав об одном пире, получаем от него список известных ему пиров и подключаемся к ним.
    node.add_subsystem(std::make_unique<PeerExchange>());

    Полноценный каталог с примерами тут - https://github.com/librats/librats/tree/master/examples


Вместе с библиотекой вышла и новая, более стабильная версия rats-search — 2.1.7. Она ещё лучше оптимизирована по памяти и CPU. За счёт новой версии librats в ней значительно улучшен поиск других участников и конкретных торрентов. Исправлена индексация файлов — раньше она иногда терялась при удалённом поиске.

https://github.com/librats/rats-search/releases

03f59cf8823a21991f52af8681697771.png09a542a0f2b8e37f13d2e0b0c4d58027.png

Вышел ещё один проект на librats — синхронизатор папок между устройствами rasync (распределённый rsync). Он позволяет автоматически синхронизировать вложенные папки между устройствами, приводя их в согласованное состояние. Условно говоря, ближайший аналог — это Syncthing на Go, но здесь реализация консольная, на C++, и более компактная.

https://github.com/librats/rasync/releases

Работает это так. На одном компьютере вы запускаете:

rasync --key s3cr3t --discover ./documents ./photos ./code

где ключ служит одновременно и ключом синхронизации, и ключом безопасности для шифрования данных. На другом устройстве вы делаете, в целом, то же самое — и получаете на выходе те же папки с документами, фотографиями и кодом. И так продолжаем делать с другими устройствами где вам нужна синхронизация.

можно поиграться с настройками или указать например другой путь для того же каталога

rasync --key s3cr3t --discover ./somefolder --name documents ./photos ./code

В таком варианте документы сохранит в каталог с другим названием. А --discover включает обнаружение через все доступные источники (mDNS/DHT).

выглядит как-то так

выглядит как-то так

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Книга: «Linux для администраторов, 2-е изд.»07.0714-05-2026
2Атака клонов: разработчикам Telegram-ботов угрожают троянизированные библиотеки в PyPI-2703-07-2026
3Книга: «Основы DevOps и Software Delivery. Практика развертывания и сопровождения ПО в продакшене»06.507-07-2026
4[Перевод] Мультиагентные системы как распределенное программное обеспечение08.8629-06-2026
5Как я придумывал замену Redis и что из этого получилось1705-08-2026
6В России запустили бета-версию антипиратского Реестра0027-05-2019
7«Астра Мониторинг 1.5.0»: отслеживание маршрутов запросов и новые возможности для работы в защищенной среде0523-06-2026
8Почему для Telegram-квестов мне пришлось написать свою виртуальную машину: История Questogram011.305-08-2026
9Российский рынок Data Lakehouse: архитектурный раскол и борьба за безопасность06.9405-08-2026

Классификация: Пресс-релизы. Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 12.02. Источник: habr.com.