java - 社交网络架构、C++ Clients Neo4j 数据库之间有什么关系?

标签 java c++ python social-networking neo4j

我目前正在致力于社交网络的实现。 架构是:

- 分布式 C++/Qt 客户端
- Neo4j 服务器数据库

我可以直接查询数据库,因为它有一个来 self 的 Qt 应用程序的 REST 接口(interface)。 我对这种方法不太满意,因为它不安全,而且不可能进行优化(缓存请求)。

我应该使用什么服务器/架构来管理来自客户端的请求?

我更喜欢 Python 而不是 Java,但速度很重要。

您认为 REST 足够快还是我应该使用 RPC?

在最后一个场景中,这意味着我应该为数据库开发自己的服务器实现。

最佳答案

REST 会足够快。使用它,直到您可以测量并获得一些真实数据来告诉您这是一个问题。

但我不会使用 REST API 直接与数据库打交道。

我会在两者之间添加层来管理安全性、验证和绑定(bind)、用例和错误处理、日志记录、事务等。

如果您在 Spring 中执行此操作,那么 Controller 会担心前两个,而服务会处理后两个。

是的,客户端/服务器直接连接到数据库更复杂,但您是以更多层和更多代码为代价购买您想要的东西(安全性等)。确定它对您的值(value)。

当然,速度很重要,但限制更有可能是由网络延迟设置的,而不是其他任何因素。如果客户端通过 Internet 访问,这意味着平均需要 12 个路由器跃点才能到达您的应用程序。我在公司内部网上看到 70 毫秒的往返延迟。让它成为速度的衡量标准。

至于重要的是什么,我认为社交网站应该考虑扩展到大量访问者。我知道的架构是线程池和请求队列,每个传入请求一个线程,或者像 Netty 这样的非阻塞 I/O。我认为 Python 相当于 NettyTwisted .

关于java - 社交网络架构、C++ Clients Neo4j 数据库之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5604906/

相关文章:

java - 计算手机实际行驶距离

java - 在java中按值复制数组

c++ - 为什么 visual studio 不知道整数的值正在变化? (调试)

python - 在python套接字服务器中接受多个客户端

python读取文本文件

Java反射getDeclaredMethod类检查

java - Lotus Domino Java API session 创建和取消

c++ - 基本的Windows API

c++ - 使用 QStyledItemDelegate 将鼠标悬停在文本上时如何更改鼠标指针?

Python - 基于范围的子列表选择的补充