
Muxalma — обмен пакетами данных через общее хранилище
alamar 6 минут назад Muxalma — обмен пакетами данных через общее хранилище Средний 3 мин 85 *nix * Java * Сетевые технологии * Информационная безопасность * Кейс Проект на GitHub находится в стадии ранней альфы. Эта...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
Значимый прорыв формирует отрасль ИИ: alamar 6 минут назад Muxalma — обмен пакетами данных через общее хранилище Средний 3 мин 85 *nix * Java * Сетевые технологии * Информационная безопасность * Кейс Проект на GitHub находится в стадии ранней альфы. Эта статья дополняет README проекта. Сетевые события можно записывать и вычитывать из стороннего хранилища по своему вкусу.
Каждое событие выглядит так:public interface Они рассказывают о некотором сетевом изменении (соединение открылось, пришли данные, соединение закрылось или оборвано) и поддаются обработке через Consumer, причём обработчики можно выстраивать в цепочки и лабиринты для фильтрации, троттлинга, распараллеливания обработки и т. Если два процесса умеют записывать такие события в хранилище вычитывать записанное с другой стороны - между ними налажено взаимодействие, при том, что прямых сетевых подключений друг к другу они не производят. Пример использования этого очевиднейшего принципа - HTTP-прокси.
Технические детали
Один процесс - приёмник прокси, "мама", то, что слушает на порту 3128 обычно. Он соединения принимает, но вместо того, чтобы как классический прокси тут же обратиться на запрошенные адреса и передать им полученные запросы - сохраняет запросы в виде NetworkEvent и кладёт в хранилище. А в это время совсем в другом месте передатчик прокси, "папа", уже вычитывает запросы из хранилища, открывает соединения на своём сетевом стеке, получает ответы и передаёт их через NetworkEvent и хранилище "маме".
Вся суть моего прототипа в том, что транспорт (чтение и запись хранилища) пишет пользователь под свои сиюминутные нужды. Я приведу пример транспорта на основе H2SQL практически целиком. Чтение:public class H2Retrieval extends PollingRetrievalSupport { private final String connectionUrl; private final String tableName; private final Consumer targetConsumer; private final AtomicLong lastProcessedId = new AtomicLong(); public H2Retrieval(String databasePath, String tableName, Consumer targetConsumer, long pollIntervalMs) { super(pollIntervalMs); this.
connectionUrl = String. format( "jdbc:h2:%s;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1;LOCK_TIMEOUT=10000", Paths. toAbsolutePath() ); this.
Отраслевые последствия
tableName = tableName; this. targetConsumer = targetConsumer; } protected void poll() { String selectSQL = String. format(""" SELECT id, connection_id, serial, event_type, payload FROM %s WHERE id > ?
ORDER BY id ASC """, tableName); try (Connection conn = DriverManager. getConnection(connectionUrl); PreparedStatement pstmt = conn. prepareStatement(selectSQL)) { pstmt.
setLong(1, lastProcessedId. get()); long eventId = lastProcessedId. get(); try (ResultSet rs = pstmt.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





