Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java社交网络,朋友活动状态感知的有效方法_Java_Mysql_Networking_Performance_Social - Fatal编程技术网

Java社交网络,朋友活动状态感知的有效方法

Java社交网络,朋友活动状态感知的有效方法,java,mysql,networking,performance,social,Java,Mysql,Networking,Performance,Social,假设你有一个社交网站,在那里你可以有朋友,也可以查看他们的最新活动。问题是,什么是避免性能问题的最有效方法,可以立即通知他们的活动,例如在他们在线时更改个人资料,而您也同时在线 我有两种不同的方法来解决这个问题,但我不确定从数据库和Java内存的角度来看,哪一种方法是最有效的方法。以下是我的方法,如果你有更好的方法,请告诉我: 1-使用java HTTP会话侦听器获取每个用户的会话,并遍历更新。 2-每隔几秒钟检查数据库是否有新的更新,然后更新地图。首先:只有在完成测量后,您才会知道 话虽如此,

假设你有一个社交网站,在那里你可以有朋友,也可以查看他们的最新活动。问题是,什么是避免性能问题的最有效方法,可以立即通知他们的活动,例如在他们在线时更改个人资料,而您也同时在线

我有两种不同的方法来解决这个问题,但我不确定从数据库和Java内存的角度来看,哪一种方法是最有效的方法。以下是我的方法,如果你有更好的方法,请告诉我: 1-使用java HTTP会话侦听器获取每个用户的会话,并遍历更新。
2-每隔几秒钟检查数据库是否有新的更新,然后更新地图。

首先:只有在完成测量后,您才会知道

话虽如此,总有一个时空权衡。这意味着如果你在内存中存储了很多东西,速度会很快,但是你的内存占用空间很大。如果您通过DB,您将有一个很小的java空间,但速度会慢很多

所以你需要决定做什么。内存很便宜,所以把东西放进内存缓存会很好。但另一方面,你真的需要亚秒级的更新吗?或者,在检测到配置文件更新之前,是否可以将其保存20秒

NoSQL数据库上的SE广播播客中有一个很棒的插曲,它讲述了很多关于这些决策的内容:我希望是这一集


这一集关于内存网格的内容也很好:

所以,你在问你是应该使用Facebook实时更新还是Graph API。这是一种Facebook实时更新,但我所说的应用程序与Facebook无关。没错,java内存比DB快得多。在我的场景中,有两种不同的更新,一种是每隔几秒钟连接到DB以重新加载Java映射,另一种是从各种会话检索数据。真正让我担心的是,继续扩展java内存可能会被过度使用,内存不足的情况可能会发生,尤其是社交网站。我真的找不到任何关于facebook或twitter服务器集群的文章,这些文章告诉我X服务器上为X用户分配了多少内存。你正在使用的内存缓存需要一个抛出旧条目的逐出策略。这可能发生在达到某个年龄或某个计数后。您可以再次测量:测量0、1000、2000、10000个用户的应用程序大小,然后您将看到内存使用量是如何增长的,并且可以预测每个节点的用户数。无论如何,您都需要一些负载测试,这样您就可以尽早设置它并在它的帮助下进行测量。感谢Heiko,这是我想要的,但我懒得做进一步的实现。再次感谢你的回复。我对这个网站有点陌生,我试过了,但我想一个人至少要有15个声誉才能投票。一旦我获得了这么多的声誉,就不用担心了。