我目前正在研究社交网络的实施。架构是:
- 分布式 C++/Qt 客户端
- Neo4j 服务器数据库
我可以直接查询数据库,因为它有来自我的 Qt 应用程序的 REST 接口。我对这种方法不太满意,因为它不安全,并且不可能进行优化(缓存请求)。
我应该使用什么服务器/架构来管理来自客户端的请求?
我比 Java 更喜欢 Python,但这里的速度很重要。
你认为 REST 足够快还是我应该使用 RPC?
在最后一个场景中,这意味着我应该为数据库开发自己的服务器实现。
我目前正在研究社交网络的实施。架构是:
- 分布式 C++/Qt 客户端
- Neo4j 服务器数据库
我可以直接查询数据库,因为它有来自我的 Qt 应用程序的 REST 接口。我对这种方法不太满意,因为它不安全,并且不可能进行优化(缓存请求)。
我应该使用什么服务器/架构来管理来自客户端的请求?
我比 Java 更喜欢 Python,但这里的速度很重要。
你认为 REST 足够快还是我应该使用 RPC?
在最后一个场景中,这意味着我应该为数据库开发自己的服务器实现。
REST 将足够快。使用它,直到您可以测量并获得一些告诉您这是一个问题的真实数据。
但我不会使用 REST API 直接处理数据库。
我会在两者之间添加管理安全性、验证和绑定、用例和错误处理、日志记录、事务等的层。
如果您在 Spring 中执行此操作,那么控制器会担心前两个,而服务会处理后两个。
是的,客户端/服务器直接连接到数据库更复杂,但是您以更多层和更多代码为代价购买了您想要的东西(安全性等)。决定它对你有价值。
当然,速度很重要,但这个限制更有可能是由网络延迟设定的,而不是其他任何东西。如果客户端通过 Internet 访问,这意味着平均需要 12 个路由器跃点才能访问您的应用程序。我在公司 Intranet 上看到 70 毫秒的往返延迟。让它成为速度的衡量标准。
至于什么是重要的,我认为社交网站应该担心扩展到大量访问者。我知道的架构是线程池和请求队列,每个传入请求一个线程,或者像 Netty 这样的非阻塞 I/O。我认为与Netty等效的 Python是Twisted。