我们在单个服务器上托pipe的stream量较低的站点(每天约1千次的浏览量),并预计在未来几年内会大幅增长。
我正在考虑转移到Rackspace CloudServer或EC2并启动3个节点(全部在CentOS上):
问题是现在把Cassandra放在哪里
它应该坐在每个Web节点还是MySQL节点上?
我现在的想法是把它放在Web节点上。 我的理解是,Cassandra具有容错的好处(即,如果我们取下一个节点,则该网站仍在运行)。 因此,即使只有2个节点,我们也能获得这种好处,而不是把它放在MySQL节点上。
另外,当我们扩展并添加另一个节点时,一个cassandra实例可以和它一起,并且PHP总是可以在本地主机上运行它的查询。 这是一个好主意吗?
一种看待它的方法是确定每个应用程序消耗什么资源并在节点间平衡它们的使用。
从上面的“一个fag包的背后”我会从前提Cassandra和Apache的份额开始,单独使用MySQL,然后从这个起点挑选并修改这个方法。
需要记住的一点是,如果你运行Cassandra,你需要决定把所有东西放在JVM里面,或者根据需要增长,或者放入JNA,让行caching存在系统内存中。
现在的最佳做法是使用JNA运行,因为它还允许您在没有内存占用的情况下拍摄快照(因为JNA允许java设置硬链接),但是一旦开始在cassandra和其他应用程序之间共享非JVM系统内存,很可能无声无息地对自己开始哭泣。 如果可以,请考虑在单独的机器上运行cassandra。
但是,如果没有 – 只有在Cassandra中有多个节点,才能获得容错,并且正确计算了复制因子和读写一致性级别。 对于三节点环,如果您的主要担心是容错/数据可用性,则将复制因子设置为3,将读取和写入的一致性级别设置为1。