Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Cashed true system
#31
ANZO Написал:Один большой и толстый минус: валится кешед - валится все без возможности восстановления. С какой периодичностью будет в этом "сферическом кешеде" происходить сохранение в базу, чтобы оправдать свое существование и не стать причиной возможной потери данных? 5-10 минут? Стоит заморачиваться? Я думаю нет.

Возьмем к примеру тот же л2 сервер: ну сколько там тех запросов выполняться-то будет, пускай с 5-ю тысячами игроков, в единицу времени? Мизер, на который даже современное железо ухом не поведет. О таких мероприятиях стоит беспокоится, когда вы будете иметь дело с Highload-проектами от 100 тысяч одновременных активных пользователей, где каждая наносекунда важна как воздух - и то всегда есть шанс, что даже "охренеть-какой-энтерпрайзный бекэнд" на@#$тся из-за мелкой невзрачной ошибки, потянув за собой все.

А вы ппишите клиент-серверные приложения специально с падениями? Smile Если уж так говорить, то есть облачные системы виртуалок джавы, через которые можно застраховаться от падений почти на 100%. В крайнем случае к этому, существует еще и зеркалирование с разными маршрутами входов и выходов.
Бест оф зе бест, как говорится.

Если же реально смотреть на проблему, то кешед будет очень даже полезен, хоть и по сети, а не памяти, т.к. когда я последний раз видел джава эмуль л2 с бд там был полный пипец, это было года 2 назад, мне кажется, что с тех пор мало что изменилось Smile Овер9000 запросов на игрока, при каждом изменении данных заливка в бд, куча незакрытых коннектов, которые утекли и т.п. радости.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#32
Вы понимаете, что активные сессии у вас с постоянным трафиком, тут считать не надо, возьмем даже ходьбу
персонаж перемещается на 1000 единиц его скорость 5 единиц в секунду и теперь посчитаем сколько запросов Вы совершите.Заточка,подъем предмета с земли, торговля, любое изменение как так а...
А как-же монополия владения подключение с СУБД, с подключением нельзя будет работать пока его не освободят пассивный деадлок , принципы работы СУБД знакомы?


Ну зачем смотреть в стену...

На PTS кэш сервер завязан вокруг npc и l2server, почему?
Ну блин... Вы когда нибудь сталкивались с проблемой "достоверность информации"?
Оперативное обновление счетов и т.п.

Если Вы не можете понять как написать свой кэш, более устойчивый, я Вам помогу

БАЗА <-> КЭШ-сервер < сеть > (КЭШ-клиент <> СЕРВЕР)

Потеря соединения с базой
ФАЙЛ <канал> (КЭШ-клиент <> СЕРВЕР)

В момент восстановления подключения
КЭШ-клиент передает snapshot-ы с файла, и восстанавливается работа в штатном режиме.


Я понимаю, что все могут купить себе bugatti veyron 16.4 super sport,и забыть о быстродействии, но кто-то довольствуется ограниченными ресурсами.
Ответ
#33
Gattsu Написал:Вы понимаете, что активные сессии у вас с постоянным трафиком, тут считать не надо, возьмем даже ходьбу
персонаж перемещается на 1000 единиц его скорость 5 единиц в секунду и теперь посчитаем сколько запросов Вы совершите.
Не одного. Так как координаты персонажа сохраняются раз в n сек, и при выходе/обрыве связи с клиентом.

Gattsu Написал:Заточка,подъем предмета с земли, торговля, любое изменение как так а...
А как-же монополия владения подключение с СУБД, с подключением нельзя будет работать пока его не освободят пассивный деадлок , принципы работы СУБД знакомы?
Мы то знакомы, вы похоже не очень. Про не блокирующиеся таблицы слышали? Про встроенные кеши в бд? Которые вы пытаетесь эмулировать своим кешем Smile

Gattsu Написал:Ну зачем смотреть в стену...

На PTS кэш сервер завязан вокруг npc и l2server, почему?
Ну блин... Вы когда нибудь сталкивались с проблемой "достоверность информации"?
Оперативное обновление счетов и т.п.

Если Вы не можете понять как написать свой кэш, более устойчивый, я Вам помогу

БАЗА <-> КЭШ-сервер < сеть > (КЭШ-клиент <> СЕРВЕР)

Потеря соединения с базой
ФАЙЛ <канал> (КЭШ-клиент <> СЕРВЕР)

В момент восстановления подключения
КЭШ-клиент передает snapshot-ы с файла, и восстанавливается работа в штатном режиме.


Я понимаю, что все могут купить себе bugatti veyron 16.4 super sport,и забыть о быстродействии, но кто-то довольствуется ограниченными ресурсами.
В случае с l2 сервером кеш нафиг не нужен, ANZO правильно подметил, если бы были сотни тысяч коннектов... А так, оптимизация запросов, оптимизация структуры БД и никаких проблем. Smile
Ответ
#34
Может вы про асинхронные запросы говорите или запросы без ответа?
Что-то я не наблюдал данной реализации на серверах(la2). В такой реализации у вас может получится, что-то вроде провал памяти.

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

О каком кэше Вы говорите? Уточните.

Ну если вы сделаете качественный AI то тут можно подумать, о сотнях тысяч...

кэш дает возможность подняться по уровню памяти.
Ответ
#35
Gattsu Написал:Если Вы не можете понять как написать свой кэш, более устойчивый, я Вам помогу

