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

Posted

技术标签:

【中文标题】社交网络架构、C++ Clients Neo4j 数据库之间有啥关系?【英文标题】:Social network architecture, C++ Clients Neo4j database what between?社交网络架构、C++ Clients Neo4j 数据库之间有什么关系? 【发布时间】:2011-04-09 12:00:47 【问题描述】:

我目前正在实施一个社交网络。 架构是:

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

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

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

我比 Java 更喜欢 Python,但这里速度很重要。

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

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

【问题讨论】:

【参考方案1】:

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

但我不会使用 REST API 直接处理数据库。

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

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

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

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

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

【讨论】:

感谢您的回答。你认为我可以使用 Django,否则我会失去太多性能? 我不知道你的表现会如何,也不知道你的要求是什么。我打赌你也不会。我会说,如果您了解 Python 和 Django,您可以这样做。如果您有选择,并且您真的很担心,请尝试一些您认为最慢的用例原型并进行查看。其他一切都是猜测。 我听说过 Twisted 或 Tornado。我将不得不做一些测试,因为我认为我会被我的数据库后端阻止:neo4j,因为它还不可能分片。但我会使用 memcached 或 redis 来缓存请求。我也可能会摆脱 Django,因为服务器将充当反向代理,并且只会进行 url 重写(和安全措施)。一个完整的框架似乎很适合这个。你怎么看?

以上是关于社交网络架构、C++ Clients Neo4j 数据库之间有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j HA环境配置

2019-05-12

Neo4j中使用Louvain算法和标签传播算法(LPA)对漫威英雄进行社群分析

neo4j-简介,安装

neo4j语法

社交应用的多对多关系:Mongodb 或 Neo4j 等图形数据库