Search
Write a publication
Pull to refresh
5
0
Иван Конев @IvanKonev2

Системный архитектор

Send message

Игнорируется отсутствие встроенного кэша в R2DBC, а применение Spring Cache позволяет кэшировать только тип Mono, а коллекции как Mono<List<T>>. В реактивном стиле возможен вызов одного источника из разных цепочек, но что может привести к взаимной блокировке в одной транзакции, т.к. R2DBC помечает все запросы как FOR UPDATE.

Советую попробовать либы от команды Socket.io, у них решение более комплексное, выходящее за рамки спецификации - может именно поэтому и никогда не было проблем со связью

Если так боитесь WebSocket, то посмотрите на десятки миллионов людей, что используют WebSocket в мобильных приложениях при заказе такси, доставке еды, в социальных сетях, покупке и продаже акций, практически во всех компьютерных играх! и ни один из них не жалуется на проблемы со связью =)

Мгновенный или нет, но во время реконнекта может пропасть событие

Хранить необязательно, если используешь принцип commit'a

При потере коннекта onclose может не вызваться вообще

Достаточно на сервере закрыть, что и делаем, а браузер можно в пекло =)

постоянно находиться в background и просыпаться лишь по приходу месседжа, то 3-4 часа -- это отвратительно

Энергопотребление и особенно в режиме экономии у телефонов последних пары лет потрясает, при этом, чаще в Telegram сообщения падают, чем происходит ping-pong, так что всё прекрасно

корпоративных роутерах или проксях. Особенно последние безбожно дропают соединения без треффика по таймауту.

Практически у всех в телефоне есть Интернет от мобильного оператора, т.е. проблем нет

Никто не отменял кратковременные потери связи

В вот то и дело, что сейчас потерь вообще не наблюдается и даже если когда-нибудь потеряется связь, то реконнект будет мгновенный

При отсутствии треффика соединение автоматически не закрывается ни на одной из сторон.

Согласно спецификации WebSocket есть специальное событие onclose, который в нашем случае прописан в коде и выполняется всегда при потере коннекта, а в случае клиента событие onclose возникает при очередном опросе ping-pong - что неплохо и на самом деле ping-pong ничего не кушает. Например, я на бюджетном Samsung Galaxy A51 без зарядки могу играть 3-4 часа в PUBG - а там сплошной трафик и выставлено максимальное качество графики со всеми тенями =)

Когда соединение проходит через промежуточный роутер с маскарадингом или через прокси, они как правило убивают коннекшн при отсутствии треффика

Во всех роутерах по умолчанию с завода нет ограничений, но если мы говорим о телефонах, то там обычно прямая связь

Было замечено с некоторыми моделями мобильных девайсов, что они могут аккумулировать которкие сообщения перед отсылкой их по вебсокету (до 20 секунд)

Ну это скорее всего особенность реализации библиотеки WebSocket =)

Спасибо из проявленный интерес! Выпущенные за последний год все бюджетные телефоны Samsung имеют аккумулятор емкостью 5,000 мА·ч1 с поддержкой быстрой зарядки!  =)

Или вот реактивная библиотека Spring Security, написанная мною с нуля: https://github.com/SevenParadigms/reactive-spring-abac-security... кода получилось немало

Ну хорошо, вот проект, который реализует простую логику, но со сложным синтаксисом Reactor https://github.com/SevenParadigms/spring-cloud-websocket-gateway =)

Кода кот наплакал, но функционал фантастический.

Пожалуйста, вот пример реактивного Webflux на Kotlin: https://github.com/SevenParadigms/webflux-dsl-abac-example исходный код очень лаконичен как раз в силу объединения Kotlin и Project Reactor (кстати более продвинутой чем RxJava)

Более 5 лет пишу на Kotlin в Enterprise в реактивном стеке Webflux: ERP, CRM, СЭД - псевдофункциональный язык в 100 крат читабельнее Java, да и код в купе с реактивным стеком в 5 раз меньше становится. При этом, все сущности в БД хранятся только как NoSQL в JSON-формате со всеми внешними связями между собой без проблем. В Hibernate невозможно отключить или очистить кэш 1-го уровня со странным поведением - это реальная угроза для серьёзного Enterprise. Keycloak имеет ограничение при работе с моделью SaaS, когда производительность обрушивается до нуля - проблема выявлена в 2016 году и не решена до сих пор. Тесты позволяют выявить не более 30% от всех ошибок и используются для фиксации реализованного функционала.

  • Написание своих компонентов - часто слишком трудоемкий и тупиковый путь

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

Системные риски безопасности

Терминология вокруг системного риска сводится к превентивному взлому, от которого невозможно спастись. При этом, охватывается масштаб страны целиком. Вся политика безопасности сервисов должна учитывать возможность атаки с локального хоста и компрометации всех паролей.

Пришло сообщение о том, что представленная библиотека напоминает https://sapl.io/ которая так же продюсирует модель безопасности ABAC - но сразу видно, что это интеграционная обвертка, без кэширования и высоких нагрузок. Есть кэш запросов на уровне сессий, но такой подход уже давно устарел. Напоминает академический проект, раскрывающий модель ABAC, без практического применения

Продвигать свой код - неверное утверждение! данная бибилиотека уже используется в крупном проекте и ожидалось услышать мнение спецов по данному подходу. Кроме того, подобных библиотек еще нет, так что это точно не реклама и зря поставили -1

В таким делах всегда присутствуют косвенные улики и именно они формируют картину в целом, например, отказ в 2015 году от 3-х крупнейших поставок Supermicro, не смотря на их тогда лидерство по популярности и цене =)

Сервера Supermicro наглядно демонстрируют, что безопасность любой компании напрямую зависит от доверия к цепочке поставок и выявить такого рода уязвимость практически невозможно, т.к. нет технологий реинжиниринга современных микросхем с 16-нм техпроцессом

Опубликовал в Maven Central стабильную версию 3.0.1, все тесты по моделям с отключенными аннотациями @Id выполняются, также добавил тесты по использованию Dsl. Планирую добавить реактивную миграцию прямо в Spring Data, что позволит решить сразу несколько задач. Миграция будет основана на оригинальной идее, но и на много сложнее Liqubase по реализации.

Сегодня опубликовал в репозитории https://github.com/SevenParadigms/r2dbc-dsl версию Dsl непосредственно в спецификации последней реактивной Spring Data - это дало возможность работать Dsl с базами PostgreSQL, MySQL, Oracle и MS SQL. Также добавил автоматическую конфигурацию для поддержки полей JsonNode в моделях для маппинга в тип JSONB и конечно выключил проверку на обязательность аннотаций вроде @Id. Достаточно выполнить mvn install и подключить зависимость в свой проект вместо Spring Data. В версии 2.6.0-SNAPSHOT довольно много положительных изменений, поэтому не стал публиковать в Maven Central версию Dsl вместе с Spring Data 2.5.3, а SNAPSHOT не принимаются

Почему заигнорили мирового лидера по многофункциональности и скорости fastjson от Alibaba: https://github.com/alibaba/fastjson

Странно, почему упустили из обзора очень простой и удобной в администрировании и использовании LizardFS или признаным по производительности лидером MooseFS :)

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Software Architect
Lead
From 400,000 ₽
Kotlin
RxJava 2