我们有一个JAVA应用程序,它使用postgres(单数据库和从数据库)来存储所有重要的数据。
我们现在从一个服务器设置转移到多个服务器,因此我需要做一些更改来满足新的需求。
1)用于负载平衡和分区容限的非粘性会话ids。
2)从所有web服务器访问的频繁读取数据的缓存(在内存/Memcache替代中)。
3)队列(电子邮件、SMS、要在集群上执行的任务)。通常,所有这些都必须通过xml或屏幕抓取来执行。
避免重复处理任务是很重要的,但有时会发生:-)
4) API请求和响应的持久存储( XML多,行多,列少)。(可能是通过删除旧的请求和响应来保存数据集)。
5)到共同的地方进行伐木。这张桌子还会继续增长。此外,我需要一个工具来访问生产日志而不停止它们。某种类型的搜索应该可以基于时间和或搜索字符串。
我想要一个单一的解决方案来解决所有这些要求,并将redis、mongo和hazelcast(按我个人的喜好排列)视为可能的替代方案。
其他重要的考虑因素: 1)减少对我们代码的入侵。2)简单的备份/复制策略。至少奴隶主人。3)可管理性、社区性和测试性(在生产中运行)。
哪些功能和需求能够执行全部或大部分功能?
编辑-我所做的
发布于 2012-01-09 19:46:27
我可以从MongoDB的角度来解决其中的一些问题。
我注意到的第一件事是,您将从一个服务器安装程序转移到多个服务器安装程序。MongoDB使设置、复制和分片变得非常容易。反过来,复制和分片,再加上Mongo的一些其他特性,可以帮助您完成许多您想要做的事情。
首先,先看一下文档,以了解一下:
复制集和切分
基于您的需求的其他一些想法:
希望这有帮助,干杯。
发布于 2012-01-09 20:59:35
我会说使用sql。因为你想要所有的东西,关系数据库已经完善多年了。据我所见,您需要一个数据解决方案,而不是为了“特定”目的(这正是NOSQL试图涵盖的),而是为了“全部一体”的场景。这就是SQL的用途。
如果您想从要命名的3种数据中进行选择,Mongodb将是最近的数据存储区,但请再说一遍:使用sql。
发布于 2013-05-30 12:42:03
您是正确的,Redis将解决前3项需求--非粘性会话、缓存和队列。
至于集中式日志记录,这不是一个简单的用例,而是可以在Redis上完成的,下面是一个说明如何实现的博客帖子。注意,NoSQL大师Alex对这个职位中的方法提出了一些保留意见。
至于持久性,这里是关于Redis.io of 持久化选项的概述--有一些问题,但是可行的。
https://stackoverflow.com/questions/8788270
复制相似问题