java - 在 GCP 计算引擎中托管 Neo4j

标签 java web-services neo4j google-compute-engine google-cloud-platform

我想为维基百科页面和类别图托管 Neo4j Web 服务,并基本上通过密码查询获得一些建议。 我已经创建并填充了数据库。

如何“理想地”设置这样的服务?

  • 我应该为 Neo4j 服务器保留 1 个专用实例并单独使用吗? 用于运行接收客户端的 Tomcat 或 Jetty 的实例 请求,然后将请求转发到 Neo4j 服务器实例 通过 REST API?

  • 或者直接从客户端向 1 个 neo4j 实例发送请求(通过 REST 进行加密)?

  • 或者我应该选择 Neo4j 提供的非托管扩展吗?

  • 或者还有其他方法可以在考虑缩放的情况下进行设置吗?

我确实计划将来运行负载平衡和 HA 集群。

网络服务将由浏览器和移动应用程序访问。

我以前从未托管过这样的网络服务,所以如果有人帮助我那就太好了:)

最佳答案

我建议您创建一个位于客户端和 Neo4j 之间的 API 应用程序。您的客户端将向 API 服务器发出请求,然后 API 服务器将向 Neo4j(可以是一个实例或 HA 集群)发出 Cypher 请求。

这样做的好处包括能够在 API 层实现缓存、在请求到达数据库服务器之前对其进行身份验证、能够通过部署到 API 服务器来立即更新 Cypher 查询(想象一下,如果 Cypher 逻辑存在于您的移动设备中)应用程序 - 您将受到应用程序商店/用户升级的支配),并通过部署更多 API 服务器轻松扩展您的 API。

我跳过了这一层,只是使用非托管扩展来扩展 Neo4j REST API,并让客户端直接访问 Neo4j,这对于快速实现原型(prototype)来说是可以的,但是你会失去上面列出的许多好处,还有一个额外的缺点,你必须重新启动数据库才能部署新版本的非托管扩展。

关于java - 在 GCP 计算引擎中托管 Neo4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36102373/

相关文章:

java - Android:资源不包含资源编号 0x 的包

java - Spring Boot Rest Web服务在Get Request中获取多个参数

neo4j - 从neo4j图中的路径中删除循环的更好方法

javascript - Neo4j 仅当 where 子句始终为真时才返回 Node

Java私有(private) Assets 放在哪里?

Java小程序仅返回127.0.0.1

java - Selenium Java 对元素执行的单击不起作用

asp.net - 访问 CRM/Sharepoint Web 服务中的 DefaultCredentials

.net - 代理类需要 WebServiceBindingAttribute

neo4j - 如何将查询语句记录到 Neo4j 服务器,这可能吗?