Иван Конев @IvanKonev2
Системный архитектор
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Fullstack Developer, Software Architect
Lead
From 400,000 ₽
Kotlin
RxJava 2
Игнорируется отсутствие встроенного кэша в R2DBC, а применение Spring Cache позволяет кэшировать только тип Mono, а коллекции как Mono<List<T>>. В реактивном стиле возможен вызов одного источника из разных цепочек, но что может привести к взаимной блокировке в одной транзакции, т.к. R2DBC помечает все запросы как FOR UPDATE.
Советую попробовать либы от команды Socket.io, у них решение более комплексное, выходящее за рамки спецификации - может именно поэтому и никогда не было проблем со связью
Если так боитесь WebSocket, то посмотрите на десятки миллионов людей, что используют WebSocket в мобильных приложениях при заказе такси, доставке еды, в социальных сетях, покупке и продаже акций, практически во всех компьютерных играх! и ни один из них не жалуется на проблемы со связью =)
Хранить необязательно, если используешь принцип commit'a
Достаточно на сервере закрыть, что и делаем, а браузер можно в пекло =)
Энергопотребление и особенно в режиме экономии у телефонов последних пары лет потрясает, при этом, чаще в Telegram сообщения падают, чем происходит ping-pong, так что всё прекрасно
Практически у всех в телефоне есть Интернет от мобильного оператора, т.е. проблем нет
В вот то и дело, что сейчас потерь вообще не наблюдается и даже если когда-нибудь потеряется связь, то реконнект будет мгновенный
Согласно спецификации WebSocket есть специальное событие onclose, который в нашем случае прописан в коде и выполняется всегда при потере коннекта, а в случае клиента событие onclose возникает при очередном опросе ping-pong - что неплохо и на самом деле ping-pong ничего не кушает. Например, я на бюджетном Samsung Galaxy A51 без зарядки могу играть 3-4 часа в PUBG - а там сплошной трафик и выставлено максимальное качество графики со всеми тенями =)
Во всех роутерах по умолчанию с завода нет ограничений, но если мы говорим о телефонах, то там обычно прямая связь
Ну это скорее всего особенность реализации библиотеки 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