我想为维基百科页面和类别图托管 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/