Использование общего / смонтированного блочного хранилища с Xodus - PullRequest
0 голосов
/ 09 ноября 2019

Безопасно ли использовать смонтированное хранилище блоков в качестве пути к базе данных Xodus? Идея состоит в том, чтобы запустить приложение, которое использует Xodus, на нескольких разных хостах. Таким образом, каждое основанное на Xodus приложение указывает на один и тот же подключенный путь (например, /mnt/xodus)

. В этом случае каждое приложение открывает среду Xodus, как показано в коде ниже. Если мы откроем среду следующим образом:

  @Override
  public Environment getEnvironment(String xodusRoot, String instance) {
    Environment environment = environmentMap.get(xodusRoot + instance);
    if (environment == null) {
      EnvironmentConfig config = new EnvironmentConfig();
      config.setLogCacheShared(false);
      Environment env = Environments.newInstance(xodusRoot + instance, config);
      environmentMap.put(xodusRoot + instance, env);
    }
    Environment e = environmentMap.get(xodusRoot + instance);
    return e;
  }

Безопасно ли для нескольких экземпляров Xodus указывать на смонтированный путь?

1 Ответ

0 голосов
/ 12 ноября 2019

Это зависит от того, какой конкретный блок памяти вы используете. Например, Xodus работает на Amazon EBS довольно хорошо, но EBS не позволяет обмениваться файлами базы данных. Если блочное хранилище является разделяемым, то любая открытая среда будет заблокирована, поэтому вы должны каким-то образом «расшарить» пути среды между хостами, чтобы предотвратить открытые конфликты. Возможно, можно попытаться открыть среды в режиме прослушивания только для чтения , но он будет работать только в том случае, если хранилище блоков может генерировать подходящие события файловой системы.

Кроме того, установка config.setLogCacheShared(false)приведет к OOME при использовании нескольких сред в одной JVM.

...