www.mudconnector.su https://forum.mudconnector.su/ |
|
Вопросы по серверам: очередь команд, вывод https://forum.mudconnector.su/viewtopic.php?f=14&t=14 |
Страница 3 из 3 |
Автор: | Дворак [ Вт июн 17, 2008 11:39 pm ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
KadVar писал(а): Реально ? ОМГ, как я последние лет 10 жил вся жизнь считай зря прожита (( Что, помогает и от kernel error ? blue screen of death ? И от power failure ? Вообще же обработчики исключений во-многом миф, я в своей жизни не видел ни одного приложения, которое могло бы что-то продолжить после скажем: disk write error, database index corrupt, и даже после банального divide by zero. Искючения увы возникают обычно не там, где были ошибки. Бесспорно, обработка исключений полезнейшая функция... обычно сводящаяся к записи полезной дебаг-информации. В общем по-моему зашли немного в тупик. Яж не против - применяйте, лично мое мнение, что это никому не нужные навороты... Ну что же... я уже применяю это в своем движке ... и скажу так ... это работает. kernel error, blue screen of death - это ошибки уровня ядра ОС. Это в основном проблема с железом и драйверами. Тут вины программы нету, неважно как она написана. От этих ошибок, как и от power failure уберечься конечно нельзя исключениями. Тут можно применять другой какой нибудь подход - например дамп мира в страничный файл. А вот disk write error, database index corrupt, и даже divide by zero - обработке в общем поддаются. Исключения помогают от ошибок в программе, которые могут приводить к падению. Особенно это касается работы с указателями с и с++. |
Автор: | KadVar [ Ср июн 18, 2008 3:16 am ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
Дворак писал(а): А вот disk write error, database index corrupt, и даже divide by zero - обработке в общем поддаются. Исключения помогают от ошибок в программе, которые могут приводить к падению. Особенно это касается работы с указателями с и с++. Хоть убей не понимаю, что такого ты планируешь делать в обработчиках этих ошибок. поймать-то их можно... но к сожалению, когда речь доходит до того, чтобы написать реакцию очень быстро приходит в голову мысль, что "начались такие дебри, из которых живым не вернутся". Спору нет, все можно... как говорил мой шеф "за все время и все деньги мы сделаем всю работу". Но когда нет этого "всего" я не вижу смысл инвестировать кучу времени в то, чтобы написать на 1 строку кода 10 срок обработчиков ошибок, и убедиться, что не все сценарии были продуманы. А зачем многопоточность применяете ? Цель какая ? Не хватает производительности ? |
Автор: | Дворак [ Ср июн 18, 2008 11:56 am ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
KadVar писал(а): Хоть убей не понимаю, что такого ты планируешь делать в обработчиках этих ошибок. поймать-то их можно... ... Но когда нет этого "всего" я не вижу смысл инвестировать кучу времени в то, чтобы написать на 1 строку кода 10 срок обработчиков ошибок, и убедиться, что не все сценарии были продуманы. А зачем многопоточность применяете ? Цель какая ? Не хватает производительности ? У меня обработчики исключений - работают на одну цель - остановить сервер без потери данных. После возникновения ошибки - она ловится в обработчике. Обработчик останавливает основной цикл сервера и после этого сервер переходит на сохранение текущего состояния мира. Тут не надо писать 10 или 100 обработчиков... Есть обработчик для всех исключений... Многопоточность я использую для быстродействия... движок очень сильно усложняется, по сравнению с существующими движками. Производительности пока хватает, но это пока... После добавления таймеров, которые работают по секундам, могут возникнуть сложности, учитывая количество таймеров в самих мобах и объектах, помноженное на их количество в мире, хочется максимально разгрузить основной игровой поток от второстепеннных задач. |
Автор: | KadVar [ Ср июн 18, 2008 2:41 pm ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
Дворак писал(а): KadVar писал(а): Хоть убей не понимаю, что такого ты планируешь делать в обработчиках этих ошибок. поймать-то их можно... ... Но когда нет этого "всего" я не вижу смысл инвестировать кучу времени в то, чтобы написать на 1 строку кода 10 срок обработчиков ошибок, и убедиться, что не все сценарии были продуманы. А зачем многопоточность применяете ? Цель какая ? Не хватает производительности ? У меня обработчики исключений - работают на одну цель - остановить сервер без потери данных. После возникновения ошибки - она ловится в обработчике. Обработчик останавливает основной цикл сервера и после этого сервер переходит на сохранение текущего состояния мира. Тут не надо писать 10 или 100 обработчиков... Есть обработчик для всех исключений... Т.е. после порчи внутренних структур из-за ошибки вы сгрузите дефектную информацию в базу ? Вопрос не праздный, я для себя долго думал... и сдается мне, лучше в этот момент уже ничего не писать. Дворак писал(а): Многопоточность я использую для быстродействия... движок очень сильно усложняется, по сравнению с существующими движками. Производительности пока хватает, но это пока... После добавления таймеров, которые работают по секундам, могут возникнуть сложности, учитывая количество таймеров в самих мобах и объектах, помноженное на их количество в мире, хочется максимально разгрузить основной игровой поток от второстепеннных задач. Ясно. |
Автор: | Дворак [ Ср июн 18, 2008 6:23 pm ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
KadVar писал(а): Т.е. после порчи внутренних структур из-за ошибки вы сгрузите дефектную информацию в базу ? Вопрос не праздный, я для себя долго думал... и сдается мне, лучше в этот момент уже ничего не писать. Тут ты конечно же прав... про то что лучше не писать порченную информацию... Но вариантов решений этой задачи много... у меня есть система дампа мира... это когда состояние мира постоянно сохраняется в случае изменений... после этого изменения фиксируются ... т.е. фиксируется состояние мира в котором данные корректны. Получается что в случае креша - потеряются только изменения с последней точки состояния мира в дампе. |
Автор: | KadVar [ Чт июн 19, 2008 12:43 pm ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
Дворак писал(а): KadVar писал(а): Т.е. после порчи внутренних структур из-за ошибки вы сгрузите дефектную информацию в базу ? Вопрос не праздный, я для себя долго думал... и сдается мне, лучше в этот момент уже ничего не писать. Тут ты конечно же прав... про то что лучше не писать порченную информацию... Но вариантов решений этой задачи много... у меня есть система дампа мира... это когда состояние мира постоянно сохраняется в случае изменений... после этого изменения фиксируются ... т.е. фиксируется состояние мира в котором данные корректны. Получается что в случае креша - потеряются только изменения с последней точки состояния мира в дампе. А эээ... если уж так хочется, то что мешает использовать СУБД с транзакциями и закрывать их в гарантированно стабильных состояниях ? Я долго все это жевал... кругами.... и к окончательному решению увы не пришел. Есть масса аргументов ЗА использование СУБД, и несколько против.... в частности - она ломается вся целиком, а 24х365 админа у нас нету, увы... нереально это. Что делать - неясно. |
Автор: | Дворак [ Чт июн 19, 2008 1:00 pm ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
KadVar писал(а): А эээ... если уж так хочется, то что мешает использовать СУБД с транзакциями и закрывать их в гарантированно стабильных состояниях ? Я долго все это жевал... кругами.... и к окончательному решению увы не пришел. Есть масса аргументов ЗА использование СУБД, и несколько против.... в частности - она ломается вся целиком, а 24х365 админа у нас нету, увы... нереально это. Что делать - неясно. Я тоже долго ходил вокруг СУБД. И решил отказаться по разным причинам, в том числе и те, которые привел ты - ломается целиком, пришлось бы зависить от стороннего ПО, не факт что было бы быстрее собственного решения, сложнорасширяемое решение. При развитии движка пришлось бы городить новые таблицы и менять старые. СУБД рулит при сложных взаимосвязях, а в маде связи наооборот простые... список мобов, объектов, чаров, где находяться и что имеют... это все... СУБД получался для меня слишком избыточным. Поэтому перешел к простому дампу мира - в постраничном файле, где мир пишется в бинарном формате. Этот дамп требуется только в случае сбоя в работе... При нормальном завершении - вся информация сохраняется в хмл, а дамп файл удаляется. |
Автор: | KadVar [ Пн июн 23, 2008 11:49 am ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
В принципе не вижу никаких проблем, кроме проблем с поддержкой. С другой стороны... сломается и хрен с ним, пусть ломается. Утром приду и исправлю. Это лучше, чем если будет потихоньку ломаться.... в процессе работы. Основные плюсы - транзакции. Основные минусы - большая привязка к хостингу итп. Скорость... трудно сказать, не думаю, что самописное будет заметно быстрее. |
Автор: | Дворак [ Вт июн 24, 2008 12:33 am ] |
Заголовок сообщения: | Re: Вопросы по серверам: очередь команд, вывод |
Тему о сериализации и СУБД решил перенести сюда... http://forum.mudconnector.su/post410.html |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |