All streams
Search
Write a publication
Pull to refresh
112
0
Дмитрий Думанский @doom369

Гребец и на дуде игрец

Send message
Я частично с Вами согласен. А можно увидеть Ваше решение?
То есть Ваше решение — перейти на другую технологию? Я правильно Вас понял?
>>Примет нетти их отлично, в несколько потоков…
Получается 1 пакет может попасть в один поток, а второй пакет во второй поток. Следовательно на обработку они могут попасть «как повезет». Так?
Первый коммент по ссылке позабавил =)
Допустим они пришли в правильном порядке, но с задержкой в 1 мс. Как нетти отработает эти 2 запроса? В разных потоках или в одном? Собственно почему возник вопрос, потому что не понятно как нетти их отработает. Как она отрабатывает 20к запросов в сек?
Допустим я бью мечем, а противник ставит щит именно в такой последовательности. На Вашем сервере это может обработаться как — противник ставит щит и только потом я бью мечем? Зависит от того когда Ваш нетти отдаст пакет в логику?
хороший ресурс, только зачем там регистрация =)?
Ну так я как раз и описал в статье возможные варианты. Каждый выбирает то, что ему больше всего подходит.
Ну ок, код пока трогать не будем, допустим просто выполнили

update plan set status = 'new' where status = 'draft'

объекты в кеше при этом остались со значениями draft
Ну, например, возьмем простой случай — у Вас в приложении для новой сущности проставляется флаг DRAFT. А заказчик хочет изменить DRAFT на NEW (не только labels но и внутри кода).
Тогда делаем update и сбрасываем кеш.
По поводу iBatis — в EHCache такая же гибкая настройка с помощью регионов. Нужен кеш для статики — пожалуйста, нужен кеш для одного типа объектов — пожалуйста. Все гибко. Статика, кстати, у меня не сбрасывается.
Немного промахнулся. Ответил Вам ниже
Для сброса кеша есть решения, которые я описал в начале статьи, делается это за час максимум. Потом можно использовать во всех проектах.
По поводу удаления данных — в своих проектах я всегда использую флаг — deleted. Реально из базы не удаляю. Как раз для решения таких проблем как Вы описали.
NIO — это NEW IO. Я так понял Вы подразумеваете под NIO — Non-blocking IO.
Как бы там ни было, я по-моему понял в чем фишка Netty:
В случае NioServerSocketChannelFactory есть главный поток, который принимает входящие соединения. Когда появляется новое соединение, оно оборачивается в Channel и ссылка на Channel отдается дочерним потокам для обработки. Соответственно, при работе с Channel все команды ходят через главный поток. Так?
Я не совсем понял, что же такое netty и почему он работает быстрее? За счет чего? За счет своей реализации потоков, сокетов?
Да, в этом конкретном вопросе — это важно.
Вообщем если попытаться ответить баз маппинга, то должно быть приблизительно так —
если при session.load(User.class, 1L) делается выборка и User и SharedDoc (отдельными селектами или джоинами) то оба объекта будут в кеше. И во втором запросе значение будет доставаться из кеша.
Если так, то если на момент шага 3 мы имеем ту же сессию что и в случае 1, то данные будут не консистентны. Если же на шаге 3 у нас открывается новая сессия то все будет ок.
У Вас ошибка — SharedDoc user.
По вопросу — я думаю зависит от того как будет выглядеть мапинг SharedDoc в классе User.
Точно, спасибо. Вообще не обратил на это внимание.
Вопрос ко второму пункту — как именно обновило? Через ту же сессию что была открыта в пункте 1? Через ту же фабрику сессий или напрямую в БД =)?

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity