Я использую встроенный janusgraph в своем java-интерфейсе, мой код зависит от janusgraph, инстанцированного с graph = JanusGraphFactory.open(conf)
AFAIK, он напрямую соединяется с Cassandra и эластичным поиском и запускает процессор janusgraph в моем бэк-приложении JVM.Но если я хочу масштабировать janusgraph, мне нужно запустить отдельные серверы janusgraph в кластере и подключиться к этим серверам в качестве клиента из моего бэкэнда.
В соответствии с примером удаленного janusgraph на github это достигается с помощью создания экземпляра EmptyGraph graph = EmptyGraph.instance();
, который не является экземпляром JanusGraph, но org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
.
, который я могу понятьИсходя из приведенного выше примера, я могу использовать только запросы gremlin, отправляя их на сервер janusgraph, но я не смогу использовать API-интерфейсы управления напрямую, если не отправлю код в виде строки на сервер.
Наконец, я могу понять, что для масштабируемости лучше запускать сервер janusgraph отдельно, но я потеряю прямой доступ в своем коде к janusgraph apis, поэтому я хочу знать, что что-то, что я пропускаю, понять и чтоКаковы плюсы и минусы в подходе удаленного развертывания и что я потеряю от встраиваемого подхода?
Редактировать:
Согласно этому ответу исправить это, если не так :
Плюсы / минусы подключения к удаленному серверу gremlin
Плюсы
- Сервер имеет гораздо больше контроляи все запросы централизованы.
- Поскольку каждый из них выполняет обход / запросы через удаленный сервер gremlin, все они защищены транзакциями.Удаленный сервер gremlin по умолчанию выполняет ваши обходы / запросы в транзакции.
- Централизованное управление стратегиями
- Централизованное управление схемами
Минусы
- Трудно выполнить ручное управление транзакциями
- Вы должны использовать groovy-скрипт в качестве строки и отправить его для удаления (Cluster submit) для транзакционного исполнения вашего кода.