Есть ли способ поделиться базой данных графа neo4j/aws Neptune между микросервисами, ограничивая доступ к определенным частям базы данных графа только определенным микросервисом? Будет ли при этом какое-либо влияние на производительность?
Совместное использование базы данных графа между микросервисами
Ответы (1)
В Amazon Neptune на данный момент нет возможности использовать ACL для части графа. У вас могут быть пользователи IAM, которые имеют полный доступ к кластеру или вообще не имеют доступа. (Разрешить все или запретить все). Вам нужно будет справиться с этим на прикладном уровне. Было бы неплохо иметь детальный контроль доступа, поэтому вы можете разместить запрос на эту функцию (например, через форумы AWS).
Если вы исключаете контроль доступа и единственное, что вам нужно, это сделать так, чтобы микросервисы не влияли друг на друга, тогда вы можете создавать реплики чтения и использовать их в своих микросервисах (независимо от того, является ли общий доступ к базе данных между микросервисами хорошим выбором или не является отдельным обсуждением). Есть два подхода:
- Добавьте достаточное количество реплик в свой кластер и используйте конечные точки cluster-ro (reader) в своих микрослужбах только для чтения. Все микросервисы будут совместно использовать реплики чтения, но с циклическим перебором DNS.
- Добавьте реплики для различных вариантов использования, а затем используйте определенные конечные точки экземпляра с определенными микрослужбами. Микросервисы не будут влиять друг на друга, однако недостатком этого подхода будет то, что ваш экземпляр может быть повышен до мастера в случае сбоев, и это может быть чем-то, что вам нужно обработать или быть готовым к этому.