БАЗА <-> КЭШ-сервер < сеть > (КЭШ-клиент <> СЕРВЕР)

Потеря соединения с базой
ФАЙЛ <канал> (КЭШ-клиент <> СЕРВЕР)

Во-первых то, о чем Вы ведете речь баянистый баян и не представляет вообще сложности в реализации. Во-вторых исходит из первого моего ответа: зачем усложнять простую подсистему (query-пул) и зачем это вообще надо в текущем сабже (л2 сервак)?


Gattsu Написал:В момент восстановления подключения
КЭШ-клиент передает snapshot-ы с файла, и восстанавливается работа в штатном режиме.

И Вы всерьез считаете что постоянная запись снепшотов состояния на винт быстрее и менее ресурсоемкая отложенной записи в БД? :eek:

Gattsu Написал:Блокировка вообще-то делается по ключам, блокируется отдельная запись на тот или иной запрос.

Тот же MySQL использует по-умолчанию MyISAM, который лочит всю таблицу (так же как и MEMORY с MERGE). Построчная блокировка осуществляется в механизме InnoDB.

Добавлено через 10 минут
ASevenfold Написал:А вы ппишите клиент-серверные приложения специально с падениями? Smile Если уж так говорить, то есть облачные системы виртуалок джавы, через которые можно застраховаться от падений почти на 100%. В крайнем случае к этому, существует еще и зеркалирование с разными маршрутами входов и выходов.
Бест оф зе бест, как говорится.

Не существует полностью отказоустойчивого ПО и не может существовать впринципе из-за человеческого фактора.

ASevenfold Написал:Если же реально смотреть на проблему, то кешед будет очень даже полезен, хоть и по сети, а не памяти, т.к. когда я последний раз видел джава эмуль л2 с бд там был полный пипец, это было года 2 назад, мне кажется, что с тех пор мало что изменилось Smile Овер9000 запросов на игрока, при каждом изменении данных заливка в бд, куча незакрытых коннектов, которые утекли и т.п. радости.

Так а что мешает то не сохранять сразу в базу при любом тыке персонажа? Да сколько угодно можно все держать чисто в памяти и сохранять итерационно очередями по мере работы сервера.
Ответ
#36
Прочитал тему, думал тут тру система подъема бабла. А тут, пфф... программирование какое-то.
Ответ
#37
Ура, я откопал свой пароль.

Вставлю свои 5 копеек:
Что вы в "кешеде" кешировать собрались? Кеширование - не более чем способ отложить дорогостоящие io, в l2j это и так реализовано.

Добавлено через 3 минуты
KilRoy Написал:...
Кто начинал впиливать на яве/шарпе сие независимое хранилище?!!!
...

Я, Я, Я :redlol:
Пробовал STOW к l2p прикрутить. пользы 0. Самая большая проблема - предсказание, какую запись можно вытеснить с СУБД. В ладве, при разумном потреблении памяти, это сделать невозможно. Дешевле на БД сервер больше рамы подкинуть.

PS: Во многих write-back алгоритмах есть проблемы с конкаренси Wink
Ответ
#38
ANZO Написал:Во-первых то, о чем Вы ведете речь баянистый баян и не представляет вообще сложности в реализации. Во-вторых исходит из первого моего ответа: зачем усложнять простую подсистему (query-пул) и зачем это вообще надо в текущем сабже (л2 сервак)?
Я думаю Вы не понимаете о чем я говорю. У нас расходятся мнения и мы говорим о разном.

ANZO Написал:И Вы всерьез считаете что постоянная запись снепшотов состояния на винт быстрее и менее ресурсоемкая отложенной записи в БД?
Не поверите, но файловые каналы быстрее, чем сетевые. Отложенная запись - отложенная.И Вы не поняли, что я имел ввиду.

ANZO Написал:Тот же MySQL использует по-умолчанию MyISAM, который лочит всю таблицу (так же как и MEMORY с MERGE). Построчная блокировка осуществляется в механизме InnoDB.
Если в контексте одной СУБД говорить, я посмотрю на Вашу производительность, когда Вы всю базу данных в оперативную память "затолкнете" на MySQL, есть по убедительней базы данных PostgreSQL,MSSQL. И опять блокировка - это нюанс на который оперяться не стоит.

Вас должна интересовать сохранность информации. Исключить потери к минимуму, решить проблему достоверности информации.

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

Добавлено через 3 минуты
izen Написал:Что вы в "кешеде" кешировать собрались?

Весь сервер.

izen Написал:Кеширование - не более чем способ отложить дорогостоящие io, в l2j это и так реализовано.

Я думаю этих оснований предостаточно
Ответ
#39
Gattsu Написал:Я думаю этих оснований предостаточно

Если это УЖЕ сделано, что вы делать собираетесь.

[Изображение: over-engineering.png]
Ответ
#40
izen Написал:Если это УЖЕ сделано, что вы делать собираетесь.

[Изображение: over-engineering.png]

Ну конечно все реализовали Вы Smile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  System GD kor 480-481 elastic 3 2,140 02-15-2021, 10:14 PM
Последний пост: Phantom-Dev
  System GF RuOff MrShyr 9 2,343 10-12-2012, 01:08 AM
Последний пост: MrShyr

Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)