forum.bitel.ru
http://forum.bitel.ru/

Насколько можно нагружать конфигурацию сервера
http://forum.bitel.ru/viewtopic.php?f=19&t=6939
Страница 1 из 1

Автор:  Феанор [ 06 июл 2012, 13:06 ]
Заголовок сообщения:  Насколько можно нагружать конфигурацию сервера

Пишу свои скрипты и чтобы потом не было проблем с переписыванием и перекомпилированием кода выношу большую часть статических переменных в настройку сервера. В начале выполнения скрипта соответственно делаю this.setup=Setup.getSetup();
ну и потом дергаю переменные все оттуда. Возникает вопрос, насколько это правильно? Насколько быстро обрабатывается конфиг, не получится ли что после первой или второй сотни параметров мною добавленных обработка получения конфига приведет к лагам и т.д? Или setup в памяти хранится и в принципе пофигу? =)

Автор:  dimOn [ 06 июл 2012, 13:23 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

Конечно, в памяти.

Автор:  Феанор [ 06 июл 2012, 13:27 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

dimOn писал(а):
Конечно, в памяти.

а пары ключ/значения? или это тривиальная задача их найти из конфига даже если их будет куча? или они и хранятся как объекты ключ/значение? =)

Автор:  dimOn [ 06 июл 2012, 14:04 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

Конфиг парсится сразу, потом хранятся обычные java-коллекции.

Автор:  Феанор [ 06 июл 2012, 14:31 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

ок, можно тему удалить =)

Автор:  Amir [ 06 июл 2012, 14:38 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

Можно еще так, когда много значений разных типов (особенно сложных) вместе:
Код:
import bitel.billing.server.util.Config;

public static class MyConfig
    extends Config
{
   public final int value;

   public MyConfig( int moduleId, ParameterMap moduleSetup, Setup setup )
   {
      super( moduleId, moduleSetup, setup );

      this.value = setup.getInt( "bla.bla.bla", 0 );
   }
}
   
public void doSomething()
{
   Setup setup = Setup.getSetup();
   setup.getConfig( moduleId, MyConfig.class );
}

Автор:  skyb [ 06 июл 2012, 14:51 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

какой закрывать тему, в вики давайте

Автор:  Феанор [ 06 июл 2012, 15:07 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

Amir писал(а):
Можно еще так, когда много значений разных типов (особенно сложных) вместе:

т.е. мы создаем свой класс , объявляем в нем свои поля, которые в конструкторе дергаем из основного конфига биллинга, а потом дергаем их в других местах через MyClass.fieldName или что нибудь типа MyClass.giveMeMyFancyValiable1()?

а зачем конструктор вообще нужен? что если просто создать статические вызовы? Или это обусловлено тем, насколько часто будут дергаться поля в коде?
Код:
      public static String getVariable(){
       variable=Setup.getSetup().get("variable", "");
       return variable;
      }

Автор:  Amir [ 06 июл 2012, 15:53 ]
Заголовок сообщения:  Re: Насколько можно нагружать конфигурацию сервера

Цитата:
Или это обусловлено тем, насколько часто будут дергаться поля в коде?
Да, а также, чтобы при частой необходимости постоянно не конвертировать из строки в числа или в более сложные типы. Не до конца описал, там не MyClass.fieldName надо, а получать объект через getConfig, просто setup его кэширует (по классу и id модуля) и создает когда надо (после изменения конфигурации, например).
Код:
import bitel.billing.server.util.Config;

public class MyClass
{

public static class MyConfig
    extends Config
{
   public final int value;

   public MyConfig( int moduleId, ParameterMap moduleSetup, Setup setup )
   {
      super( moduleId, moduleSetup, setup );

      this.value = setup.getInt( "bla.bla.bla", 0 );
   }
}
   
public void doSomething()
{
   Setup setup = Setup.getSetup();
   ...

   MyConfig myConfig = setup.getConfig( moduleId, MyConfig.class );

   switch( myConfig.value )
   {
      ...
   }
}

}
Но его нельзя просто один раз получить и запомнить на все время - в этом случае после изменения конфигурации все поля будут старыми, т.к. сам объект старый.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/